Wir können viel Code aus dem ersten Programm zum Ansprechen der Seriellen Schnittstelle kopieren:
import grafica.*;
import processing.serial.*;
GPlot plot;
Serial serial;
int startZeit;
int sekunden() {
return hour()*3600+minute()*60+second();
}
void setup() {
printArray(Serial.list());
String port=Serial.list()[0];
serial=new Serial(this, port, 9600);
size(500, 350);
background(0, 0, 0);
plot=new GPlot(this, 25, 25);
plot.setTitleText("Temperaturmessung");
plot.getXAxis().setAxisLabelText("Zeit in Sekunden");
plot.getYAxis().setAxisLabelText("Temp. in °C");
plot.setXLim(0, 100);
plot.setYLim(-30, 110);
plot.defaultDraw();
startZeit=sekunden();
}
void draw() {
while (serial.available()>0) {
String input=serial.readStringUntil(10);
if (input!=null) {
float wert=float(input);
int x=sekunden()-startZeit;
plot.addPoint(x, wert);
plot.defaultDraw();
}
}
}
Das Attribut aktuelleZeit benötigen wir jetzt nicht mehr, da das System nur dann zeichnet, wenn über die Serielle Schnittstelle Daten gesendet werden. Der Arduino gibt jetzt den Takt für unser Programm vor.
Mit plot.setXLim(0, 100); und plot.setYLim(-30, 110); legen wir die Skalierung der Achsen in der setup-Methode starr fest. Wenn unsere Daten außerhalb dieses Rahmens liegen, werden sie nicht gezeichnet.
Im Folgenden werden wir das Programm so ändern, dass die Achsen sich an die Daten anpassen.
Wenn du das Programm ablaufen lässt, müssten sich die Achsen automatisch an die Messwerte anpassen.