Stap 4: Verwerking gebruik te maken van de grafiek
Verwerking:
Als u geen verwerking gebruikt voordat u de software van downloaden kunt www.processing.org. Verwerking is zeer zoals arduino maar zijn uitgangen zijn gebaseerd in plaats van hardware op basis van afbeeldingen. De verwerking zal duren de informatie die wij hebben afgedrukt op serial(9600) en gebruiken om een grafiek worden uitgezet.
Onze schets kan ziet er heel ingewikkeld, maar het laat de schets voor het lezen van meerdere dorstige Plant ingangen en alle de grafieken op één pagina plaatsen. Lees door om te zien hoe het werkt.
importeren van processing.serial.*;
Seriële myPort;
DelimiterBetweenMultipleValues koord = "|";
DelimiterBetweenLabelAndValue koord = ":";
int numserialreads = 0;
int graphStartX = 100;
int textPadding = 2;
int circleDiameter = 3;
String [] valuePairs;
Boole drawPoint = false;
Boole drawCircle = waar;
Booleaanse drawLine = true;
int xPos = graphStartX; horizontale positie van de grafiek
int partH; gedeeltelijke schermhoogte
int valmin = 0; Minimumwaarde van grafiek
int valmax = 600; Maximale waarde van de grafiek
VOID Setup
{
size(1366, 700); aan te passen aan de schermgrootte van uw
println(Serial.List()); Krijg seriële Setup
myPort = nieuwe Serial (dit, Serial.list() [0], 9600); Open seriële poort op 9600
myPort.clear(); Legen van de Buffer
myPort.bufferUntil('\n'); Niet het genereren van een serialEvent() tenzij u een newline karakter:
achtergrond (170, 219, 207); Eerste achtergrondkleur
textSize(42); Tekstgrootte
vulling (237, 61, 138); Kleur van de doopvont
}
VOID draw()
{
Alles gebeurt in de serialEvent()
}
ongeldig keyPressed() //This zal laten vernieuwen het scherm toen hij de "n raakte" sleutel
{
Als (sleutel == 'n') {}
xPos = 0;
achtergrond (170, 219, 207); Doekjes scherm met turquoise achtergrond
}
}
VOID serialEvent (seriële myPort)
{
InString koord = myPort.readStringUntil('\n'); ASCII-tekenreeks ophalen:
Als (inString! = null) {}
numserialreads ++;
inString = trim(inString); Trim uit alle witruimte
println(inString); De binnenkomende gegevens tekenreeks weergeven
Als (numserialreads < 20) //Reset alles
{
println("INITIALIZING");
terugkeer;
}
Als (numserialreads == 20) //Reset alles
{
xPos = 0; Terug naar 0 positie
achtergrond (170 219, 207, 255); Scherm wissen en turkooizen achtergrond weergeven
}
valuePairs = split (inString, delimiterBetweenMultipleValues); binnenkomende tekenreeks opgesplitst in paren van labelwaarde/en op te slaan in een array.
int totalinputs = valuePairs.length;
partH = hoogte / totalinputs; Scherm opsplitsen door aantal sensoren
for (int j = 0; j
{
String [] paar;
paar = split (valuePairs [j], delimiterBetweenLabelAndValue);
Tekenreeks label;
Label = paar [0];
tekst (label, 10, partH*(j+1) -10);
pair[1]=Trim(pair[1]);
int-waarde = int(pair[1]);
waarde = int (kaart (waarde, valmin, valmax, 0, partH)); De waarde hebt toegewezen aan de variabele gedeeltelijke hoogten
Als (j == 0) {}
beroerte (245, 230, 86);
}
Als (j == 1) {}
beroerte (241, 90, 49);
}
Als (j == 2) {}
beroerte (0, 173, 181);
}
lijn (xPos, partH*(j+1), xPos, partH*(j+1) - waarde); grafiek van de waarde
Stroke(255); verdelen van de kleur van de lijn
lijn (0, partH*(j+1), breedte, partH*(j+1));
}
Als (xPos > = breedte)
{
xPos = 0;
achtergrond (170 219, 207, 255); Scherm wissen en turkooizen achtergrond weergeven
} else
{
xPos ++; _ / / verhogen de horizontale positie van de grafiek
}
}
}
VOID exit() {}
myPort.stop();
}