Un PIN de acceso en el monitor serie

Crea un control de acceso que concede o niega el paso según el PIN que escribes en el monitor serie.

Qué vas a construir

Un sistema de acceso: escribes un PIN en el monitor serie. Si es correcto, se enciende un LED verde. Si no, se enciende un LED rojo.

Lo que aprendes

  • Qué es la autenticación: comprobar que quien intenta entrar sabe el secreto.
  • Cómo leer texto del monitor serie con Serial.readStringUntil.
  • Por qué guardar un PIN escrito en el código es un riesgo (lo corregiremos en Contraseñas con hash).

Idea clave

La autenticación compara lo que te dan con lo que el sistema tiene guardado. Si coinciden, se concede el acceso. Este sistema guarda el PIN directamente en el código, así que cualquiera que vea el programa lo conoce. Es un primer paso, no una solución final.

Materiales en Tinkercad

  • Arduino Uno R3
  • 2 LED (verde y rojo) y 2 resistencias de 220 Ω
  • Monitor serie de Tinkercad (botón Monitor serie)

Paso 1: Conexión

  • LED verde: pin 8 → resistencia → LED → GND.
  • LED rojo: pin 9 → resistencia → LED → GND.

Paso 2: Código

const String PIN_CORRECTO = "4821";
const int LED_OK = 8;
const int LED_ERROR = 9;

void setup() {
  Serial.begin(9600);
  pinMode(LED_OK, OUTPUT);
  pinMode(LED_ERROR, OUTPUT);
  Serial.println("Escribe el PIN y pulsa Enter:");
}

void loop() {
  if (Serial.available()) {
    String intento = Serial.readStringUntil('\n');
    intento.trim();

    if (intento == PIN_CORRECTO) {
      digitalWrite(LED_OK, HIGH);
      Serial.println("Acceso concedido");
    } else {
      digitalWrite(LED_ERROR, HIGH);
      Serial.println("Acceso denegado");
    }

    delay(2000);
    digitalWrite(LED_OK, LOW);
    digitalWrite(LED_ERROR, LOW);
  }
}

Paso 3: Prueba

  1. Escribe 1234 y pulsa Enter. Debe encender el LED rojo.
  2. Escribe 4821 y pulsa Enter. Debe encender el LED verde.
  3. Escribe 4821 (con un espacio al final). ¿Te deja entrar? ¿Por qué? (Pista: mira trim().)

Cómo sabes que lo lograste

  • Un PIN incorrecto enciende el LED rojo.
  • El PIN correcto enciende el LED verde.
  • Explicas por qué trim() ayuda.
  • Puedes decir por qué el PIN en el código es un riesgo.

Qué salió mal

Ningún LED se enciende. Revisa que el monitor serie esté abierto y que la velocidad sea 9600 baudios. Si escribes y pulsas Enter, el texto debe aparecer en el monitor.

Siempre entra o siempre niega. Revisa que PIN_CORRECTO tenga las mismas cifras que escribes.

Siguiente clase

En la siguiente clase vas a ver por qué un PIN corto es débil y cómo limitar los intentos.