Forum: Mikrocontroller und Digitale Elektronik Analoges Zeigerinstrument auf LCD?


von Matthias (Gast)


Lesenswert?

Ich habe ein 128x64 Display und will auf der rechten Hälfte ein analoges 
Zeigerinstrument (Uhr, Drehzahlmesser, Tacho oder so) darstellen. Der 
Kreis samt Beschriftung wird einfach einmal als Bild gespeichert. Aber 
wie mache ich das mit dem Zeiger? Ich will bei einem Winkel von 270° 
schon so ca. 100 verschiedene Zeigerstellungen darstellen. Am besten mit 
einer Zeigerbreite von 3 Pixel damit er nicht zu klein wirkt. Waagerecht 
würde der Zeiger also so aussehen:
 000000000000000000000000000000000
00000000000000000000000000000000000
 000000000000000000000000000000000
Jede Mögliche Zeigerstellung in einem einzelnen Bild zu speichern ist 
ziemlich speicherfressend (Habe nur einen Mega32). Oder wäre es besser 
von jedem Pixel des Waagerechten Zeigers ausgehend, mit Sinus und 
Cosinus die Position des Pixels um x Grad gedreht zu berechnen? An Zeit 
hätte ich ca. 2MIPS zur Verfügung, das sollte doch für so eine 
Berechnung reichen.
Oder habt ihr eine bessere Idee so einen Zeiger zu berechnen.

von Eddy C. (chrisi)


Lesenswert?

Logisch. Ich täte den Zeiger mit dem klassischen 
Bresenham-Linien-Algorithmus malen. Sinustabelle für die Richtungen ist 
eh klar. Wenn die Linienstärke 3 Pixel sein soll, würde ich jeden Pixel 
der Linie noch mit mit 4 oder acht Pixel umgeben, womit eine 
Linienstärke von drei entsteht:

   x
  xBx
   x

oder

  xxx
  xBx
  xxx

wobei x die umgebenden Pixel sind und B das "Bresenham-Pixel". Je nach 
Richtung kann man da natürlich noch optimieren, um weniger x-Pixel 
zeichnen zu müssen.

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.