ENVÍO A ARDUINO DE CADENAS DE CARACTERES POR EL PUERTO SERIE
ENVIO A ARDUINO DE
CADENAS DE CARACTERES POR EL PUERTO SERIE
A través del monitor serie
del IDE podemos controlar mediante el envío de mensajes de texto cualquier
sensor o actuador que tengamos conectado a una tarjeta Arduino.
Supongamos un actuador como
es un LED y como ejemplo podemos hacer que si desde el monitor serie le
enviamos un 1 se encienda el LED y
si le enviamos un 0, se apague. Con
este programa lo hacemos:
//Variables
const int LED = 7;
char mensaje; //Variable
mensaje que almacena el carácter entrante
void setup()
{
Serial.begin (9600);
pinMode(LED, OUTPUT);
}
void loop()
{
//Solo actúa cuando hay datos
disponibles en el buffer
if (Serial.available() > 0) //Lee
cualquier byte de datos > 0
{
mensaje = Serial.read(); //Lee el byte
de datos
//Enciende el LED
if (mensaje == '1')
{
digitalWrite(LED, HIGH);
Serial.println("LED ON");
}
//Apaga el LED
else if (mensaje == '0')
{
digitalWrite(LED, LOW);
Serial.println("LED OFF");
}
}
}
Viendo el monitor serie
comprobamos que se imprime correctamente el mensaje en el monitor serie:
El problema surge cuando el
mensaje que le queremos enviar a la placa Arduino para que encienda o apague el
LED no es un 1 o un 0 como en el ejemplo, sino por ejemplo
una frase como Enciende el LED y Apaga el LED.
La librería SoftwareSerial de Arduino que es con la
que trabaja por defecto, no permite mensajes de más de un carácter.
He visto que hay alguna
solución publicada para este problema pero son complejas, sin embargo la que
propongo en este artículo es muy sencilla y está al alcance de todos: Trabajar
con la librería SoftwareSerial de BQ, la BitbloqSoftwareSerial.
Esta librería la utiliza BQ para programar con Bitbloq y permite enviar mensajes de
texto. Le podemos decir que encienda el LED cuando reciba el mensaje Buenos días ya he llegado.
DESCARGAR E INSTALAR LA LIBRERÍA BitbloqSoftwareSerial
Para descargar esta librería
tienes que acceder a esta URL que es donde se encuentran las librerías de BQ
Para instalar cualquiera de
ellas, pulsar la tecla CLONE or DOWNLOAD de la página y posteriormente te
permite abrirlas en el escritorio o descargar el ZIP con todas las librerías.
Una vez descargadas cada
librería está contenida en un directorio y a su vez cada uno de ellos contiene
los ejemplos de la librería y los ficheros .cpp y .h.
Por ejemplo, en el caso de la
BitbloqSoftwareSerial :
Una vez que ya tenemos los
ficheros de la librería, la instalamos en el IDE de Arduino. Para ello tenemos
2 opciones:
·
Cargar la librería (Ejemplos y ficheros .cpp y .h) en el
directorio en el que Arduino tiene sus librerías:
Documentos/Arduino/Librerias
·
Cargarla desde el IDE de Arduino:
Programa/Incluir Libreria/Añadir librería
ZIP
Una vez que ya tenemos
instalada la librería BitbloqSoftwareSerial
vamos a decirle a la placa Arduino
UNO mediante el monitor serie que cuando reciba el mensaje Encender el LED, lo encienda y además
imprima en la pantalla del monitor serie
El LED esta encendido y que cuando reciba el mensaje Apagar el LED, lo apague y además imprima el mensaje El LED esta apagado.
Lo vamos a hacer con el
siguiente código:
/*** Included libraries ***/
#include
<SoftwareSerial.h>
#include
<BitbloqSoftwareSerial.h>
/*** Global variables and
function definition ***/
const int led_0 = 7;
bqSoftwareSerial
puerto_serie_0(0, 1, 19200);
String mensaje =
puerto_serie_0.readString();
/*** Setup
***/
void setup() {
pinMode(led_0, OUTPUT);
Serial.begin(19200);
}
/*** Loop
***/
void loop() {
mensaje = puerto_serie_0.readString();
if (mensaje == "Encender el LED")
{
digitalWrite(led_0, HIGH);
Serial.println("El LED esta
encendido");
} else if (mensaje == "Apagar el
LED") {
digitalWrite(led_0, LOW);
Serial.println("El LED esta
apagado");
}
}
Como se ve en el monitor
serie imprime correctamente los mensajes:
Comentarios
Publicar un comentario
Tu opinión es muy importante. Gracias por comentar.