I lektionen kommer vi att lära oss hur en Arduino låt oss prata med Processing.
Detta görs i två steg:
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å stift A0
. En spänning på 5 volt blir siffran 1023
analogRead(A0) / 4
: Mät spänningen på stift A0
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å stiftet A0
, dividera den med fyra och skicka den siffran genom seriekabelndelay(10)
: vänta tio millisekunderSerial Monitor
längst upp till höger. Vad ser du? Se till att Arduino skickar initialen till ditt förnamn9600
!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 den port
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ör port
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 siffran 0
)…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 heter number
= port.read();
: skapa nummer
det som kommer in på serieportenbackground(number);
: läs number
som en grå nyans och gör det till bakgrundsfärgen. Vid 0 är bakgrunden svart, vid 255 är den vitanalogRead(A0)
med fyra i Arduino-koden? Försök!