Der in irgendeiner Zeile maximale Wert von allen drei Zeilen wird beim durchschalten durch die Zeilen mit dem Button leider immer auf die anderen Zeilen verschleppt.
Das hatte ich heute Nacht noch nicht so gesehen, als ich mir den Code ansah. Wenn die Zahl stimmt, muss auch der Balken stimmen, denn Du führst die Zahl ja nicht extra in einer Variablen.
Also mal zum Vertändnis:
1. Du drehst am Rad
2. Du veränderst damit einen Wert
3. den Wert zeigst Du in einer Zeile am Ende an
4. dieser Wert ist richtig und nicht falsch
5. Du verwendest denselben Wert zur Darstellung des Balkens
6. der Balken wird falsch dargestellt
Vielleicht liegt es an: u8g2.drawBox()
Eventuell brauchst Du für jede Zeile ein extra Objekt oder was in der Richtung.
1) Wenn Du am Rad drehst und weiter und weiter und immer weiter in dieselbe Richtung, dass der Wert immer größer wird, gibt es dann mal irgendwo einen Endwert? Oder wird der Wert immer größer und größer?
2) Was ist der maximale Wert für die Breite des Balkens in drawBox() für eine Zeile?
Ich habe noch mal geschaut, wenn ich das richtig sehe, dann verwendet U8G2 einen Pixelpuffer in welchem man sich "bewegen" kann, indem man eine Draw-Methode aufruft und mit X- und Y-Position in Pixel die Startposition oben Links angibt. Ist das korrekt?
Ich habe noch was gefunden in:
Code:
u8g2.drawBox(10,Cursor,Bar1,15); u8g2.setDrawColor(2); /* color 1 for the box */
u8g2.drawStr(25,20,"Wert 1 = "); // write something to the internal memory
Du verwendest einmal absolute Angabe und einmal aus Variable Cursor.
ändere das entweder in:
Code:
u8g2.drawBox(10,Cursor,Bar1,15); u8g2.setDrawColor(2); /* color 1 for the box */
u8g2.drawStr(25,Cursor,"Wert 1 = "); // write something to the internal memory
oder in absolute Angabe, wie hier als Beispiel:
Code:
u8g2.drawBox(10,20,Bar1,15); u8g2.setDrawColor(2); /* color 1 for the box */
u8g2.drawStr(25,20,"Wert 1 = "); // write something to the internal memory
Das ist glaub ich das Problem, dass Du in der ersten Zeile den Balken mit der Länge vom Wert aus der zweiten Zeile erzeugst und so ist das dann mit den anderen auch.
So müsste es besser sein:
Code:
u8g2.setDrawColor(1); /* color 1 for the box */
u8g2.drawBox(10,20,Bar1,15);
u8g2.setDrawColor(2); /* color 1 for the box */
u8g2.drawStr(25,20,"Wert 1 = "); // write something to the internal memory
u8g2.setCursor(95, 20);
u8g2.print(Bar1); // write something to the internal memory
u8g2.setDrawColor(1); /* color 1 for the box */
u8g2.drawBox(10,40,Bar2,15);
u8g2.setDrawColor(2); /* color 1 for the box */
u8g2.drawStr(25,40,"Wert 2 = "); // write something to the internal memory
u8g2.setCursor(95, 40);
u8g2.print(Bar2); // write something to the internal memory
u8g2.setDrawColor(1); /* color 1 for the box */
u8g2.drawBox(10,60,Bar3,15);
u8g2.setDrawColor(2); /* color 1 for the box */
u8g2.drawStr(25,60,"Wert 3 = "); // write something to the internal memory
u8g2.setCursor(95, 60);
u8g2.print(Bar3); // write something to the internal memory
MfG
Lesezeichen