Tutaj przedstawię w jaki sposób zrobić znaczek specjalny na wyświetlaczu opartym o sterownik HD44780 w Arduino. Zapraszam
Jako, że wcześniej programowałem w Bascomie to środowisko miało wbudowany generator znaków specjalnych i nie było problemu ze zrobieniem takiego. Natomiast w Arduino IDE próżno szukać takiego generatora bo go najzwyczajniej nie ma.
Czasem znak który potrzebujemy znajduje się już w pamięci wyświetlacza, oto lista tych znaków:

Jak widać, te symbole mają swoje „numery”. Znak wykrzyknika posiada numer 00100001, a znak plusa 00101011. Lecz Arduino nie rozszyfruje sobie tych numerów, ponieważ są w zapisie binarnym, a my możemy tylko wpisać numer znaku w systemie dziesiętnym. Zatem mamy trzy wyjścia, albo poszukać w internecie konwertera bin – dec, samemu przeliczyć albo użyć kalkulatora jeżeli mamy system Windows 7 wzwyż.
Dla kalkulatora Windows:
- Zmieniamy na tryb Programisty (Widok > Programista)
- Zmieniamy system na Bin
- Wpisujemy liczbę
- Przechodzimy na Dec i otrzymujemy naszą liczbę zwrotną

Ale co jeśli chcę użyć innego znak niż z tej tablicy ?
No cóż… możesz sobie taki zrobić ;) Do tego celu służy ta strona:
http://omerk.github.io/lcdchargen/
klikając w zielone piksele tworzymy własny symbol. Po skończeniu kopiujemy Output:
|
1 2 3 4 5 6 7 8 9 10 |
byte customChar[8] = { //customChar to nazwa znaku 0b00100, 0b01010, 0b10001, 0b01010, 0b00100, 0b00000, 0b00000, 0b00000 }; |
Jak widać tworzenie własnego znaku jest proste. 1 oznacza zapalony piksel bloku. Tak stworzony znak wklejamy do naszego programu poza pętlę loop() i setup(). Następnie z takiego zlepka danych musimy stworzyć znak. Z pomocą przychodzi nam funkcja lcd.createChar():
|
1 2 3 4 |
lcd.createChar(numer_znaku, nazwa_znaku); //numer znaku w zakresie od 0-7 //nazwa znaku |
Pamięć wyświetlacza pozwala nam na używanie w jednym programie maksymalnie 8 znaków (patrz tabela wyżej- kolumna CG RAM). Jak dla mnie jest to wystarczająca ilość, ale każdy ma różne projekty i zapotrzebowanie znaków do nich.
Zatem jak już to mamy to wystarczy teraz ten znak wyświetlić. Jest to ostatnia funkcja dla tego poradnika i jest nią lcd.print((char))
|
1 2 3 |
lcd.print((char)numer_znaku); //numer_znaku to numer przypisany w lcd.createChar() |
Dosyć teorii, czas na praktykę !
Znak który wcześniej stworzyliśmy to znak stopni, który posłuży do termometru, w dalszej części Kursu Arduino ;)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <LiquidCrystal.h> //dodaj biblitekę LiquidCrystal.h LiquidCrystal lcd(3,4,5,6,7,8,9); //definicja pinów wyświetlacza byte stopnie[8] = { //konfigurajca znaku stopnie 0b00100, 0b01010, 0b10001, 0b01010, 0b00100, 0b00000, 0b00000, 0b00000 }; void setup(void) { lcd.createChar(0, stopnie); //stwórz znak o nazwie stopnie i przypisz jej numer 0 lcd.begin(20,4); //ustaw rozdzielczość ekranu 20x4 lcd.clear(); //wyczyść bufor ekranu } void loop(void) { lcd.setCursor(0,0); //ustaw kursor w pozycji 0,0 lcd.print((char)0); //wyświetl znak o numerze 0 } |
Jak wcześniej opisywałem. Najpierw wstawiamy konfigurację naszego znaku poza loop() i setup(). Następnie w funkcji setup() tworzymy znak z wcześniej zrobionej konfiguracji i przypisujemy mu numer 0. Na końcu w pętli loop() wyświetlamy ten znak. Powinniśmy otrzymać efekt jak na zdjęciu niżej:

A jeżeli dopiszemy do tego programu obsługę termometru to efekt będzie taki:

Jeżeli chcesz być informowany na bieżąco o nowych częściach kursu to kliknij „Lubię to!” bądź subskrybuj naszą stronę, aby otrzymywać na adres e-mail nowości ze strony. Jeżeli masz jakieś pytania to śmiało zadawaj je na forum ; )