|
|
本人小白。。。在利用processing和arduino进行通信时遇到了问题。。。
是这样,我想利用arduino的超声波传感器和processing结合,做出来一个当人靠近到一定距离时就会自动切换视频。。。但processing读取的数据和arduino的总是不一样。Serial.write(byte())已经写进去了,还是不行。。。。
ARDUINO CODE:
int inputPin = 3;
int outputPin = 2;
int inputPin1 = 9;
int outputPin1 = 8;
int distance;
int distance1;
void setup(){
Serial.begin(9600);
pinMode(inputPin,INPUT);
pinMode(outputPin,OUTPUT);
pinMode(inputPin1,INPUT);
pinMode(outputPin1,OUTPUT);
}
void loop(){
digitalWrite(outputPin,LOW);
delayMicroseconds(2);
digitalWrite(outputPin,HIGH);
delayMicroseconds(10);
digitalWrite(outputPin,LOW);
float distance = pulseIn(inputPin,HIGH);
distance = distance/58.0;
Serial.print("distance = ");
Serial.print(distance);
Serial.println("cm");
Serial.write(byte(distance));
delay(100);
}
PROCESSING CODE :
import processing.video.*;
import processing.serial.*;
Serial duankou;
Serial duankou1;
Movie mine;
Movie yours;
int data;
int data1;
void setup() {
size(1200, 960);
background(0);
noStroke();
smooth();
duankou = new Serial(this, "/dev/cu.usbmodem1411", 9600);
mine = new Movie(this, "1.mov");
yours = new Movie(this, "2.mov");
}
void draw() {
if (duankou.available()>0) {
float data=duankou.read();
println(data);
if (data <= 10) {
mine.play();
yours.stop();
image(mine, 0, 0);
}
if (data >20) {
yours.play();
mine.stop();
image(yours, 0, 0);
}
}
}
void movieEvent(Movie mine) {
mine.read();
}
|
|