lunes, 21 de octubre de 2013

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. 1 arduino mega adk
  2. joystick shield
  3. 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