0% encontró este documento útil (0 votos)
12 vistas2 páginas

Arduino SerialEvent

MANEJO DE INTERRUPCIONES SIMULADAS

Cargado por

Juan Araujo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas2 páginas

Arduino SerialEvent

MANEJO DE INTERRUPCIONES SIMULADAS

Cargado por

Juan Araujo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Arduino serialEvent – recepción serial

asíncrona
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. Esta función no es compatible con el Arduino Esplora, Leonardo y
Micro.

Sintaxis de la función de Arduino serialEvent


La sintaxis de la función de Arduino serialEvent sólo requiere definir a
la función void serialEvent() después de la función loop. Entonces
dentro de esta función se puede agregar las instrucciones para la
lectura de los datos seriales mediante el seria. read. El propósito de
esta función es ejecutarse al inicio de cada iteración para la función
loop. Esto se realizará hasta encontrar un carácter del código ascii que
nos permita saber si ya se termino la transmisión. Para dicho evento,
normalmente se utilizan a los caracteres \n o \r.

Código de Ejemplo para la función de Arduino


serialEvent
El siguiente código de ejemplo, permite la recepción de caracteres numéricos
y su posterior conversión a una variable entera. Recordemos que el puerto
serial esta «transportando» bytes en forma de caracteres en código ascii.
Entonces, una vez que hemos terminado de recibir una línea que contenga
exclusivamente numeros ascii, se procede a convertirlo a una variable
entera, (int) mediante la función de Arduino atoi.
String cadenaCharEntrada = "";
char vectorChar[20];
bool finCadena = false;

void setup() {
Serial.begin(115200);
cadenaCharEntrada.reserve(20);
}

void loop() {
if(finCadena){ //Se termino de recibir una cadena completa
finCadena = false; //Permitimos volver a recibir otra cadena
cadenaCharEntrada.toCharArray(vectorChar,20); //Convertimos el string a un vectorChar
int numeroEntero = atoi(vectorChar); //Convertimos un vectorChar a un entero
Serial.print("Se recibio ");
Serial.println(numeroEntero);
cadenaCharEntrada = "";

}
}

void serialEvent(){
//Recepción de datos Seriales

while (Serial.available()) { //Si existen datos seriales, leer a todos


char CaracterEntrada = Serial.read(); //Leer 1 byte serial recibido

cadenaCharEntrada += CaracterEntrada; //Agregar el nuevo char a una cadena String


if (CaracterEntrada == '\n') {//Si el char o byte recibido es un fin de linea, activa la bandera
finCadena = true; //Si la bandera finCadena = 1, entonces la transmision esta completa
}

También podría gustarte