Bascom LCD spezifisches zeichen ausgeben

Bonze

Neues Mitglied
16. Jan. 2010
516
0
0
Altenkirchen (Pfalz)
Sprachen
  1. BascomAVR
Ich möchtre je nachdem wie sich meine Variablen verhalten ein pfeilhoch oder runter auf meinem Display ausgeben.
dachgte ich machs mit
Code:
Temp1_alt_s = Temp1_s
If Temp1_s > Temp1_alt_s Then
    Zeichen1 = Chr(0)
Elseif Temp1_s < Temp1_alt_s Then
    Zeichen1 = Chr(1)
Else
    Zeichen1 = Chr(000)
Endif

Locate 1 , 1                                                                   'DISPLAY AUSGABE
        Lcd "Geh" ; Chr(225) ; "se  " ; Temp1_s ; Chr(223) ; Zeichen1 ; " " ; Pwm_prozent1 ; "%"
End If

Deflcdchar [0] , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32                              ' hoch
Deflcdchar [1] , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32                              ' runter

das funktioniert so aber nich, hat jemand vl ne idee wie ich das machen koennt?
 
Hallo Bonze!

Ich denke mal, dass Problem wird am "Kopieren" der Daten in die Variable "Zeichen1" liegen.
Das geht so nicht.

Hast du denn die erstellen Charakter mal direkt auf dem LCD ausgegeben?
So wäre es eigentlich richtig!

Versuch es doch mal mit einer Hilfsvariablen.......
Zum Beispiel so:
Code:
Temp1_alt_s = Temp1_s
If Temp1_s > Temp1_alt_s Then
    [COLOR="#FF0000"]Zeichen1 = 0[/COLOR]
Elseif Temp1_s < Temp1_alt_s Then
    [COLOR="#FF0000"]Zeichen1 = 1[/COLOR]
Else
    [COLOR="#FF0000"]Zeichen1 = 2[/COLOR]
Endif

Locate 1 , 1                                                                   'DISPLAY AUSGABE
        Lcd "Geh" ; Chr(225) ; "se  " ; Temp1_s ; Chr(223) ; [COLOR="#FF0000"]Chr(zeichen1)[/COLOR] ; " " ; Pwm_prozent1 ; "%"
End If

Deflcdchar [0] , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32                              ' hoch
Deflcdchar [1] , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32   

Deflcdchar [2] , 14 , 31 , 10 , 32 , 17 , 14 , 32 , 32                       'Smilie mit Hut


Ich habe eben einfach mal ungetestet zusammen kopiert....
sollte aber eigentlich funktionieren.

Grüße,
Cassio
 
Hallo Bonze,

Ich möchtre je nachdem wie sich meine Variablen verhalten ein pfeilhoch oder runter auf meinem Display ausgeben.
dachgte ich machs mit
Code:
Temp1_alt_s = Temp1_s
If Temp1_s > Temp1_alt_s Then
    Zeichen1 = Chr(0)
Elseif Temp1_s < Temp1_alt_s Then
    Zeichen1 = Chr(1)
Else
    Zeichen1 = Chr(000)
Endif

Locate 1 , 1                                                                   'DISPLAY AUSGABE
        Lcd "Geh" ; Chr(225) ; "se  " ; Temp1_s ; Chr(223) ; Zeichen1 ; " " ; Pwm_prozent1 ; "%"
End If

Deflcdchar [0] , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32                              ' hoch
Deflcdchar [1] , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32                              ' runter

das funktioniert so aber nich, hat jemand vl ne idee wie ich das machen koennt?


Stell mal die Rot gekennzeichnete Zeile nach dem Endif. Dann ist nicht nur der Else-Zeig aktiv.


Code:
[COLOR="#FF0000"]Temp1_alt_s = Temp1_s[/COLOR]
If Temp1_s > Temp1_alt_s Then
    Zeichen1 = Chr(0)
Elseif Temp1_s < Temp1_alt_s Then
    Zeichen1 = Chr(1)
Else
    Zeichen1 = Chr(000)
Endif
[COLOR="#FF0000"] <---[/COLOR]

Locate 1 , 1                                                                   'DISPLAY AUSGABE
        Lcd "Geh" ; Chr(225) ; "se  " ; Temp1_s ; Chr(223) ; Zeichen1 ; " " ; Pwm_prozent1 ; "%"
End If

Deflcdchar [0] , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32                              ' hoch
Deflcdchar [1] , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32                              ' runter

LG
 
also, so ein bisschen scheints zu funktionieren, allerdings bekomm ich nur 2 senkrechte striche angezeigt, was jedoch kein von meinen 3 Zeichen ist :D
hab also das zeichen1/2 als Byte definiert,. und in meiner Ausgabe chr(zeichen1) eingefuegt,. auch hab die position, wo der alte Wert gespeichert wird geändert..
weiss jetzt auf anhieb, auch nich was ich noch ändern soll..
 
also sehr komisch ich habs nun so,.
Code:
Dim Zeichen1 As Byte
    
Temp1_s = Fusing(temp1 , "##.##")
If Temp1_s > Temp1_alt_s Then
    Zeichen1 = 1
Elseif Temp1_s < Temp1_alt_s Then
    Zeichen1 = 2
Else
    Zeichen1 = 0
End If
Temp1_alt_s = Temp1_s                                                           'alter wert zwischenspeichern



 Locate 1 , 1                                                                   'DISPLAY AUSGABE
        Lcd "Geh" ; Chr(225) ; "se  " ; Temp1_s ; Chr(223) ; " " ; [B]Chr(zeichen1)[/B] ; " " ; Pwm_prozent1 ; "%"

' ----- Definition benutzerdefinierter Zeichen -----
' nixx
 Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32                           ' replace [x] with number (0-7)
 ' Benutzerdefiniertes LCD-Zeichen Pfeil Hoch
Deflcdchar 1 , 4 , 14 , 31 , 21 , 4 , 4 , 4 , 32
' Benutzerdefiniertes LCD-Zeichen Pfeil Runter
Deflcdchar 2 , 4 , 4 , 4 , 21 , 31 , 14 , 4 , 32

bekomme jedoch fuer hoch nur "||" und fuer runter "|||" angezeigt ?! glaube solangsam daran, das mein display nen andren zeichensatz hat,.
 
Hallo Bonze!

Ganz ehrlich.....
Der Fehler kann eigentlich nicht in dem kleinen Codeabschnitt liegen. :hmmmm:

Leider kann ich dir auch nicht sagen, warum die selbstdefinierten Zeichen nicht richtig dargestellt werden.
Der Zeichenaufbau für die Pfeile ist jedenfalls richtig und die Zuweisung sollte so auch funktionieren.

Kann es sein, das sich irgendein Speicherbereich in deinem Programm "überschneidet", oder die Stacks bzw. Framesize zu klein ist?


Grüße,
Cassio
 
ne, es funktionierte, hab dann änderungen im programm gemacht, neu auf den avr geladen, und dann wars das :D
naja hab den Teil erstma aus meinem Programm verbannt,.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)