- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: LCD Balkenanzeige - Rückwärtslaufend ?? Wie?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161

    LCD Balkenanzeige - Rückwärtslaufend ?? Wie?

    Anzeige

    Powerstation Test
    Hallo Zusammen,

    ich bin ein absoluter Neueinsteiger in der AVR- Bascom Thematik. Ich sitze seit zwei Tagen und büffel Tutorials und Hilfedateien. Seit gestern durchforste ich auch schon hier das Forum.

    Was habe ich vor?

    Ich möchte eine Tankuhr mit Telemetrie für Modellflugzeuge realisieren. Als Hardware ein Flowmeter, einen Mega8, ein 433 Mhz Sendemodul. Am Boden ein 433 Mhz Empfänger ein Mega8 und ein 20x4 Display.

    Was habe ich schon?
    Auswertung Flowmeter mit Counter und ext. Interupt, Übertragung der Daten (Zählerstand) mit Manchester, Decodierung und Auswertung Zählerstand am Boden im Display mit Numerischen Zeichen.

    Soweit habe ich mich schon durchgeackert.

    Jetzt meine Frage:

    Wie in Gottes namen schaffe ich bei der Tankanzeige am Boden im Display bei vollem Tank eine durchgängige Balkenanzeige (also alle 20 Stellen schwarz) das bei jedem bestimmten Zählerstand X einen Balken von links nach rechts löscht? Habe echt keine Idee das in einem kurzen Code zu realisieren.

    Kann mir jemand von Euch eine "Initialzündung" geben.

    Danke

    Gruß
    Markus

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Um es mal zusammenzufassen:

    1.
    Du willst in der untersten Zeile des 4x20 LCD's einen Füllstandsbalken über alle 2 Stellen realisieren der von links nach Rechts weniger wird.

    2.
    Den Füllstand hast du in form eines Zahlenwertes vorliegen.


    3.
    Es geht also nur noch darum diesen Zahlenwert in den unter 1. angegebenen Balgen fürs LCD umzuwandeln.


    Ist das soweit richtig ?
    Gruß
    Ratber

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Ratber,

    genauso ist es! Hast Du da schon eine Idee?

    Gruß
    Markus

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Yo,ist im Grunde nicht kompliziert.
    Mehr ne Fleißarbeit in Sachen effektive Programierung.

    Was ich brauche ist der Zählbereich also bis wohin du Zählst.

    0-100
    0-128
    0-32
    0-10000
    .....usw.

    Ich nehme mal als Beispiel die 100 für 0-100 Prozent.

    Jetzt Teile ich 20 (20 Segmente) durch 100 und erhalte 0.2
    Das Multipliziere ich mitr dem errechneten Zählerstand und nehme die Ganzzahl (Altrnativ auch Rundung.Wie es beliebt).
    Natürlich könnte man die auflösung noch erhöhren indem man Selbst definierte Zeichen nutzt.
    Damit könnten wir jedes Segment nochmal mit zb. 5 Weiteren Stufungen darstellen was die Auflösung dann von 1/20 (5%) auf 1/100 (1%) erhöhen würde.
    Aber stellen wir das mal hinten an.


    Nehmen wir mal an der Füllstand ist Momentan 62.
    Dann wären das 0.2*62=12.4 also 12
    Das ist die Zahl der Segmente die Aufleuchten oder sichtbar sind.

    Jetzt müssen wir nurnoch den Balken zusammenbauen und an das LCD schicken.

    Jetzt frag ich mal ob du mir noch folgen kannst und ob das verständlich war ?
    Gruß
    Ratber

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Ratber,

    jo ist mir völlig klar - bis hier kann ich absolut folgen. Hmm... bis jetzt eigentlich ganz einfach - voll den Knoten im Hirn wg. neuer Materie

    Gruß
    Markus

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Gut dann kommt das Finale.

    Wir haben die Zahl der Balken die wir anzeigen wollen.
    Damit bauen wir die Zeile auf die wir dann ans Display schicken.
    Da wir einen fetten schwarzen Balken haben wollen (Die Lücken zwischen den Zeichen im Display bleiben aber) müssen wir ein Zeichen haben das alle Pixel ausfüllt.

    Jetzt bin ich echt überfragt ob im Standardzeichensatz des LCD's ein passendes Zeichen ist.
    Macht nix,im Zweifelsfalle kann man sich ja bis zu 8 Zeichen selber definieren (zb. Mit dem in Bascom eingebauten LCD-Designer.Für weitere Informationen Siehe Handbuch oder Hilfe).

    Ja und der Rest ist eigentlich nur ne Schleife.

    Wir zählen von 20 bis 20-x herunter um eben die Anzahl von Zeichen zu setzen.
    In unserem Beispile war das die 12.
    Also würde der Ausschnitt so aussehen können:

    Code:
    Y=21-X                                     '21-12=9 Erklärung eins weiter runter.
    For Z=20 to y Step -1                'Von 20 bis 9 wird gezählt ,das sind 12 Stellen.
    Locate 2,Z                                'Die entsprechende Position im Display anwählen.
    Lcd Chr(0)                               'Zeichen Darstellen.Chr(0-7) wären zb.die Selbstdefinierten Zeichen 
    Next.
    Y=Y-1                                      'Eins runter für die nächste Schleife.
    for Z=Y to 1 Step                      'Damit fahren wir den Rest der Zeile ab
    Locate2.Z
    Lcd Chr(32)                             'Leerzeichen setzen
    Next
    Fertig.(Sofern ich keine groben flüchtigkeitsfehler gemacht habe)


    Naja,zugegeben ,das war jetzt ultraprimitiv und ohne Komfort aber leichter zu verstehen.
    Das ganze geht auch in einer Schleife mit If-Thenabfrage für das Zeichen.
    Auch kann man das Pferd auch ganz anders Reiten indem man erst einen String erstellt und dann ausgibt.

    Ich hab nur eine Möglichkeit von vielen gezeigt.

    Kannste damit den was anfangen ?
    Gruß
    Ratber

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Ratber SUPER DANKE!!!

    ahh jetzt ist mir die Logik der Darstellung klar geworden. Super vielen Dank. Mit der Ausgangssituation kann ich echt was anfangen und das Basteln anfangen!

    Vielen vielen Dank

    Gruß
    Markus

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Yo,kein Problem.
    Gruß
    Ratber

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    25.05.2005
    Beiträge
    9
    HI,

    kann man dieses Problem nicht auch mit dem "SELECT CASE" befehl verwirklichen.

    Ich meine, wenn du eine variable für deinen Füllstand hast und zum Beispiel deine Anzeige aus acht Balken bestehen soll, kann man doch acht bereiche festlegen. Dann liesst man die Variable aus und spring einfach in den Bereich und zeigt dementsprechend was an.

    Aus der Bascomhilfe habe ich mal das Musterprogramm kopiert und geändert. Mit dem LCD disigner oder dem Datenblatt der Anzeige, kann man dann bestimmt anstatt der Rautezeichen einen kasten anzeigen lassen.
    Code:
    Dim X As Byte
    
    Do
      Input "X ? " , X
      Select Case X
        Case 1 To 3 : Lcd "##'
        Case 4 ti 6 : Lcd "'###"
        Case Is > 10 : Lcd "####"
        Case Else : Print "no"
      End Select
    Loop
    
    End

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Ich sagte ja das es etliche Möglichkeiten gibt das zu realisieren.
    Mir war es wichtig das Markus das auch gedanklich nachvollziehen kann.
    Deswegen hab ich es lesbar gestalltet.

    Klar,deine Lösung geht natürlich auch.
    Aber bei 20 Segmenten muß ich auch 20 Casebedingungen einfügen.
    Da kommt der Faktor Platz wieder ins Spiel (Keine Ahnung was jetzt größer ist.Müßte man mal ausprobieren) und der Umstand das eine anpassung zb. auf 40 Segmente dann in Arbeit ausartet.

    Ich brauche dafür nur zwei Werte zu ändern
    Y=Sgemente+1-x
    und die erste For/Netxt Schleife.

    Natürlich kann man die Segmentzahl auch noch Automatisieren dann ist es nurnoch ein einzelner Wert.


    Was das Zeichen betrifft so habe ich ja schon "Lcd Chr(0)" angegeben was dem ersten selbstdefinierten Zeichen im LCD entspricht.
    Das muß man natürlich noch erstellen.
    Also wie bekannt:

    DEFLCDCHAR char,r1,r2,r3,r4,r5,r6,r7,r8 oder mit dem Designer erstellen und übernehmen.
    Gruß
    Ratber

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress