Utilizaremos el puerto serie para comunicar Processing con Arduino. Para ver cómo funciona conectaremos 3 ledes a Arduino y mediante un programa en Processing haremos que se enciendan los ledes de forma secuencial uno tras otro con un segundo de diferencia y luego se apaguen todos a la vez.
Programa de Arduino: En este programas leemos el buffer del puerto según se vaya llenando y dependiendo de si es una 'a', un '1', un '2' o un '3' encendemos el led correspondiente.
int valor='a'; //variable para cargar el buffer del Serial
void setup() {
pinMode(2,OUTPUT);
//declaramos salidas a los tres pines
pinMode(3,OUTPUT);
//donde están conectados los ledes
pinMode(4,OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()>0){ //Si el puerto tienen algo en el buffer
valor=Serial.read(); //leemos el
puerto serie y lo cargamos en valor.
if (valor=='1'){
digitalWrite(2,HIGH); //dependiendo de lo que se lea se
} //enciende un led u otro
if (valor=='2'){
digitalWrite(3,HIGH);
}
if (valor=='3'){
digitalWrite(4,HIGH);
}
if (valor=='a'){ // cuando lee 'a' se apagan todos.
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
}
}
Programa de Processing: Con este programa enviaremos la información al puerto serie para que sea leida por Arduino. Aqui controlaremos los tiempos.
import processing.serial.*; //importamos la librería para trabajar con el puerto serie
int m=0; //en esta variable almacenaremos el tiempo transcurrido desde el inicio
int n=0; //en esta variable almacenaremos la secuencia de tiempo en la que cambian los ledes
Serial puerto; //declaramos una variable de la clase Serial
void setup() {
puerto = new Serial(this, "COM3", 9600); //configuramos el puerto de conexión.
}
void draw() {
m=millis();
n=(m % 4000); //Vamos dividiendo el tiempo en fracciones de 1 segundo. Como son 4 segundos
// nos quedamos con el resto de dividir el tiempo por 4000 ms.
if (n<1000) {
puerto.write('a'); //Lanzamos una 'a' para apagar todos los Ledes
} else if (n<2000) {
puerto.write('1');//Lanzamos una 1 para encender el Led amarillo
} else if (n<3000) {
puerto.write('2');//Lanzamos una 1 para encender el Led verde
}else if (n<4000) {
puerto.write('2');//Lanzamos una 1 para encender el Led rojo
}
}
No hay comentarios:
Publicar un comentario