Jump to content

Recommended Posts

Geschrieben

Hallo Zusammen,

ich nutze in meinem PHP Script Custom Chars um eigene Symbole auf dem Display anzuzeigen. In der Doku steht, dass man bis zu 8 eigene Symbole verwenden kann, welche von 0-7 Adressiert werden können. Leider Funktioniert bei mir das Symbol welches auf der 0 liegt nicht, hier wird nur Schrott ausgegeben. Index 1-7 funktionieren hervorragend, Index 8 ist scheinbar schon für das Yen-Zeichen reserviert.

Mein Programm sieht so aus:

//Haus Symbol
$CC[0] = 0b00000100;
$CC[1] = 0b00001010;
$CC[2] = 0b00010001;
$CC[3] = 0b00011111;
$CC[4] = 0b00010001;
$CC[5] = 0b00010001;
$CC[6] = 0b00011111;
$CC[7] = 0b00000000;
$lcd->setCustomCharacter(0,$CC);

$lcd->writeLine(0, 0, "\0");

 

Hat jemand eine Idee wo der Fehler liegen könnte?

Vielen Dank im Voraus!

MfG Marco

Geschrieben

Wie sieht denn dein writeLine Aufruf aus?

 

So schreibst du den Custom Character 0:

 

$lcd->writeLine(0, 0, "\x08");

 

Wobei '\x08' nicht das gleich wie "\x08" ist, denn in '' interpretiert PHP das nicht wie gewünscht.

Geschrieben

Funktioniert bei mir grad so:

$lcd->setCustomCharacter(8,$CC);

$lcd->writeLine(0, 0, "\10");

bei Set verwende ich 8-15

bei writeline \10 - \17

 

ich bin leider blutiger Anfänger und bin mir nicht sicher ob ich das so lassen kann oder lieber abändern sollte :D

Lieben Dank

Geschrieben

Dass das bei dir so funktioniert liegt daran dass

 

a) du da gerade einen Bug im Plugin des LCD 20x4 Bricklets gefunden hast. 8 als index ist eigentlich nicht zulässig, der Bug führt aber dazu dass das als 0 interpretiert wird und damit den ersten Custom Character wählt.

 

b) in PHP "\10" als oktal interpretiert wird und damit das gleiche meint wie "\x08" nämlich ASCII Code 8. Auf diesem ASCII Code liegt der erste Custom Character.

 

Wie borg schon sagt können wir den ASCII Code 0 nicht nehmen, da der String-Ende bedeutet. Deswegen das Offset von 8 zwischen dem setCustomCharacter index (0-7) und den ASCII Codes (8-15) für die Custom Characters.

 

Du kannst also bei

 

$lcd->writeLine(0, 0, "\10");

 

bleiben, solltest aber doch

 

$lcd->setCustomCharacter(0,$CC);

 

nehmen, damit dass mit der korrigierten Version des Plugins dann auch noch funktioniert.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...