Forum: Mikrocontroller und Digitale Elektronik analoge Anzeige auf GLCD


von Suchender (Gast)


Lesenswert?

Hallo zusammen,

wenn ich ein Zeigerinstrument auf einem GLCD darstellen möchte wie setze 
ich das am besten um? Baue ich mir da einen eigenen Fond zusammen wie 
bei einer digtalen Darstellung, pro Wert (Zeigerstellung) einen 
Datensatz? Gibt es evt. einen Creator?

Danke für Antworten

von Edi R. (edi_r)


Lesenswert?

Vielleicht nützt Dir der Bresenham-Algorithmus etwas.

von Ralf (Gast)


Lesenswert?

> wenn ich ein Zeigerinstrument auf einem GLCD darstellen möchte wie setze
> ich das am besten um? Baue ich mir da einen eigenen Fond zusammen wie
> bei einer digtalen Darstellung, pro Wert (Zeigerstellung) einen
> Datensatz?
Du guckst dir http://de.wikipedia.org/wiki/Bresenham-Algorithmus an, 
setzt beide Varianten (Linie und Kreis) auf deinem System um, und 
verknubbelst dann quasi deine interne Software-Uhr mit der Ansteuerung 
der Uhr-Anzeige.

Um zu ermitteln, wo beispielsweise die jeweiligen Stundenmarkierungen 
liegen müssen, würde ich das einfach in Paint oder einem anderen 
Programm, welches großem Zoom ein Raster anzeigen kann, zeichnen und die 
Koordinaten entsprechend in eine Koordinatentabelle eintragen, aus der 
du jeweils die benötigte Anfangs- und Endpunkte holst.
Drumrum natürlich der Kreis. Die Zeigerpositionen würde ich ebenfalls in 
einer Tabelle führen. Die Zeiger werden dann von der Mitte der Uhr bis 
zu den entsprechenden Koordinaten gezeichnet.
Um eine Zeigerposition zu aktualisieren, ist es wichtig, beide Zeiger zu 
löschen, dann die neuen Endpunkte holen und neu zu zeichnen.

Ralf

von Suchender (Gast)


Lesenswert?

Danke für den Hinweis, werd mich mal einlesen.

von Pete K. (pete77)


Lesenswert?

Du benötigst nur einen Viertelkreis und kannst dann spiegeln.

von spess53 (Gast)


Lesenswert?

Hi

>Du benötigst nur einen Viertelkreis und kannst dann spiegeln.

Bei simpel gestrickten Anzeigen mag das ja noch angehen. Wenn es etwas 
anspruchsvoller aussehen soll würde ich die Skala als Grafik laden und 
nur den Zeiger zeichnen. Geht auch wesentlich schneller.

MfG Spess

von A. B. (funky)


Lesenswert?

Den Zeiger per Bresenham und die Kreisskala entweder auch per Bresenham 
zeichnen oder als Bitmap definieren.

Darauf achten, das man nichts von der Kreisskala mit dem Zeiger 
übermalt. Dann muss man die Skala nicht jedesmal neu zeichnen.

Außerdem ist es nützlich sich mit dem Bogenmaß auseinanderzusetzen. Legt 
man die vorberechneten Anfangs/Endkoordinaten des Zeigers dann noch in 
ein Array dann ist das ganze auch recht flott.

von spess53 (Gast)


Lesenswert?

Hi

>Darauf achten, das man nichts von der Kreisskala mit dem Zeiger
>übermalt. Dann muss man die Skala nicht jedesmal neu zeichnen.

Wenn du für den Zeiger einen XOR-Mode benutzt reicht das erneute 
Zeichnen um den Zeiger zu löschen und den Hintergrund wieder 
herzustellen.

MfG Spess

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.