jueves, 26 de noviembre de 2015

PROYECTO FINAL

DESCRIPCIÓN:


Tendremos un sensor PIR el cual será graficado en Processing y cada que sienta movimiento este ira aumentando, si no, se detendrá.

El movimiento será visto por medio de un LED el cual ira conectado al pin 13 de prueba que tiene el Arduino, el cual no necesita resistencia.


MATERIALES DEL LABORATORIO: 

  1. Computador (con el IDE de Arduino, y el driver adecuado instalados)
  2. Tarjeta Arduino (cualquier modelo, debe corresponder al driver instalado)
  3. Cable USB (según el conector de la tarjeta Arduino)
  4. 1 LEDs
  5. Cables macho-macho
  6. Cables hembra-hembra
  7. Sensor PIR


DIAGRAMA:



ESQUEMATICO:






PBC:








FOTOS MONTAJE:









VIDEO:  







CODIGO:


Arduino:
//____________ Laboratorio FINAL ___________//
// * Universidad Santiago de Cali
// * James Sanchez Bejarano
// * Felipe Garcia
// * Laboratorio Final: Tendremos un sensor PIR el cual será graficado en Processing
// * por medio de un LED y cuando sienta movimiento este ira aumentando, si no, se detendrá.
//


//____________ Variables ___________//

//Pines en los que se conectara el Sensor(A0), y el led(13).
 byte sensorpir = A0;
 byte led = 13;


//____________ Procesos ___________//

void setup()
{  
  
 //Se notifica que el sensor esta de entrada y la salida la da el LED.
 pinMode(sensorpir,INPUT);
 pinMode(led,OUTPUT);
 Serial.begin(9600);
}

void loop()
{
  
  //Se lee la entrada, y se le envia la variable del sensor para activarlo al movimiento.
  if(digitalRead(sensorpir) == HIGH){
    
    //Enviamos señal al Monitor para testear si funciona.
    Serial.println("Detectado movimiento por el sensor pir");

    digitalWrite(led,HIGH);
    delay(1000);
    digitalWrite(led,LOW);
    
    // Le enviamos un valor al Pin A0:
   Serial.println(analogRead(A0));
   
  }
  }
  
  
Processing:
//____________ Laboratorio Final ___________//
// * Universidad Santiago de Cali
// * James Sanchez Bejarano
// * Felipe Garcia
// * Laboratorio Final: Tendremos un sensor PIR el cual será graficado en Processing
// * por medio de un LED y cuando sienta movimiento este ira aumentando, si no, se detendrá.
//
//____________ Variables ___________//

//Comunicacion con Arduino
 import processing.serial.*;

//Se crea las variables para manejar el puerto y la posicion del grafico
  Serial myPort;     
  int xPos = 1;  


int xlogo=400;//Posición X de la imagen
int ylogo=50;//Posición Y de la imagen

//Variables para mover el logo
int rquad=40; //Radio del quadrado
int xquad=200;  //Posición X de rect
int yquad=200;  //Posición Y de rect
boolean overRect = false; //Estado del mouse si está encima de rect o no


//____________ Procesos ___________//


  void setup () {
    
  // Tamaño de la ventana
  size(800, 600);

  // Lista de puertos seriales disponibles, para verlos usar Serial.printArray()
  println(Serial.list());

  // Si sabes que el puerto es el primero, el Arduino sera el Serial.list()[0]. Si no otro.
  myPort = new Serial(this, Serial.list()[0], 9600);

  // Para no generar un serialEvent() :
  myPort.bufferUntil('\n');

  // El color de fondo
  background(0);
  }


  void draw () {

  //Asignatura de trabajo final
   text("TRABAJO FINAL: Programacion en embebidos",250,110);
    
 //Visualizamos los nombres con un texto
   text("James Sanchez",300,140);
   text("Felipe Garcia",300,155);

//Definicion
   text("GRAFICO PARA SENSOR DE MOVIMIENTO",250,190);
   

  //Ponemos la imagen de nuestro logo
  imageMode(CENTER);//Esta función hace que las coordenadas de la imagne sean el centro de esta y no la esquina izquierda arriba
  PImage imagen=loadImage("USC.png");
  image(imagen,xlogo,ylogo,200,100);
  
//Para mover el logo
if(mouseX > xquad-rquad && mouseX < xquad+rquad &&  //Si el mouse se encuentra dentro de rect
     mouseY > yquad-rquad && mouseY < yquad+rquad)
     {
       overRect=true;  //Variable que demuestra que el mouse esta dentro de rect
       stroke(255,0,0);  //Contorno de rect rojo
     }
   else
   {
     overRect=false;  //Si el mouse no está dentro de rect, la variable pasa a ser falsa
     stroke(0,0,0);  //Contorno de rect negro
   }
   

}

// Para hacer y mover el grafico
  void serialEvent (Serial myPort) {
  // get the ASCII string:
  String inString = myPort.readStringUntil('\n');

  if (inString != null) {
  // trim off any whitespace:
  inString = trim(inString);
  // convert to an int and map to the screen height:
  float inByte = float(inString);
  inByte = map(inByte, 0, 1023, 0, height);

  // draw the line:
  stroke(127,34,255);
  line(xPos, height, xPos, height - inByte);

  // at the edge of the screen, go back to the beginning:
  if (xPos >= width) {
  xPos = 0;
  background(0);
  }
  else {
  // increment the horizontal position:
  xPos++;
  }
  }
  }
  
  
  //Metodo para mover el logo
void keyPressed() //Cuando se pulsa una tecla
{
  if(key=='w'||key=='W')
  {
      ylogo--; //El logo se deplaza hacia arriba
  }
  else if(key=='s'||key=='S')
  {
        ylogo++; //El logo se deplaza hacia abajo
  }
  else if(key=='a'||key=='A')
  {
        xlogo--; //El logo se desplaza hacia la izquierda
  }
  else if(key=='d'||key=='D')
  {
        xlogo++; //El logo se desplaca hacia la derecha
  }
  //Pulsar la tecla E para salir del programa
  if(key=='e' || key=='E')
  {
    exit();//Salimos del programa
  }
  }
  




No hay comentarios:

Publicar un comentario