es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  ,

Answer

  1. Avatar for 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’.

Comments are closed.