Se usa un sistema de 2 ultrasonidos para darle play a 2 videos diferentes cuando la persona se para al frente del alguno. para este es necesario 2 ultrasonidos, 1 Arduino, jumpers, programa de Arduino y programa de processing

Para este proyecto es importante tener 3 videos el cual iran cambiando a medida que los ultrasonidos detectan algo, “video 1” esta en constante loop, para cuando los ultrasonidos no detecten a nadie, el ultrasonido 1 inicia el “video 2” y el ultrasonido 2 inicia el “video 3”.

Es importante dentro de pressing tener la librería para videos como extensión adicional.

Código de Arduino

const int trig = 12;
const int echo = 11;

const int trig2 = 8;
const int echo2 = 7;

float distancia;
float tiempo;

float distancia2;
float tiempo2;

String datos;

void setup() {
  //sensor1
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);

  //sensor2
  pinMode(trig2, OUTPUT);
  pinMode(echo2, INPUT);
  
  Serial.begin(115200);

}
void loop() {
  //sensor1
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  //Tomar el tiempo hasta que regresa la onda
  tiempo = pulseIn(echo, HIGH);
  distancia = 0.017*tiempo;
  


  //sensor2 
  digitalWrite(trig2,HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2,LOW);
  //Tomar el tiempo hasta que regrese la onda
  tiempo2 = pulseIn(echo2, HIGH);
  distancia2 = 0.017*tiempo2;


  datos = "";
  datos += distancia;
  datos += ",";
  datos += distancia2;

  Serial.println(distancia);


 delay(900);
     
    
}

Código de processing

Deben guardar dentro de la carpeta “data” los 3 videos que van a ejecutar en formato mp4, como también deben instalar la librería sound ( The Processing fundation) y Video: GStreamer-based video librero for Processing (The Processing Fundation)

también deben tener en cuenta que deben remplazar por el puerto que esta conectado el arduino, este dato lo arroja directamente el software de arduino

 import processing.video.*;
import processing.serial.*;

Serial port;  //Crea un objeto de clase serial
float valores[] = {101,40}; // variable que almacena lo del puerto serial
Movie myMovie1;
Movie myMovie2;
Movie myMovie3;


void setup() {
  size(1280,920);
  //fullScreen();
  frameRate(30);
  smooth();
  
  myMovie1 = new Movie(this, "pp1.mp4");
  myMovie1.loop();
  
  myMovie2 = new Movie(this, "pp2.mp4");
  myMovie2.play();
  
  myMovie3 = new Movie(this, "pp3.mp4");
  myMovie3.loop();
  
  //se inicializa el puerto por donde recibiremos la informacion
  port = new Serial(this, "COM3",115200); // cambiar puerto si es necesario
  port.bufferUntil('\n');
  
}

void draw() {
   background(0);
    
  //esto sirve para voltear el video
   translate(width/2, height/2);
   //rotate(radians(-90));
   
    if(valores[0] < 100 && valores[0] > 38){
        myMovie1.stop();
        myMovie2.play();
        myMovie3.stop();
        image(myMovie2, -1025, -530, 1920,1080);
    }else{
        if(valores[0] > 100  && valores[0] > 38){
           myMovie1.play();
           myMovie2.stop();
           myMovie3.stop();
           image(myMovie1, -1025, -530, 1920,1080);
       }
       if(valores[0] < 30 ){
            myMovie1.stop();
            myMovie2.stop();
            myMovie3.play();
            image(myMovie3, -1025, -530, 1920,1080);
        }
    }
    
   println("valores[0]");
   println(valores[0]);
   println(" ");
   
//pueden activarlo y desactivarlo 
   //println("valores[1]");
   //println(valores[1]);
   //println(" ");
   
   
   
}

void serialEvent(Serial p){
  String dato = p.readStringUntil('\n'); // leemos el buffer del puerto serie
  
  if(dato != null){
    dato = trim(dato); 
    valores = float(split(dato, ',')); 
  }
}

// Llamado cada vez que un nuevo cuadro está disponible para leer
void movieEvent(Movie m) {
  m.read();
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

You may also like