Hallo ich versuche ein Grad-Zeichen (°) mit Python auf meinem LCD auszugeben.
Die betreffende Zeile sieht so aus:
Ich möchte nun statt dem "@" ein "°C" ausgeben. Wie stelle ich es an, das ein korrektes ° ausgegeben wird?
Danke
Hallo ich versuche ein Grad-Zeichen (°) mit Python auf meinem LCD auszugeben.
Die betreffende Zeile sieht so aus:
Ich möchte nun statt dem "@" ein "°C" ausgeben. Wie stelle ich es an, das ein korrektes ° ausgegeben wird?
Danke
Grad-Zeichen am LCD ausgeben? Schau mal ob du hier fündig wirst!
Hallo ich versuche ein Grad-Zeichen (°) mit Python auf meinem LCD auszugeben.
Die betreffende Zeile sieht so aus:Ich möchte nun statt dem "@" ein "°C" ausgeben. Wie stelle ich es an, das ein korrektes ° ausgegeben wird?
Danke
schreibe dir ein script wo alle Codes von 0 bis 255 auf dem Display ausgegeben werden
notiere welcher Code für ° ist falls überhaupt vorhanden, oder programmiere es selber im Speicher vom Display ist meist an Position 0-7 Platz für 8 selbst gemachte Zeichen
dann baue dir eine Umleitung, wenn der PI ° sendet, auf Code für ° umschalten.
Ist es ein HD44780?
Dann kannst Du eigene Zeichen definieren.
das sind erstmal die standart zeichen des HD alles andere müsstest du selbst definieren
hier die Byte für °C Zeichen
12, 18, 18, 12, 32, 32, 32, 32, // ° Celsiuszeichen
Hallo, danke erst mal für die Hilfe.
Ich habe das Script jetz mal so geändert (nur ein Auszug)
# -*- coding: UTF-8 -*-
a=u"°"
lcd_string('C: '+str(get_temperature())+a+'C'+str(get_cpu_speed()[:3])+'MHz')
Ausgegeben wird jetzt "40,1-C 700 MHz" . Also statt dem '°' ein '-' :s
Wahrscheinlich habe ich die Variable 'a' falsch eingetragen. Laut der Tabelle sollte ja so ein Display ein ° darstellen können.
(unten das 3. von rechts)
Leider kann ich mit den Byte-Zahlen nicht viel anfangen da ichein absoluter Programmieranfänger bin. Es wäre super wenn jemand die Zeile mit dem 'lcd_string' abändern könnte damit das Grad-Zeichen erschein. Danke
setze doch mal für a = 239 ein (aber ich kann kein python Dialekt)
dein ° hat aber Ecken das ist doof, evtl. findet sich noch jemand der weiss wie man in python die Bytefolge 12, 18, 18, 12, 32, 32, 32, 32, // ° Celsiuszeichen in den Speicher vom LCD bekommt
Wenn ich a durch 239 ersetze dann gibt es folgende Fehlermeldung:
"TypeError: cannot concatenate 'str' and 'int' objects"
versuchs mit str(unichr(239))
http://stackoverflow.com/questions/3673…-back-in-python
auch wenn ich keine Ahnung von python habe, googeln kann ich
Das gibt folgenden Fehler:
"UnicodeEncodeError: 'ascii' code can't encode character u\xef' in pos.0: ordinal not in range(128)"
Da lautet die Ausgabe an dieser Stelle "00b0"
Das gibt folgenden Fehler:
"UnicodeEncodeError: 'ascii' code can't encode character u\xef' in pos.0: ordinal not in range(128)"
was ist denn das für ein doofer Fehler ? wer sagt denn das der Range nur 128 sein darf ?
das gilt doch nur für signed char, aber char sind unsigned.....
also dann wird das auch nicht gehen ?
ich würde ja das ° Zeichen in LCD mem 0 erstellen mit meiner Bytefolge:
12, 18, 18, 12, 32, 32, 32, 32, // ° Celsiuszeichen
nach dieser Anleitung:
http://www.tinkerforge.com/de/doc/Softwar…let_Python.html
LCD16x2.set_custom_character(index, character)
Parameter:
index -- int
character -- [int, int, int, int, int, int, int, int]
Rückgabetyp:
None
Das LCD 16x2 Bricklet kann bis zu 8 benutzerdefinierte Buchstaben speichern. Die Buchstaben bestehen aus 5x8 Pixel und sie können über den Index 0-7 adressiert werden. Um die Pixel zu beschreiben, werden die ersten 5 Bit von 8 Bytes verwenden. Zum Beispiel, um den Buchstaben "°" zu erzeugen, sollte das folgende Array gesendet werden:
character[0] = 0b00001100 (Dezimalwert 12)
character[1] = 0b00010010 (Dezimalwert 18)
character[2] = 0b00010010 (Dezimalwert 18)
character[3] = 0b00001100 (Dezimalwert 12)
character[4] = 0b00100000 (Dezimalwert 32)
character[5] = 0b00100000 (Dezimalwert 32)
character[6] = 0b00100000 (Dezimalwert 32)
character[7] = 0b00100000 (Dezimalwert 32)
Die Buchstaben können später mit [url=http://www.tinkerforge.com/de/doc/Software/Bricklets/LCD16x2_Bricklet_Python.html#LCD16x2.write_line]write_line()[/url] mit den chars mit den Byterepräsentationen 8 bis 15 geschrieben werden.
Es ist möglich die benutzerdefinierten Buchstaben im Brick Viewer ab Version 2.0.1 einzustellen.
Benutzerdefinierte Buchstaben werden vom LCD im RAM gespeichert, daher müssen sie nach jedem Start des LCD 16x2 Bricklets gesetzt werden.
Alles anzeigen
Das '\239' gibt ein 9C am Display aus.
Sorry, bei deinem 2. Tip bin ich bin ich etwas überfordert......:s
Ich versuche mich aber einzulesen....
aber 223 ist immer noch sehr eckig
aber wenn es dir so gefällt
o.k. ich bin gespannt, wie du bei 5x8 Pixeln ein rundes Zeichen hinbringst...:)
o.k. ich bin gespannt, wie du bei 5x8 Pixeln ein rundes Zeichen hinbringst...:)
ich habs doch hier eingestellt :s soll ich es dir auf Karopapier aufmalen ?
.oo.
o..o
o..o
.oo.
im Gegensatz zum eingebauten mit Ecken
ooo
o..o
ooo
...is ja gut, ich gebe mich geschlagen. Wenn es mir mal komplett langweilig ist und ich garnicht mehr weiß, was ich machen soll, werde ich mich an einem schöneren ° Zeichen versuchen.
...is ja gut, ich gebe mich geschlagen.
musst du nicht, vielleicht hilft das ?
hier mal ein Link:
http://www.roboternetz.de/community/thre…ichen-in-BASCOM
zum download:
http://www.mst-page.de/lcdchar_designer.zip
Deflcdchar 0,12,18,18,12,32,32,32,32
sieht aus wie meine Zeichenfolge
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!