LABORATORIO 13

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:

-Hardware Arduino UNO
-Hardware JoystickShield (para Arduino)

PROCESO DE MONTAJE

  • Disponer de todos loa materiales para el laboratorio.

 IMG_1071[1]

  • seguimos con el montaje  del Joystick shield en el arduino.

IMG_1072[1]

IMG_1077[1]

VENTA DEL PROCESSING

Captura

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 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()[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;
}

}

VÍDEO DEL FUNCIONAMIENTO

Leave a comment