Archiv verlassen und diese Seite im Standarddesign anzeigen : Analoger Eingang - Bargraph Anzeige
delaware
26.01.2010, 11:02
Hallo, habe eine VU / Bargraph Anzeige programmiert.
An Pin 0 PORT C ( ADC) hängt ein Poti zwischen GND & 5V (mit Vorwiderstand).
Je nach Stellung des Potis soll eine LED-Licht wandern.
Ich beschäftige mich seit 3 Wochen mit ATmels.
Die Schaltung läuft auf einem STK500 mit ATmega8.
Vielleich kann mir jemand eine Meinung zu dem C- Code geben, evtl. geht es ja auch viel einfacher.
christoph
Wie wäre es erstmal mit "richtiger" statt "einfacher"? ;-)
Oder ist es Absicht, dass keine LED an ist, wenn result genau 4 ist (oder genau 20, oder 30, ...)?
Ich fände es auch einfacher lesbar, wenn man die beiden Vergleiche tauschen würde, also so:
if (result>0 && result<=4) PORTD = 0b11111110;
if (result>4 && result<=20) PORTD = 0b11111101;
if (result>20 && result<=30) PORTD = 0b11111011;
...
delaware
26.01.2010, 12:58
Hast recht. Viel gar nicht auf, da der Port bei z.b. genau 4 nicht gelöscht wurde sondern einfach der vorige Wert erhalten blieb.
ohne in das programm gesehen zu haben würde ich folgende zeile vorschlagen
PORTD = ~(1<<((result*8)/1024)); // messwert / 10bit->1024 / 8Lampen = bitposition
wobei das ergebnis aus der rechnung die nte lampe ist, die leuchten soll und die binäre zahl 1 dann um soviele positionen nach links geschoben wird, im falle von 1023 (maximalwert) ist das ergebnis 7,99~ die nachkommastellen werden einfach abgeschnitten im falle von weniger als 128 wäre das 0
ACHTUNG: ich hab hier result*8 geklammert, damit auch definitiv DAS zuerst berechnet wird, wenn ich erst das ergebnis durch 1024 teile, klommt IMMER 0 bei raus, bei ganzzahldivision ignoriert man alles was nach dem komma kommt
bei 0 ist die erste lampe an und bei 1023 die achte lampe ... da die LEDs low active sind, hab ich mit '~' die zahl abschliessend invertiert
PS: bei result == 0 würde garkeine lampe bei dir leuchten!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.