Adruino baserad elektrostatiska fältet Mill (14 / 14 steg)
Steg 14: Arduino programvara
Här är skissen jag skrev som läser rotation av rotorn och samlar en läsning från A0 på varje rotation.
Du kan behöva justera detta för din Arduino
Det kommer ut mätningar till seriell utgång för visning som rådata eller bearbetas med en grafritande program.
Ive också med en enkel grafritande display app skriven i "Behandling" på en PC
---Arduino mega skiss---
int pin = 7.
flyktiga int state = låg;
int tt = 0;
void setup()
{
Serial.BEGIN(9600);
pinMode (pin, utgång);
attachInterrupt (2, blinka, förändring);
}
void loop()
{
Serial.println(TT);
digitalWrite (pin, statligt);
}
void blink()
{
tt=(analogRead(a0)-200);
State =! statligt;
}
---Processing skiss---
import processing.serial.*;
Seriella myPort; Den seriella porten
int xPos = 1; horisontellt läge av grafen
Ogiltiga inställningar () {
Ange fönstrets storlek:
size(1024, 480);
Lista över alla tillgängliga seriella portar
println(Serial.list());
Jag vet att den första porten i listan följetong på min mac
är alltid min Arduino, så jag öppnar Serial.list() [0].
Öppna oavsett port är den du använder.
myPort = ny följetong (denna, Serial.list() [1], 9600);
inte generera ett serialEvent() om du inte får ett radmatningstecken:
myPort.bufferUntil('\n');
Ange inledande bakgrund:
Background(0);
}
void Rita () {
allt händer i serialEvent()
}
void serialEvent (Serial myPort) {
få den ASCII-strängen:
InString sträng = myPort.readStringUntil('\n');
om (inString! = null) {
rensa bort alla blanksteg:
inString = trim(inString);
konvertera till en int och karta till skärmhöjd:
flyta inByte = float(inString);
inByte = karta (inByte, 0, 1000, 0, höjd);
Rita linjen:
stroke(255,255,255);
linje (xPos, höjd, xPos, höjd - inByte-20);
textSize(32);
text (inByte, 10, 30);
vid kanten av skärmen, gå tillbaka till början:
om (xPos > = bredd) {
xPos = 0;
Background(0);
}
annat {
öka den vågräta positionen:
xPos ++;
}
}
}