Forum: Mikrocontroller und Digitale Elektronik Linie am OLED Display 128x64 mit der u8glib verschieben?


von M. G. (ixil96)


Lesenswert?

Hallo!

Ich benutze die u8glib um mein Display anzusteuern. Das funktioniert 
soweit ganz gut. Ich möchte nun Messwerte (1 Messwert pro Sekunde) am 
Display mit Linien (Balkengrafik) anzeigen.

Also der letzte Messwert ist die Linie ganz rechts und soll dann 1x pro 
Sekunde ersetzt werden, wobei der alte Messwert um 1 Stelle nach links 
verschoben werden soll.

Wie mache ich das mit der u8glib?

Die Funktion für eine vertikale Linie lautet:
1
u8g_DrawVLine(&u8g, x, y, h);

wobei x und y der Startpunkt und h die Höhe der Linie in pixel ist.

Die 1. Messung (das ist der Wert für h) soll am Display ganz rechts (x = 
127) dargestellt werden.
Die 2. Messung folgt ca. 1 Sekunde später und soll an der Stelle x=127 
dargestellt werden, während die letze (und alle vorhergehenden) 
Messung(en) um 1 Stelle nach links wandern sollen.

Ich suche also eine Funktion in der u8glib, wo ich eine Spalte nach 
links verschieben kann!

von u8glib (Gast)


Lesenswert?

Das geht eigentlich nur über ein Array. Pseudo code:

n = Anzahl der Elemente im Array
a[0..n-1] = Array
Fülle alle a[0..n-1] mit 0

loop
  a[n-1] = Messwert
  Zeichne alle Werte a[0..n-1] mit U8glib
  Mit i = 0 bis n-2
   a[i] = a[i+1]

Mit ein bischen mehr Code kann man natürlich auf das Verschieben der 
Arrayelemente verzichten.

Grüße,
Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.