Ich möchte die Skalierung der y-Achse eines Diagramms auf dem OLED-Display durch Variablen festlegen, um eine möglichst gute Auflösung zu erreichen. Dazu soll ganz zum Anfang des Programms einmal ein Wert vom Helligkeitssensor geholt und dann als Mittelwert der y-Achse festgelegt werden. Die y-Achse soll dann einen Wertbereich von -50 bis +50 um diesen Mittelwert darstellen, siehe folgendes Programmierbeispiel:
Leider funktioniert das so nicht. Stattdessen wird die y-Achse von -50 bis +50, also um 0 herum skaliert. Ein Blick auf den Arduino-Quellcode zeigt auch warum:
void setup() {
tsl.begin();
senseBoxIO.powerI2C(true);
delay(2000);
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
display.display();
delay(100);
display.clearDisplay();
DataPlot.setTitle(„Helligkeit“);
DataPlot.setXLabel(„Zeit“);
DataPlot.setYLabel(„Lux“);
DataPlot.setXRange(0,3600);
DataPlot.setYRange((round((Element - 50))),(round((Element + 50))));
DataPlot.setXTick(360);
DataPlot.setYTick(25);
DataPlot.setXPrecision(0);
DataPlot.setYPrecision(0);
Element = tsl.getIlluminance();
}
Der Wert der Variable „Element“ wird erst gesetzt, wenn das Diagramm schon fertig initialisiert ist. Das Problem wird sicher klar, wenn man den Quelltext analysiert, beim reinen Blick auf das Blockly-Programm aber leider komplett unverständlich und dementsprechend eventuell etwas frustrierend.
Könnte man dort die Umwandlung der Blöcke in Arduino-Quelltext nicht noch etwas optimieren, insbesondere was die Zeitabhängigkeiten angeht?