DESCRIPCIÓN:
Utilizando Processing, manipular en la pantalla del computador una figura animada, a partir de los datos leídos desde el Arduino y un Joystick shield.
MATERIALES:
PROCESO DE MONTAJE
- Disponer de todos loa materiales para el laboratorio.
- seguimos con el montaje del Joystick shield en el arduino.
VENTA DEL PROCESSING
CÓDIGO ARDUINO
- char button0=3, button1=4, button2=5, button3=6;void setup(void)
{pinMode(button0, INPUT); //Set the Joystick button 0 as an input
digitalWrite(button0, HIGH); //Enable the pull-up resistor on button 0pinMode(button3, INPUT); //Set the Joystick button 3 as an input
digitalWrite(button3, HIGH); //Enable the pull-up resistor on button 3Serial.begin(9600); //Turn on the Serial Port at 9600 bps
}void loop(void)
{//envia datos a Processing, dependiendo de la accion realizada en el joystickShield
if(analogRead(1)>800)
{
Serial.print(1);
}
else if(analogRead(1)<200)
{
Serial.print(2);
}if(analogRead(0)>800)
{
Serial.print(3);
}
else if(analogRead(0)<200)
{
Serial.print(4);
}if(digitalRead(button0)==0)
{
Serial.print(5);
}if(digitalRead(button3)==0)
{
Serial.print(6);
}//Wait for 100 ms, then go back to the beginning of ‘loop’ and repeat.
delay(100);
}CÓDIGO PROCESSING
- import processing.serial.*;
int x=550;
int y=450;//el punto centro de la pantalla
int grados=0;//inicio de grados en el que se encuentra el triangulo
Serial port;//puerto por el que vamos a recibir los datos
int valor = 0;
//int valor2=550;
void setup()
{
//println(Serial.list());
port = new Serial(this, Serial.list()[0], 9600);
//new Serial(this, COM[5], 9600);
size(1000,600);//tamaño de la ventana
frameRate(100);// especifica el numero de fotogramas que muestra por segundo
smooth();//suavizar
fill(25,90,40);//color del triangulo ROJO
}
void draw ()
{
while (port.available() > 0)
{
String cadena =”00″+port.readString(); //Lectura de datos desde arduino
valor = int(cadena.substring(2,cadena.length()));
println(cadena + “:” + valor);
}
background (0,0,0);//color de fondo
pushMatrix();//entrada a la pila de matriz
translate(x, y);//trasladamos el triagulo en pantalla con respecto a su estado
rotate(radians(grados));//rotamos el triangulo el numero de grados indicado
triangle(0, 40, -30, -40, 30, -40);//pintar el triangulo
popMatrix();//restaura la pila de matriz
//Condiciones que dependen del los valores recibidos desde arduino (movimientos de joystick)
if (valor == 1)
{
valor=0;
y-=10;
if (y<10) y=30;
}
if (valor == 2)
{
valor=0;
y+=10;
if (y>400) y=400;
}
if (valor == 3)
{
valor=0;
x+=10;
if (x>400) x=400;
}
if (valor == 4)
{
valor=0;
x-=10;
if (x<10) x=30;
}
if (valor == 5)
{
valor=0;
grados+=5;
if (grados>360) grados=0;
}
if (valor == 6)
{
valor=0;
grados-=5;
if (grados<0) grados=360;
}
}