Serial Event

 19 julio 2024

Aavril Hitzel Díaz Ramírez

Jose Jair Galicia Corona

Dania Cortes Domínguez

Introducción

La función de Arduino serialEvent te permite recibir datos seriales de una forma parecida a una interrupción o de forma asíncrona. Entonces está función sólo se ejecuta si existen datos seriales en el buffer del puerto serial. La función de Arduino Serial Read se usa para leer a estos datos seriales. Es importante mencionar que esta función no es asíncrona propiamente, sino que es ejecutada en cada iteración de la función loop. Por lo tanto si la función loop demora mucho, así será la demora de la recepción de los datos seriales.

Serial Event

Este ejemplo demuestra el uso de la función serialEvent(). Esta función se llama automáticamente al final del bucle() cuando hay datos en serie disponibles en el búfer. En este caso, cada carácter encontrado se agrega a una cadena hasta que se encuentra una nueva línea. Luego, la cadena se imprime y se vuelve a establecer en nula.

Materiales:

  • Arduino

Circuito dado por la página de Arduino.

Código

String inputString = "";      // a String to hold incoming data

bool stringComplete = false;  // whether the string is complete
void setup() {
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
}
void loop() {
  // print the string when a newline arrives:
  if (stringComplete) {
    Serial.println(inputString);
    // clear the string:
    inputString = "";
    stringComplete = false;
  }
}

/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

Simulación en tinkercad

Debido a la versión del simulador, no se logra visualizar el mensaje que se envía en el monitor serie, entonces se deja como tal pero la conexión se mantiene, es decir, un error oasionado al momento de agregar al código.

Circuito en físico



Conclusión

El puerto serie es un componente fundamental de muchos proyectos de Arduino y es uno de los elementos básicos que se deben aprender para aprovechar todo el potencial de Arduino. Gracias al puerto serie, se pueden encender o apagar dispositivos desde una página web a través de Internet o desde una aplicación móvil a través de Bluetooth, entre otras muchas funciones.



Comentarios

Entradas más populares de este blog

Serial Call Response

Dimmer