interactieve video met arduino en processing
2 berichten
• Pagina 1 van 1
interactieve video met arduino en processing
Hallo allemaal,
Momenteel ben ik voor mijn afstudeerproject aan de kunstacademie bezig om een interactieve video installatie te ontwikkelen.
Hiervoor maak ik gebruik van een arduino en een PIR sensor die gekoppeld zijn aan processing, waar random videobeelden in worden getriggered. Ik ben al een heel eind, arduino leest netjes de activatie van de sensor, en geeft deze door aan processing. Enkel gebeurd er niets in het videobeeld wanneer de sensor wordt getriggered, terwijl mijn string uit de arduino code wel wordt uitgelezen.
Zet ik de code om de video te triggeren binnen processing in een keypressed functie, dan werkt alles wel. Ergens zit dus nog een probleem. Heeft iemand hier een idee hoe ik mijn code zou moeten aanpassen zodat het wel werkt?
Ik ben echt een beginner, dus wellicht dat mijn code niet helemaal is hoe het hoort.
Hier de code:
ARDUINO:
int ledPin = 13; // choose the pin for the LED
int inputPin = 9; // 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.write("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:
import processing.video.*;
import processing.serial.Serial;
Serial myPort;
static final int PORT_INDEX = 0, BAUDS = 9600;
String myString;
String[]vid = {"0.mov", "1.mov", "1.mov", "3.mov", "4.mov"};
int vidNum = 0;
Movie movie;
void setup() {
println("Available serial ports");
println(Serial.list());
myPort =
new Serial(this, Serial.list()[3],9600);
size(1280, 720);
movie = new Movie(this, vid[vidNum]);
movie.loop();
final String[] ports = Serial.list();
printArray(ports);
new Serial(this, ports[PORT_INDEX], BAUDS).bufferUntil(ENTER);
}
void movieEvent(Movie m) {
m.read();
redraw = true;
}
void draw() {
image(movie, 0, 0 );
}
void serialEvent(final Serial s) {
myString = s.readString().trim();
if (myString.equals("Motion detected!")) {
movie.stop();
//create random numbers from 0 to the amount of videos imported
vidNum = (int)random(vid.length);
// switch video to the number randomly generated
movie = new Movie(this, vid[vidNum]);
movie.loop();
}
println(myString);
}
Naar mijn idee zit er ergens een probleem in de serialevent. Ik hoop dat iemand hier me verder kan helpen
Momenteel ben ik voor mijn afstudeerproject aan de kunstacademie bezig om een interactieve video installatie te ontwikkelen.
Hiervoor maak ik gebruik van een arduino en een PIR sensor die gekoppeld zijn aan processing, waar random videobeelden in worden getriggered. Ik ben al een heel eind, arduino leest netjes de activatie van de sensor, en geeft deze door aan processing. Enkel gebeurd er niets in het videobeeld wanneer de sensor wordt getriggered, terwijl mijn string uit de arduino code wel wordt uitgelezen.
Zet ik de code om de video te triggeren binnen processing in een keypressed functie, dan werkt alles wel. Ergens zit dus nog een probleem. Heeft iemand hier een idee hoe ik mijn code zou moeten aanpassen zodat het wel werkt?
Ik ben echt een beginner, dus wellicht dat mijn code niet helemaal is hoe het hoort.
Hier de code:
ARDUINO:
int ledPin = 13; // choose the pin for the LED
int inputPin = 9; // 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.write("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:
import processing.video.*;
import processing.serial.Serial;
Serial myPort;
static final int PORT_INDEX = 0, BAUDS = 9600;
String myString;
String[]vid = {"0.mov", "1.mov", "1.mov", "3.mov", "4.mov"};
int vidNum = 0;
Movie movie;
void setup() {
println("Available serial ports");
println(Serial.list());
myPort =
new Serial(this, Serial.list()[3],9600);
size(1280, 720);
movie = new Movie(this, vid[vidNum]);
movie.loop();
final String[] ports = Serial.list();
printArray(ports);
new Serial(this, ports[PORT_INDEX], BAUDS).bufferUntil(ENTER);
}
void movieEvent(Movie m) {
m.read();
redraw = true;
}
void draw() {
image(movie, 0, 0 );
}
void serialEvent(final Serial s) {
myString = s.readString().trim();
if (myString.equals("Motion detected!")) {
movie.stop();
//create random numbers from 0 to the amount of videos imported
vidNum = (int)random(vid.length);
// switch video to the number randomly generated
movie = new Movie(this, vid[vidNum]);
movie.loop();
}
println(myString);
}
Naar mijn idee zit er ergens een probleem in de serialevent. Ik hoop dat iemand hier me verder kan helpen
Advertisement
Re: interactieve video met arduino en processing
typefout in moviearray, en ik snap size niet helemaal
de string die jij binnen krijgt is waarschijnlijk niet compleet. kijk maar eens wat je binnenkrijgt.
de string die jij binnen krijgt is waarschijnlijk niet compleet. kijk maar eens wat je binnenkrijgt.
paul deelen
shooter@home.nl
shooter@home.nl
2 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 33 gasten