Menu
CoddyTech

Velocidad de parpadeo desde Serial

Parte de la sección Entradas del Journey de Arduino de Coddy. Lección 17 de 22.

Escribe 250 y la placa recibe tres caracteres, '2', '5' y '0', después el salto de línea. Serial.parseInt() lee los dígitos y los convierte en el número 250, deteniéndose en el primer carácter que no sea un dígito.

Tiene un inconveniente: cuando no llega ningún dígito, parseInt() espera hasta 1 segundo a que llegue uno y luego devuelve 0. Eso ocurre después de cada número que escribes: el salto de línea que terminó el número sigue esperando, así que Serial.available() vuelve a ser mayor que 0, y parseInt() no encuentra ningún dígito, espera un segundo y devuelve 0.

Así que trata un 0 como «nada útil» y conserva el valor anterior:

if (Serial.available() > 0) {
  int n = Serial.parseInt();
  if (n > 0) {
    wait = n;
  }
}

Verás que el LED se pausa durante un segundo después de cada número que escribes: es parseInt() esperando.

challenge icon

Desafío

Intermedio

El LED del pin 13 parpadea: permanece encendido durante wait ms y apagado durante wait ms, con wait comenzando en 500. Deja que el monitor serie cambie la velocidad:

  • cuando haya caracteres esperando, lee un número con Serial.parseInt()
  • si es mayor que 0, guárdalo en wait

Pulsa Run, envía 100 desde el monitor serie y después pulsa Check.

Pruébalo tú mismo

const int ledPin = 13;

int wait = 500;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // cuando haya caracteres en espera, lee un número y guárdalo en wait (si es mayor que 0)
  digitalWrite(ledPin, HIGH);
  delay(wait);
  digitalWrite(ledPin, LOW);
  delay(wait);
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Entradas

Practica por tu cuenta: Playground de Arduino