Processing sketch working great, which i can play video from hdd and PIR motion sensor detect my motion but actually i want to trigger video or Processing sketch from with PIR motion sensor. I also tested motion sensor with Arduino led pins, it’s flashing when PIR sensor detect motion.
How can I connect this two sketch each other and i can play any video file with motion sensor in Processing.
Thank you!
ARDUINO
/*
PIR sensor tester
*/
int ledPin = 13; // choose the pin for the LED
int inputPin = 3; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
}
void loop() {
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, HIGH); // turn LED ON
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
if (pirState == HIGH) {
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}```
PROCESSING
/**
* Efficient Serial Reading (v1.01)
* GoToLoop (2016-Jan-19)
*
* forum.Processing.org/two/discussion/14534/
* myport-available-always-0#Item_1
*
* forum.Processing.org/two/discussion/16618/
* processing-with-arduino-void-serialevent#Item_5
*/
import processing.video.*;
import processing.serial.Serial;
static final int PORT_INDEX = 0, BAUDS = 9600;
String myString;
Movie video;
void setup() {
size(640,480);
video = new Movie(this,"render.mp4");
video.loop();
//noLoop();
final String[] ports = Serial.list();
printArray(ports);
new Serial(this, ports[PORT_INDEX], BAUDS).bufferUntil(ENTER);
}
void draw() {
background(0);
image(video,0,0);
println(myString);
}
void serialEvent(final Serial s) {
myString = s.readString().trim();
redraw = true;
if (myString.equals("Motion detected!")) {
video.stop();
}
}
void movieEvent(Movie video) {
video.read();
}```
Yes Finally figured it out. It’s all working great except delay time. Processing takes about 5 second to start up the video. Now i am trying to minimize delay time. Any idea what might be cause that issue?
Actually I will reconsider not using stop(). I havent used the video lib lately. Is there a pause() function? The idea is that you load your resources in setup and they are loaded only once in your program. I am assuming you are only loading a single file.
If you are playing a single video, and if pause is not available, then what you could do is not show the image in draw() when you want to simulate a pause state/“no motion detected” case.
Yes only one video file, Unfortunately i haven’t had chance to play with the sketch. As you guess I am quite new with Processing and sorry if my questions doesn’t make sense.
Is there any tutorial or article about creating class in processing. I want to play Processing sketch instead of playing video file.
Check this site: https://happycoding.io/tutorials/ It has a great intro to Processing, Java and other technologies. You can also check the Processing foundation’s website as they have tutorials and examples. My favorite recommendation is to open the Processing IDE and dive right into the examples and find something that you like and try to understand it.
@kud7 I am working on something similar but your code is a little confusing. Do you have an updated version you could post? Much appreciated if you are able to!