OLED PrintPos (u8glib)

Hallo!

Ich sitze nun ca 10 stunden ratlos vor meinem PC.
Ich möchte mit meinem 128x64 Oled display einen bis bis zu 3 stelligen wert anzeigen. Da ich einen Tacho plane, will ich den zahlenwert nach links verschieben. Bei u8g bewegt sich der variable wert bekanntlich nach rechts.

(Möchte nicht dass sich das "km/h" nach rechts verschiebt.

Also möchte ich die print position je nach 0-9, 10-99, 100-999 verändern.
Ich wäre hier nicht lästig, wenn ich nicht schon alles versucht hätte.
Ich denke es gibt eine einfache lösung für mein problem (if else?)

Bitte hilfe :o

Fehlermeldung:

Arduino: 1.6.7 Hourly Build 2015/11/26 12:44 (Windows 7), Board: "Arduino Nano, ATmega328"

sketch_dec15a:40: error: expected 'while' before '}' token

}

^

sketch_dec15a:40: error: expected '(' before '}' token

sketch_dec15a:40: error: expected primary-expression before '}' token

sketch_dec15a:40: error: expected ')' before '}' token

sketch_dec15a:40: error: expected ';' before '}' token

exit status 1
expected 'while' before '}' token

sketch_dec15a.ino (634 Bytes)

Mein Code:

<#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC

int analogPin = 1;
int val = 0;

void setup() {
u8g.setFont(u8g_font_freedoomr25n);
u8g.setColorIndex(1); // Instructs the display to draw with a pixel on.
}

void loop() {
val = analogRead(analogPin);
u8g.firstPage();

do{

if (val <= 0){
u8g.setPrintPos(60, 50);
u8g.println(val);
}

else if (val < 9){
u8g.setPrintPos(40, 50);
u8g.println(val);
}

else if (val < 99){
u8g.setPrintPos(20, 50);
u8g.println(val);
}

while( u8g.nextPage() );
delay(50);
}
}>

Hallo und willkommen im Forum.
Die Fehlermeldung hat nichts mit Deiner Frage zu tun, da der Compiler einen syntaktischen Fehler in Zeile 40 entdeckt hat. Da ist Dir eine Klammer verrutscht.

Bitte benutze Code-Tags!

Ich habe da auch schon mal geknobelt.
Die Startposition musst du von der Anzahl der Stellen machen.
Dazu den Wert in ein int wandeln und die Stellen auswerten.
Mit der if-Anweisung ist es aber richtig.

Die Klammern bei dem do/while passen nicht so recht

@agmue

Danke für die Begrüßung! Freut mich!
Und sorry wegen dem falsch gepostetem code, war ein Flüchtigkeitsfehler!!

Und großen Dank an @Serenifly !
Die falsch gesetzte Klammer war das Hauptproblem.
Ich danke nochmals, jetzt geht es mir besser

:wink:

boostberni:
jetzt geht es mir besser

Das ist schön :slight_smile:

Du kannst Deine Beiträge verändern, beispielsweise die code-Tags noch einfügen (Button </>).

Ich kenne die Programm-Bibliothek nicht, aber ich vermute, eine Anzeige "123" könnte danach "156" aussehen, wenn eigentlich nur "56" da stehen sollte, da die führende "1" nicht gelöscht wird. Serenifly hat eine schöne Lösung dafür, die ich aber leider gerade nicht wiederfinde :frowning: