COMUNICACIÓN SERIAL ASÍNCRONA ENTRE DOS TARJETAS ARDUINO
Este ejemplo básico realiza la comunicación entre un Arduino que hace de emisor y otro de receptor
En este ejemplo se emplea la función Serial.write() para enviar un numero entero que puede ser cualquier valor entre 0 a 255, es decir el dato de 1 Byte
En el receptor se declara una variable entera para almacenar el valor leído por medio de la función Serial.read() la variable de almacenamiento también puede ser de tipo char pero en este caso se tendrá en cuenta el valor equivalente en código ASCII para realizar la comparación, por ejemplo las equivalencias en las estructuras condicionales serian:
- if(Dato==48) equivale a if(Dato=='0') si Dato es de tipo char en lugar de int
En este ejemplo se debe de tener en cuenta que la lectura de datos se realiza dos veces mas rápido de lo que se hace el envío gracias a funciones de retardo realizadas tanto en el receptor como en el emisor.
Ejemplo Realizado En 123D Circuits
En este ejemplo se conectan dos tarjetas un que envía la que tiene la conexión en TX y otra que recibe la que tiene la conexión en RX.Conexión Serial Básica |
Código de Arduino que transmite:
int Dato;
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);//Led que trae incorporado la tarjeta Arduino
}
void loop(){
if (Serial.available() > 0) {//Verifica que hay datos en el buffer de recepcion
Dato = Serial.read();//Lee dato
Serial.print("Dato Recibido = ");//Muestra que dato fue leido en el Serial Monitor
Serial.println(Dato);
if(Dato==48){
digitalWrite(13,LOW);//Apaga Led
}
if(Dato==49){
digitalWrite(13,HIGH);//Enciende Led
}
delay(100);//Retardo entre lecturas de datos
}
}
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);//Led que trae incorporado la tarjeta Arduino
}
void loop(){
if (Serial.available() > 0) {//Verifica que hay datos en el buffer de recepcion
Dato = Serial.read();//Lee dato
Serial.print("Dato Recibido = ");//Muestra que dato fue leido en el Serial Monitor
Serial.println(Dato);
if(Dato==48){
digitalWrite(13,LOW);//Apaga Led
}
if(Dato==49){
digitalWrite(13,HIGH);//Enciende Led
}
delay(100);//Retardo entre lecturas de datos
}
}
Código de Arduino que recibe:
int Dato;
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);//Led que trae incorporado la tarjeta Arduino
}
void loop(){
if (Serial.available() > 0) {//Verifica que hay datos en el buffer de recepcion
Dato = Serial.read();//Lee dato
Serial.print("Dato Recibido = ");//Muestra que dato fue leido en el Serial Monitor
Serial.println(Dato);
if(Dato==48){
digitalWrite(13,LOW);//Apaga Led
}
if(Dato==49){
digitalWrite(13,HIGH);//Enciende Led
}
delay(100);//Retardo entre lecturas de datos
}
}
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);//Led que trae incorporado la tarjeta Arduino
}
void loop(){
if (Serial.available() > 0) {//Verifica que hay datos en el buffer de recepcion
Dato = Serial.read();//Lee dato
Serial.print("Dato Recibido = ");//Muestra que dato fue leido en el Serial Monitor
Serial.println(Dato);
if(Dato==48){
digitalWrite(13,LOW);//Apaga Led
}
if(Dato==49){
digitalWrite(13,HIGH);//Enciende Led
}
delay(100);//Retardo entre lecturas de datos
}
}
No hay comentarios:
Publicar un comentario