Arduino lectura y comprobación en serie.
Estoy tratando de aprender algunas cosas sobre la lectura serial de Arduino desde un dispositivo Bluetooth. Este es el código que encontré en todas partes:
int incomingByte = 0; // para datos seriales entrantes
void setup() {
Serial.begin(9600); // abre el puerto serial, establece la velocidad de datos en 9600 bps
}
void loop() {
// envía datos solo cuando recibes datos:
if (Serial.available() > 0) {
// lee el byte entrante:
incomingByte = Serial.read();
// muestra lo que obtuviste:
Serial.print("Recibí: ");
Serial.println(incomingByte);
}
}
Cuando envío la palabra “word” desde mi Bluetooth móvil, obtengo 4 líneas:
Recibí: w
Recibí: o
Recibí: r
Recibí: d
lo cual está bien… Pero aquí está mi pregunta:
Quiero verificar los caracteres recibidos tan pronto como lleguen a la entrada serial, por lo tanto, si uno de ellos es el carácter “r”, me gustaría que se imprima una línea adicional en el Monitor Serial, algo como: “¡wow, eso fue una r!”
Entonces, agrego una declaración if después del println(incomingByte) y ahora mi código se ve así:
Serial.print("Recibí: ");
Serial.println(incomingByte);
if (incomingByte == 'r') {
Serial.println("¡wow, eso fue una r!");
}
Ese código nunca funciona, es como si no hubiera una “r” en absoluto. ¿Alguien podría explicarme?
Gracias
davy.ai
Solución
El problema aquí está en la declaración de comparación en la instrucción “if”. La variable
incomingByte
es un entero y el carácter ‘r’ es un carácter entre comillas simples, no una cadena entre comillas dobles. Por lo tanto, la declaración de comparación correcta debería ser:c++
if (incomingByte == 'r') {
Serial.println("¡guau, eso fue una r!");
}
Al utilizar comillas simples alrededor del carácter ‘r’, la comparación se realiza correctamente y se imprimirá una línea adicional en el Monitor en Serie cuando se reciba el carácter ‘r’.