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:
- Computador (con el IDE de Arduino, y el driver adecuado instalados)
- Tarjeta Arduino (cualquier modelo, debe corresponder al driver instalado)
- Cable USB (según el conector de la tarjeta Arduino)
- 1 LEDs
- Cables macho-macho
- Cables hembra-hembra
- Sensor PIR
DIAGRAMA:
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
}
}