Laboratorios Sistemas Embebidos
jueves, 9 de mayo de 2013
Laboratorio 13
El objetivo de este laboratorio es
manipular en pantalla una figura animada creada con Processing, a partir de los datos leídos desde el Arduino y un
Joystick shield
.
Herramientas:
-1 computador
-software "arduino"
-software processing
-Hardware Arduino UNO
-Hardware JoystickShield (para Arduino)
- Imagenes del Montaje
- Código Arduino
//Create variables for each button on the Joystick Shield to assign the pin numbers 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 0 pinMode(button3, INPUT); //Set the Joystick button 3 as an input digitalWrite(button3, HIGH); //Enable the pull-up resistor on button 3 Serial.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()[1], 9600); //new Serial(this, COM[5], 9600); size(1100,1100);//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; } }
- Vídeo del Funcionamiento
No hay comentarios:
Publicar un comentario
Entrada más reciente
Entrada antigua
Inicio
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario