Arduino och bearbetning¶
I lektionen kommer vi att lära oss hur en Arduino låt oss prata med Processing.
Detta görs i två steg:
- Arduino måste prata med din dator
- Bearbetning måste göra något med detta föredrag
Få Arduino att prata¶
Vi kommer att få Arduino att säga vad som står är från en potentiometer.
Så här ansluter du potentiometern:
Dessa är kopplingarna:
5V
: stiftet på fem volt måste gå till ena sidan av potentiometernGND
: jorden måste flytta till andra sidan av potentiometernA0
: beroende på potentiometerns position kommer det att finnas noll till fem volt påA0
Detta är koden för din Arduino:
void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop()
{
Serial.write(analogRead(A0) / 4);
delay(10);
}
Meningen "prata med datorn" är inte längre tillräckligt exakt. Bättre att säga att Arduino skickar karaktärer via seriekabeln (i det här fallet: via din USB-kabel).
Detta är vad koden gör:
void setup() {}
:setup
-funktionen är en funktion som görs en gång vid uppstart. Det som händer är mellan hängslenSerial.begin(9600)
: Arduino skickar 9600 tecken per sekund genom seriekabelnvoid loop() {}
:loop
-funktionen är en funktion som körs hela tiden efter uppstart. Det som händer är mellan hängslenSerial.write(analogRead(A0) / 4)
: Jag gör detta i bitar:Serial.write()
: skicka ett tecken till seriekabelnanalogRead(A0)
: mäter spänningen på stiftA0
. En spänning på 5 volt blir siffran1023
analogRead(A0) / 4
: Mät spänningen på stiftA0
och dividera den med fyra. En spänning på 5 volt blir ett nummer "255", detta är ett praktiskt nummer att använda i bearbetningSerial.write(analogRead(A0) / 4)
: mät spänningen på stiftetA0
, dividera den med fyra och skicka den siffran genom seriekabeln
delay(10)
: vänta tio millisekunder
Uppgifter¶
- Stäng flödesschemat som bilden
- Sätt koden på din Arduino
- Kör koden och klicka på knappen
Serial Monitor
längst upp till höger. Vad ser du? Se till att Arduino skickar initialen till ditt förnamn - Om du inte ser något, kontrollera om numret längst ner till höger på den seriella monitorn är inställt på
9600
!
Får bearbetning att lyssna¶
Om du inte har Processing ännu, ladda ner den här!
Detta är koden för bearbetning:
import processing.serial.*;
Serial port;
int x = 0;
void setup()
{
size(1000, 256);
println(Serial.list());
port = new Serial(this, Serial.list()[0], 9600);
background(255, 255, 255);
}
void draw()
{
while(port.available() > 0) {
final int y = port.read();
point(x, y);
++x;
if (x > 1000) x = 0;
}
}
Bearbetning läser vad som kommer in på serieporten.
Detta är vad koden gör:
import processing.serial.*;
: hämta all kod som behövs för att prata med en seriell portSerial port
: skapa en ny seriell port och kalla denport
void setup(){}
:setup
-funktionen är en funktion som görs en gång vid uppstart. Vad som händer är mellan de lockiga parentesernasize(500, 500);
: skapa en skärm med en storlek på 500 gånger 500 pixlarprintln(Serial.list());
: skriver ut en lista över alla seriella portar till konsolen (den svarta delen längst ner i bearbetningsmiljön)port = new Serial(this, Serial.list()[0], 9600);
: Jag gör detta i bitar:port = new Serial()
: görport
till en ny seriell port...detta,
: ...används i den här filen...Serial.list()[0],
: ...och den första på listan över serieportar är (vanligtvis är detta Arduino, annars måste du ändra siffran0
)...9600
: och tar emot 9600 tecken per sekundvoid draw() {}
:draw
-funktionen är en funktion som görs hela tiden efter start. Vad som händer är mellan de lockiga parentesernawhile(port.available() > 0) {}
: gör det som står inom parentes endast när något kommer in på serieportenint number
: skapa ett heltal som heternumber
= port.read();
: skapanummer
det som kommer in på serieportenbackground(number);
: läsnumber
som en grå nyans och gör det till bakgrundsfärgen. Vid 0 är bakgrunden svart, vid 255 är den vit
Uppgifter¶
- Lägg koden i Processing
- Kör din kod genom att trycka på play-knappen längst upp till vänster
- Vrid potentiometern, vad ser du?
- Vad skulle hända om du inte delade
analogRead(A0)
med fyra i Arduino-koden? Försök!