jueves, 28 de mayo de 2015

laboratorio #8

En este laboratorio se manipulara en la pantalla de un computador un objeto gráfico usando processing leyendo los datos en Arduino mega desde un joystick shield

Lista de componentes

placa arduino uno o mega
cables varios
joystick

Montaje














montaje en protoboard

diagrama en fritzing


codigo arduino

 //laboratorio 8
int pinarr=4; //pines a utilizar
int pinaba=5;
int pinizq=6;
int pinder=3;
int po=A0;
int pa=A1;

void setup()
{
//se inicia la comunicacion serial
//y se asignan el modo de los pines
Serial.begin(9600);
pinMode(pinarr, INPUT);
pinMode(pinaba, INPUT);
pinMode(pinizq, INPUT);
pinMode(pinder, INPUT);
pinMode(po, INPUT);
pinMode(pa, INPUT);

}
int x;
int y;
void loop()
{
 x=analogRead(po);
y=analogRead(pa);


if (y>1022){
Serial.println("arriba");

}
if (y<1){
Serial.println("abajo");

}
if (x>1022){
Serial.println("der");

}
if (x<1){
Serial.println("izq");

}
delay(200);


}

codigo processing

import controlP5.*;
import processing.serial.*;

PImage img;
int iW2, iH2;
int posX, posY;
int velocity, angle;
 Serial serial;
 String val;
void setup() {
   serial = new Serial(this, Serial.list()[0], 9600);
  // tamaño de la ventana
  size(800, 600);
  // carga la imagen en la variable
  img = loadImage("spaceship.gif");
  iW2 = img.width/2;
  iH2 = img.height/2;
  posX = (width/2)-iW2;
  posY = (height/2)-iH2;
  velocity = -5;
  angle = 0;
}

void draw() {
  // limpia la ventana
  background(0);
  posX += velocity * sin(radians(angle));
  if (posX-iW2 < 0) posX = width;
  if (posX-iW2 > width) posX = iW2;
  posY += velocity * cos(radians(angle));
  if (posY-iH2 < 0) posY = height;
  if (posY-iH2 > height) posY = iH2;
  // dibuja la imagen
  pushMatrix();
  translate(posX-iW2, posY-iH2);
  rotate(radians(-angle));
  image(img, -iW2, -iH2);
  popMatrix();
  Cambio();
}
/*
void keyPressed() {
  if (key == CODED) {
    if (keyCode == UP)
      velocity -= 5;  
    if (keyCode == DOWN)
      velocity += 5;
    if (keyCode == LEFT)
      angle += 5;  
    if (keyCode == RIGHT)
      angle -= 5;
  }  
}*/

void Cambio(){
 if ( serial.available() > 0)
  {  // If data is available,
  val = serial.readString()+"";         // read it and store it in val

  }

println(val); //print it out in the console
if(val==null){val="0";}
if(val.indexOf("arriba")>=0){
        velocity -= 5;  
val="";
}
if(val.indexOf("abajo")>=0){
      velocity += 5;
val="";
}
if(val.indexOf("izq")>=0){
      angle += 5;  
val="";
}
if(val.indexOf("der")>=0){
      angle -= 5;
val="";
}


}

vídeo del laboratorio








No hay comentarios.:

Publicar un comentario