Gör din egen törstig växt graf! (4 / 5 steg)
Steg 4: Använda bearbetning för att göra grafen
Bearbetning:
Om du inte har använt bearbetning innan du kan ladda ner programvaran från www.processing.org. Behandlingen är mycket lik arduino men dess resultat är bilden i stället för hårdvarubaserad. Behandlingen tar den information vi har tryckt till serial(9600) och använda den för att rita en kurva.
Vår skiss kan se ganska komplicerat men det gör skissen att läsa flera törstig växt ingångar och placera alla diagrammen på en sida. Läs igenom den för att se hur det fungerar.
import processing.serial.*;
Seriella myPort;
String delimiterBetweenMultipleValues = "|";
String delimiterBetweenLabelAndValue = ":";
int numserialreads = 0;
int graphStartX = 100;
int textPadding = 2;
int circleDiameter = 3;
String [] valuePairs;
booleska drawPoint = false;
booleska drawCircle = sant;
booleska drawLine = sant;
int xPos = graphStartX; horisontellt läge av grafen
int Harald; partiell skärmhöjd
int valmin = 0; Minimivärdet för diagram
int valmax = 600; Högsta värdet av grafen
void setup()
{
size(1366, 700); anpassa sig till skärmens storlek
println(Serial.list()); Få följetong Setup
myPort = ny följetong (denna, Serial.list() [0], 9600); Öppna serieporten på 9600
myPort.clear(); Töm bufferten
myPort.bufferUntil('\n'); Inte generera ett serialEvent() om du inte får ett radmatningstecken:
bakgrund (170, 219, 207); Ursprungliga bakgrundsfärg
textSize(42); Textstorlek
fyllning (237, 61, 138); Teckensnittsfärg för
}
void draw()
{
Allt händer i serialEvent()
}
void keyPressed() //This låt oss uppdaterar skärmen när han träffar på "n" nyckel
{
om (nyckel == 'n') {
xPos = 0;
bakgrund (170, 219, 207); Våtservetter skärmen med turkos bakgrund
}
}
void serialEvent (Serial myPort)
{
InString sträng = myPort.readStringUntil('\n'); Får ASCII-sträng:
om (inString! = null) {
numserialreads ++;
inString = trim(inString); Trimma bort några blanksteg
println(inString); Visa inkommande data strängen
om (numserialreads < 20) //Reset allt
{
println("INITIALIZING");
hemkomst.
}
om (numserialreads == 20) //Reset allt
{
xPos = 0; Återgå till 0 läge
bakgrund (170, 219, 207, 255); Rensa skärmen och visar turkos bakgrund
}
valuePairs = split (inString, delimiterBetweenMultipleValues); Dela upp inkommande sträng i etikett/värde-par och förvara i en matris.
int totalinputs = valuePairs.length;
Harald = höjd / totalinputs; Dela skärmen upp av antal sensorer
för (int j = 0; j
{
String [] par;
par = dela (valuePairs [j], delimiterBetweenLabelAndValue);
Sträng etikett;
etikett = par [0];
text (etikett, 10, partH*(j+1) -10);
pair[1]=trim(pair[1]);
int värde = int(pair[1]);
värde = int (karta (värde, valmin, valmax, 0, Harald)); Karta värde till variabel partiell höjder
om (j == 0) {
stroke (245, 230, 86);
}
om (j == 1) {
stroke (241, 90, 49);
}
om (j == 2) {
stroke (0, 173, 181);
}
linje (xPos, partH*(j+1), xPos, partH*(j+1) - värde); grafisk figur dess värde
stroke(255); avdelande linje färg
linje (0, partH*(j+1), bredd, partH*(j+1));
}
om (xPos > = bredd)
{
xPos = 0;
bakgrund (170, 219, 207, 255); Rensa skärmen och visar turkos bakgrund
} annat
{
xPos ++; öka grafens horisontella position
}
}
}
void exit() {
myPort.stop();
}