Processing och Arduino kan kommunicera med varandra via serial porten. T.ex. kan Arduino-mikrokontrollern avläsa en sensor och skicka värden till Processing som använder dessa värden för att bestämma radien hos en cirkel, eller…
… vinkeln hos en liksidig triangel
… färgen på texten
…hastigheten hos ett videoklipp mm.
Tänker vi andra vägen så kan man i Processing använda musen för att ställa positionen hos en servo som är kopplad till Arduino eller använd tangentbordet för att bestämma vilken lysdiod som är på mm.
- Vrid på en potentiometer för att bestämma cirkelns diameter.
Fritzing layout
Processing koden
import processing.serial.*; int a; // deklarera heltal a float b; // deklarera decimaltal b Serial myPort; // Skapa serial objektet vid namnet myPort void setup() { size(displayWidth,displayHeight); // fönsterstorlek frameRate(30); // frames per second, default = 60 printArray(Serial.list()); // skriv ut listan på tillgängliga serial portar myPort = new Serial(this, Serial.list()[2], 9600); // tilldela objektet rätt port } void draw() { background(255); // while (myPort.available() > 0) // om det finns något i porten { a = myPort.read(); // läs serialporten och tilldela variabeln a det lästa värdet (byte 0-255) b = map(a,0,255,0,500); // skala om värdet och tilldela variabeln b det nya värdet (0-500) } println(a); // för felsökningsändamål println(b); // för felsökningsändamål fill(0); // fyll ellipsen ellipse(mouseX, mouseY, b, b); // ellipsens position och storlek }
Arduino koden
int x; // deklarera variabeln x int y; // deklarera variabeln y void setup() { Serial.begin(9600); // Starta serial kommunikationen med 9600 bps } void loop() { x = analogRead(A0); // läs A0 (0-1024) y = map(x, 0, 1024, 0, 255); // skala om värden till intervallet 0-255 Serial.write(y); // Skriv ut en byte (0-255) till serial porten delay(5); // vänta 5 ms }