I used pot, IR detector/emitter and photo resister to do the sensor and time experiment.
here is the circuit:
here is the graph:
the yellow represents: photo cell value
the red represents: IR signal
the blue represents: pot value
here is the codes:
arduino:
int an1, an2, an3 = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
an1 = analogRead(3);
delay(5);
an2 = analogRead(0);
delay(5);
an3 = analogRead(5);
Serial.print("X");
Serial.println(an1,DEC);
Serial.print("Y");
Serial.println(an2,DEC);
Serial.print("Z");
Serial.println(an3,DEC);
delay(15);
}
processing:
import processing.serial.*;
String buff = "";
int val = 0;
int NEWLINE = 10;
int xPos,yPos,zPos = 0;
int displaySize = 2;
int an1, an2, an3;
//an1 pot; an2 ir;
Serial port;
void setup(){
background(80);
size(800,600);
smooth();
port = new Serial(this, Serial.list()[1], 9600);
}
void draw(){
// new background over old
fill(80,5);
noStroke();
rect(0,0,width,height);
// wipe out a small area in front of the new data
fill(80);
rect(xPos+displaySize,0,50,height);
// check for serial, and process
while (port.available() > 0) {
serialEvent(port.read());
}
}
void serialEvent(int serial) {
print("A"); //header variable, so we know which sensor value is which
println(an1); //send as a ascii encoded number - we'll turn it back into a number at the other end
//Serial.print(10, BYTE); //terminating character
print("B"); //header variable, so we know which sensor value is which
println(an2); //send as a ascii encoded number - we'll turn it back into a number at the other end
//Serial.print(10, BYTE); //terminating character
print("C"); //header variable, so we know which sensor value is which
println(an3); //send as a ascii encoded number - we'll turn it back into a number at the other end
if(serial != '\n') {
buff += char(serial);
}
else {
int curX = buff.indexOf("X");
int curY = buff.indexOf("Y");
int curZ = buff.indexOf("Z");
if(curX >=0){
String val = buff.substring(curX+1);
an1 = Integer.parseInt(val.trim());
xPos++;
if(xPos > width) xPos = 0;
sensorTic1(xPos,an1/2);
}
if(curY >=0){
String val = buff.substring(curY+1);
an2 = Integer.parseInt(val.trim());
yPos++;
if(yPos > width) yPos = 0;
sensorTic2(yPos,an2);
}
if(curZ >=0){
String val = buff.substring(curZ+1);
an3 = Integer.parseInt(val.trim());
zPos++;
if(zPos > width) zPos = 0;
sensorTic3(zPos,an3);
}
// Clear the value of "buff"
buff = "";
}
}
void sensorTic1(int x, int y){
stroke(0,0,255);
fill(0,0,255);
ellipse(x,y,displaySize*3,displaySize*3);
}
void sensorTic2(int x, int y){
stroke(255,0,0);
fill(255,0,0);
ellipse(x,y,displaySize,displaySize);
}
void sensorTic3(int x, int y){
stroke(255,255,0);
fill(255,255,0);
ellipse(x,y,displaySize*5,displaySize*5);
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment