Como es habitual cuando estamos aprendiendo un lenguaje de programación, compilamos nuestro primer programa como un “Hola mundo”, en esta ocasión para que Arduino me salude hice parapadear un Led. No publico su código porque está en la documentación de Arduino. Ahora voy a presentaros alguna de las funciones que me acompañarán a lo largo del proyecto, estas son las funciones para utilizar el puerto serie.
En primer lugar Arduino requiere unos requisitos necesarios, una instalación para empezar a recibir/enviar información codificada en ASCII. Esta instalación no es más que indicar el número de puerto de comunicaciones que estamos utilizando y la velocidad de transferencia en baudios (enlace). Esta instalación se hace utilizando la función Serial.begin(velocidad de transferencia en baudios).
Enviando por puerto serie
Para enviar, después de haber preparado todo para la comunicación sólo tenemos que utilizar las funciones Serial.print(VAR), para enviar por puerto serie lo que se encuentre en la variable VAR.
Aquí un ejemplo básico:
int interruptor = 0; // inturruptor conectado al pin 0
//Instalacion
void setup() {
pinMode(interruptor, INPUT); // pin 0 como entrada
Serial.begin(9600); // empieza la comunicacion a 9600bps
}
void loop() {
if(digitalRead(interruptor) == HIGH) // si el interruptor esta ON
{
Serial.print(1); // envia 1
}else{
Serial.print(0); // en otro caso envia 0
}
delay(100); // espera 100ms
}
Este programa enviará 1 si el interruptor esta cerrado y 0 si el interruptor está cerrado.
Recibiendo por puerto serie
Para recibir, al igual que con cualquier operación que requiera el uso del puerto serie, después de iniciar la comunicación tendremos todo listo para usarlo. Ya sólo tenemos que utilizar la función Serial.read() para leer el puerto.
Aquí un ejemplo básico:
int ledpin = 1;
//Instalacion
void setup() {
pinMode(ledpin, OUTPUT); // pin como salida
Serial.begin(9600); // empieza la comunicacion a 9600bps
}
void loop() {
char val;
if( Serial.available() ) // si la informacion esta lista para leer
{
val = Serial.read(); // leerla y guardarla en 'val'
}
if( val == 'A' ) // si 'A' es recibido
{
digitalWrite(ledpin, HIGH); // enciende el led
} else {
digitalWrite(ledpin, LOW); // en otro caso apagala
}
delay(100); // espera 100ms
}
Este programa lee el puerto serie y si recibe una A, encenderá el led en otro caso lo apagará.
Para descargar los programas aquí:
http://forja.rediris.es/frs/download.php/1091/enviandoPuertoSerie.pde
http://forja.rediris.es/frs/download.php/1092/recibiendoPuertoSerie.pde