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.
Desafío
IntermedioEl 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);
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Entradas
3Entrada serial
Leer un carácter serialComandos de palabrasVelocidad de parpadeo desde SerialParpadear con un comandoPractica por tu cuenta: Playground de Arduino