Stap 4: Sluit Lilypad met verwerking
Voordat hij vooruit naar draadloze deel, is het noodzakelijk voor verbinden van Arduino van Processing. De verwerking-code wordt verstrekt aan het einde van deze sectie. Volg de volgende stappen uit om de Arduino communiceren met verwerking.
[Testing]
Beginnen met de eerste testen door nummers van de Arduino te sturen naar Processing.
1. [Arduino] Stuur ASCII 0 ~ 255 aan serial.
VOID Setup {}
Serial.begin(9600);
}
byte i;
void loop {}
Serial.write(i++);
delay(500);
}
2. open de seriële monitor en controleren als de getallen worden weergegeven op de monitor van de seriële poort. Zorg ervoor dat u de seriële monitor dicht. Het is zeer belangrijk om te sluiten de seriële monitor post het nummer controleren om ervoor te zorgen dat fouten niet opduiken.
3. [processing] ontvangen dit nummer vormen verwerking en weergegeven op de console.
importeren van processing.serial.*;
Seriële myPort;
int val;
VOID Setup {}
grootte (200, 200);
String portName = Serial.list() [2];
myPort = nieuwe Serial (deze, portName, 9600); }
VOID draw() {}
Als (myPort.available() > 0) {}
Val = myPort.read();
println(val);
}}
a. het is belangrijk om te identificeren van het poortnummer voor de verwerking van zo begin door het nummer van de poort te controleren.
b. u ontvangt fout wanneer het poortnummer onjuist is. Verwerking code balg gebruiken om te controleren uw nummer van de poort.
importeren van processing.serial.*;
Seriële myPort;
int val;
VOID Setup {}
println(Serial.List());
}
VOID draw() {}
c. resultaat voorbeeld:
/ dev/cu. Bluetooth-Incoming-Port/dev/cu.usbmodem1421 /dev/tty. Bluetooth-Incoming-Port /dev/tty.usbmodem1421
d. Zorg er ook voor dat u gesloten seriële monitor. Zij levert één filter tegelijk.
Wanneer u het nummer van de Processing ontvangt, is het tijd voor u code toevoegen.
Beoogde resultaat:
De onderstaande code is een remixed Processing code die interactief trekt een verf variëren met de lichtwaarde die processing ontvangt. Oog op de controle tekening met de lichtsensor, moet er een bepaalde hoeveelheid licht. Als er te veel of te weinig licht zal het niet werken.
Oorspronkelijke code: http://www.openprocessing.org/sketch/132225
[Code processing]
importeren van processing.serial.*;
Seriële p;
int;
float x = willekeurige (50, 650);
float y = willekeurige (50, 650);
zweven r = random(700);
zweven b = random(700);
zweven t = 0;
zweven xspeed = 2;
zweven yspeed = 2;
zweven xspeed2 = 2;
zweven yspeed2 = -2;
zweven xspeed3 = -2;
zweven yspeed3 = -2;
zweven xspeed4 = -2;
zweven yspeed4 = 2;
VOID Setup {}
p = nieuwe Serial (dit, Serial.list() [1], 9600); Lees seriële
grootte (700, 700);
Background(255);
frameRate(60);
}
ongeldig randomImgDraw() {}
t = t + 1;
float m1=random(3);
float m2=random(3);
Fill(x/Random(4),Random(255), y/3);
strokeWeight(0.2);
Storke(200);
Als (t < = 140) {}
xspeed = xspeed + m1*random(2); grote rects
yspeed = yspeed + m2*random(2);
rect (x + xspeed, y + yspeed, 10, 10);
xspeed2 = xspeed2 + m1*random(2);
yspeed2 = yspeed2 + m2*random(-2);
rect (x + xspeed2, y + yspeed2, 10, 10);
xspeed3 = xspeed3 + m1*random(-2);
yspeed3 = yspeed3 + m2*random(-2);
rect (x + xspeed3, y + yspeed3, 10, 10);
xspeed4 = xspeed4 + m1*random(-2);
yspeed4 = yspeed4 + m2*random(2);
rect (x + xspeed4, y + yspeed4, 10, 10);
Fill(r/Random(4), random(255), b/3); middellange rects
xspeed = xspeed2 + m1 * willekeurige (-4, 4);
yspeed = yspeed2 + m2 * willekeurige (-4, 4);
rect (x + xspeed2, y + yspeed2, 5, 5);
xspeed2 = xspeed3 + m1 * willekeurige (-4, 4);
yspeed2 = yspeed3 + m2 * willekeurige (-4, 4);
rect (x + xspeed3, y + yspeed3, 5, 5);
xspeed3 = xspeed4 + m1 * willekeurige (-4, 4);
yspeed3 = yspeed4 + m2 * willekeurige (-4, 4);
rect (x + xspeed4, y + yspeed4, 5, 5);
xspeed4 = xspeed + m1 * willekeurige (-4, 4);
yspeed4 = yspeed + m2 * willekeurige (-4, 4);
rect (x + xspeed, y + yspeed, 5, 5);
vulling (x / willekeurige (4)-100, willekeurige (255)-80, y/3-80); kleine rects
xspeed = xspeed2 + m1 * willekeurige (-4, 4);
yspeed = yspeed2 + m2 * willekeurige (-4, 4);
rect (x + xspeed, y + yspeed, 2, 2);
xspeed2 = xspeed3 + m1 * willekeurige (-4, 4);
yspeed2 = yspeed3 + m2 * willekeurige (-4, 4);
rect (x + xspeed2, y + yspeed2, 2, 2);
xspeed3 = xspeed4 + m1 * willekeurige (-4, 4);
yspeed3 = yspeed4 + m2 * willekeurige (-4, 4);
rect (x + xspeed3, y + yspeed3, 2, 2);
xspeed4 = xspeed + m1 * willekeurige (-4, 4);
yspeed4 = yspeed + m2 * willekeurige (-4, 4);
rect (x + xspeed4, y + yspeed4, 2, 2);
xspeed = xspeed4 + m1 * willekeurige (-4, 4);
yspeed = yspeed4 + m2 * willekeurige (-4, 4);
rect (x + xspeed3, y + yspeed3, 2, 2);
xspeed2 = xspeed2 + m1 * willekeurige (-4, 4);
yspeed2 = yspeed2 + m2 * willekeurige (-4, 4);
rect (x + xspeed, y + yspeed, 2, 2);
xspeed3 = xspeed + m1 * willekeurige (-4, 4);
yspeed3 = yspeed + m2 * willekeurige (-4, 4);
rect (x + xspeed4, y + yspeed4, 2, 2);
xspeed4 = xspeed3 + m1 * willekeurige (-4, 4);
yspeed4 = yspeed3 + m2 * willekeurige (-4, 4);
rect (x + xspeed2, y + yspeed2, 2, 2);
vulling (r/random (4)-80, willekeurige (255)-80, b/3-80); 2de G kleine rects
xspeed = xspeed2 + m1 * willekeurige (-7, 7);
yspeed = yspeed2 + m2 * willekeurige (-7, 7);
rect (x + xspeed, y + yspeed, 2, 2);
xspeed2 = xspeed3 + m1 * willekeurige (-7, 7);
yspeed2 = yspeed3 + m2 * willekeurige (-7, 7);
rect (x + xspeed2, y + yspeed2, 2, 2);
xspeed3 = xspeed4 + m1 * willekeurige (-7, 7);
yspeed3 = yspeed4 + m2 * willekeurige (-7, 7);
rect (x + xspeed3, y + yspeed3, 2, 2);
xspeed4 = xspeed + m1 * willekeurige (-7, 7);
yspeed4 = yspeed + m2 * willekeurige (-7, 7);
rect (x + xspeed4, y + yspeed4, 2, 2);
xspeed = xspeed4 + m1 * willekeurige (-7, 7);
yspeed = yspeed4 + m2 * willekeurige (-7, 7);
rect (x + xspeed3, y + yspeed3, 2, 2);
xspeed2 = xspeed2 + m1 * willekeurige (-7, 7);
yspeed2 = yspeed2 + m2 * willekeurige (-7, 7);
rect (x + xspeed, y + yspeed, 2, 2);
xspeed3 = xspeed + m1 * willekeurige (-7, 7);
yspeed3 = yspeed + m2 * willekeurige (-7, 7);
rect (x + xspeed4, y + yspeed4, 2, 2);
xspeed4 = xspeed3 + m1 * willekeurige (-7, 7);
yspeed4 = yspeed3 + m2 * willekeurige (-7, 7);
rect (x + xspeed2, y + yspeed2, 2, 2);
}
Als (t > 140) {}
t = 0;
x = willekeurige (50, 650);
y = willekeurige (50, 650);
xspeed = 0;
yspeed = 0;
xspeed2 = 0;
yspeed2 = 0;
xspeed3 = 0;
yspeed3 = 0;
xspeed4 = 0;
yspeed4 = 0;
}
Als ((x > width) || (x<0)) {
t = 0;
}
Als ((y > height) || (y<0)) {
t = 0;
}
}
int th1 = 8 + 20;
int th2 = 180-20;
int lightValue;
VOID draw() {}
if(p.available() > 0) {}
lightValue=p.read();
println(lightValue);
}
Als (lightValue > th1 & & lightValue
Als (mousePressed & & (muisknop == links)) {}
backround(255);
}
}
[Code Arduino]
int myLed [] {A2, A3, A4} =;
int [geluid] = {523, 539, 587}; C, D, E
int lightScope [] = {30,120,200,280};
int i = 0;
int sensor = A5;
int sPin = 9;
byte val; variabele opslaan
int buzzerPin = 9;
int een = Serial.read();
VOID Setup {}
Serial.begin(9600);
voor (ik = 0; ik < 3; i ++) {}
pinMode (myLed [i], OUTPUT);
}
}
void loop {}
int sensorValue = analogRead(sensor/4);
Serial.write(sensorValue/4);
delay(100);
Als (sensorValue < 20) {/ / Tur alle de LED af, als de waarde hoger is dan 40
digitalWrite (myLed [i], laag);
}
anders als (sensorValue > lightScope [0], sensorValue < lightScope [1]) {}
lightPin (myLed [0], 100);
Toon (buzzerPin, 523, 1000);
delay(100);
Serial.println('0');
}
anders als (sensorValue > lightScope [1], sensorValue < lightScope[2]) {}
lightPin (myLed [1], 100);
Toon (buzzerPin, 587, 1000);
delay(100);
Serial.println('1');
}
anders als (sensorValue > lightScope [2], sensorValue < lightScope[3]) {}
lightPin (myLed [2], 100);
Toon (buzzerPin, 659, 1000);
delay(100);
Serial.println('2');
}
anders
{
Light();
}
}
ongeldig light() {}
voor (ik = 0; ik < 3; i ++) {}
digitalWrite (myLed [i], laag);
delay(100);
}
}
VOID lightPin (int ledPin, int ledDelay) {}
digitalWrite (ledPin, hoge);
delay(ledDelay);
digitalWrite (ledPin, laag);
delay(ledDelay);
}