interactieve video met arduino en processing

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 1
Geregistreerd: 08 Mei 2018, 00:55

interactieve video met arduino en processing

Berichtdoor morphic » 08 Mei 2018, 01:11

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 :)

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: interactieve video met arduino en processing

Berichtdoor shooter » 08 Mei 2018, 19:56

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.
paul deelen
shooter@home.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten