anasell Geschrieben May 22, 2013 at 11:09 Geschrieben May 22, 2013 at 11:09 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 Zitieren
borg Geschrieben May 22, 2013 at 11:18 Geschrieben May 22, 2013 at 11:18 Die 8 Symbole werden mit 8-15 addressiert, nicht mit 0-7. 0-7 konnten wir nicht nehmen, da die 0 das String-Ende kennzeichnet. Das 1-7 funktionieren ist zufall . Zitieren
anasell Geschrieben May 22, 2013 at 11:37 Autor Geschrieben May 22, 2013 at 11:37 Vielen Dank für deine schnelle Antwort, Verwende ich die 8 oder die 9 gibt das Display das Yen Zeichen und dann die Zahl 8 oder 9 aus. Habe ich sonst irgendetwas falsch gemacht? Zitieren
anasell Geschrieben May 22, 2013 at 12:24 Autor Geschrieben May 22, 2013 at 12:24 hab noch ein wenig getüftelt, es funktioniert komischerweise wenn man bei $lcd->setCustomCharacter den Index 8-15 verwendet, bei der Ausgabe den Index \10 -\17 ... komische Geschichte Zitieren
photron Geschrieben May 22, 2013 at 12:47 Geschrieben May 22, 2013 at 12:47 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. Zitieren
anasell Geschrieben May 22, 2013 at 13:10 Autor Geschrieben May 22, 2013 at 13:10 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 Lieben Dank Zitieren
photron Geschrieben May 22, 2013 at 13:30 Geschrieben May 22, 2013 at 13:30 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. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.