LABORATORIO NUMERO 13
En este laboratorio se usara el joystick shield producido por sparkfun para controlar el movimiento de posición y rotación de una imagen diseñada por procesing, todo esto se hará por medio del sistema embebido arduino mega, el cual captara las señales de joystick y las enviara al computador para queasi se pueda mover el gráfico en la pantalla de ilustración
MATERIALES
- 1 arduino mega adk
- joystick shield
- 1 computador
DIAGRAMAS
DIAGRAMA DE MONTAJE EN PROTOBOARD
.
DIAGRAMA ESQUEMÁTICO
DIAGRAMA PARA MONTAJE EN TARJETA PERFORADA
FOTOS
foto1
foto2
CÓDIGO ARDUINO
#include <stdint.h>
#include <TFTv2.h>
#include <SPI.h>
#define fotocelda A8
int valor=0;
void setup() {
Serial.begin(9600);
TFT_BL_ON; // turn on the background light
Tft.TFTinit(); // init TFT library
// set up the LCD's number of columns and rows:
pinMode(fotocelda, INPUT);
}
void loop(){
valor = analogRead(fotocelda);
int luminosidad = map(valor, 0, 1023, 0, 100);
Serial.print("luminosidad:");
Serial.println(luminosidad);
delay(100);
Tft.drawString("luminosidad:",0,180,3,CYAN);
Tft.drawNumber(luminosidad,20,220,3,WHITE);
delay(100);
Tft.fillRectangle(20,220, 60,65,BLACK);
//delay(100);
Tft.drawNumber(luminosidad,20,220,3,WHITE);
Tft.drawString("porciento",80,220,2,CYAN);
delay(150);
}
CÓDIGO PROCESING
import processing.serial.*;
int x=550;
int y=450;
int grados=0;
Serial port;
int valor = 0;
//int valor2=550;
void setup()
{
port = new Serial(this, Serial.list()[0], 9600);
size(800,600);
frameRate(100);
smooth();
fill(255,255,255);
}
void draw ()
{
while (port.available() > 0)
{
String cadena ="00"+port.readString();
valor = int(cadena.substring(2,cadena.length()));
println(cadena + ":" + valor);
}
background (0,0,0);
pushMatrix();
translate(x, y);
rotate(radians(grados));
triangle(0, 50, -20, -50, 20, -50);
popMatrix();
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;
}
}
No hay comentarios:
Publicar un comentario