In meinem Projekt geht es darum, dass ich einen Processing Sketch habe, in dem 16 Videos abgespielt werden. Diese sollen je nach Abstand abgespielt werden. Ich verwende dazu einen HC - SR05 Ultraschallsensor. Der Sketch in Arduino IDE funktioniert soweit und mir wird im Serial Monitor eine Distanz angezeigt.
Ich verstehe nur einfach nicht wie ich die beiden Sketch jetzt miteinander verbinden kann, das der Processing Sketch, mit der Distanz des Ultraschalsensors arbeitet. (Derzeit habe ich noch die key pressed Funktion drin, um das ganze zu simulieren - der Code in Processing funktioniert auch einwandfrei)
Anbei beide Codes
(beim Processing Sketch fehlt die Klasse aber das ist für dieses Thema unrelevant)
Danke schon mal
Arduino IDE Code
const int TRIG_PIN = 12;
const int ECHO_PIN = 13;
void setup()
{
// initialize serial communication:
Serial.begin(9600);
pinMode(TRIG_PIN,OUTPUT);
pinMode(ECHO_PIN,INPUT);
}
void loop()
{
long duration, distanceCm, distanceIn;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN,HIGH);
// convert the time into a distance
distanceCm = duration / 29.1 / 2 ;
distanceIn = duration / 74 / 2;
if (distanceCm <= 0)
{
Serial.println("Out of range");
}
else
{
Serial.print(distanceIn);
Serial.print("in: ");
Serial.print(distanceCm);
Serial.print("cm");
Serial.println();
}
delay(1000);
}
Processing Code
import processing.video.*;
VideoBox videoBox0;
VideoBox videoBox1;
VideoBox videoBox2;
float user_distance = 5;
ArrayList<VideoBox> videoBoxes = new ArrayList<VideoBox>();
int numberVideoBoxes =16;
float nbRows = 4;
float nbCols = 4;
float wVideoBox;
float hVideoBox;
int[] video_distance = { 10, 20, 30, 40,
50, 60, 70, 80,
40, 30, 20, 10,
60, 40, 30, 20
};
// in centimeter
void setup() {
size(720, 576
);
//fullScreen();
int w = 100;
int h = 100;
wVideoBox = width/4;
hVideoBox = height/4;
for (int i=0; i<numberVideoBoxes; i++) {
VideoBox v = new VideoBox(this, "panic_" + i + ".mov");
float xPos = i%nbCols * wVideoBox;
float yPos = floor(i/nbCols) * hVideoBox;
println(xPos, yPos);
v.setup(i, xPos, yPos, wVideoBox, hVideoBox, video_distance[i]);
videoBoxes.add(v);
}
void keyPressed() {
if (key == CODED) {
if (keyCode == UP) {
user_distance = user_distance + 10;
} else if (keyCode == DOWN) {
user_distance = user_distance - 10;
}
}
}
void draw() {
background(0);
for (int i=0; i<numberVideoBoxes; i++) {
VideoBox videoBox = videoBoxes.get(i);
videoBox.checkDistance(user_distance);
videoBox.display();
}
void movieEvent(Movie m) {
m.read();
}