- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Analoger Eingang - Bargraph Anzeige

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2010
    Ort
    Oldenburg
    Alter
    52
    Beiträge
    18

    Analoger Eingang - Bargraph Anzeige

    Anzeige

    Powerstation Test
    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
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    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:
    Code:
        if (result>0  && result<=4)   PORTD = 0b11111110;
        if (result>4  && result<=20)  PORTD = 0b11111101;
        if (result>20 && result<=30)  PORTD = 0b11111011;
        ...
    MfG
    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2010
    Ort
    Oldenburg
    Alter
    52
    Beiträge
    18
    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.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    ohne in das programm gesehen zu haben würde ich folgende zeile vorschlagen

    Code:
    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!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests