Hola a todos, reciban mis cordiales saludos.
Hace poco estuve realizando unas pruebas de comunicación serial en Arduino y realice el siguiente código:
#include <LiquidCrystal.h>
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);
int LED = 13;
int dato;
void setup() {
lcd.begin(16, 2);
lcd.print("Arduino Mega");
Serial.begin(115200);
pinMode(LED, OUTPUT);
delay(3000); // Un retardo cualquiera
}
// El lazo de control:
void loop() {
lcd.clear();
lcd.print((char)dato); // aquí supuestamente se visualizaría el último dato leído.
delay(1000); // durante un segundo.
}
// Se produce cada vez que hay un nuevo dato en el Hardware Serial
void serialEvent() {
if(Serial.available()>0) {
digitalWrite(LED, 1); // esto es opcional
dato = Serial.read(); // lee y devuelve el dato recibido
Serial.write(dato);
digitalWrite(LED, 0); // esto es opcional
}
}
Bueno haciendo uso del monitor serial, previamente configurado sin ajuste de línea (sólo para ver los datos de forma consecutiva) cada vez que ingreso un dato a la vez, "aparentemente" todo funciona muy bien.
Sin embargo cuando ingreso más de un dato como por ejemplo: 12345, me ocurre lo siguiente:
- El led RX de la placa se ilumina una sola vez, indicándome que todos los datos fueron enviados.
- El led TX de la placa se ilumina cada un segundo, devolviéndome al monitor serial número por número cada un segundo.
Alguien me podría explicar porque sucede esto ?
Saludos a todos y Gracias.