LCD oparty o kontroler Hitachi HD44780 ma wymiar 16x2 znaków. Jest to standardowy, typowy LCD wykorzystywany w wielu urządzeniach i projektach hobbystycznych. Wykorzystać ten LCD można wykorzystując układ scalony PCF8574 i interfejs I²C do podłączenia do Raspberry Pi. Prosty skrypt w Pythonie, umieszczony poniżej, pozwala na wykorzystanie LCD.
PCF8574 to 8 bitowy ekspander I²C, podłączony jest do LCD z kontrolerem HD44780 w następujący sposób, wykorzystując 4 bitowy interfejs komunikacji z tym wyświetlaczem.
Pin A0 ekspandera podłączony jest do VCC poprzez rezystor 10kΩ, a pozostałe piny adresowe do masy. Daje to adres układu 0x21.
Jeśli chcemy wykorzystać inny adres, to układy PCF8574 i PCF8574A dają nam dostęp do szerokiej gamy adresów:
Przed rozpoczęciem pracy z Raspberry Pi i interfejsem I²C trzeba interfejs ten włączyć. Opis jak to zrealizować znaleźć można w tym projekcie.
Po podłączeniu LCD i ekspandera i załadowaniu systemu z włączonym interfejsem I²C na RPi można sprawdzić czy system wykrywa obecność ekspandera PCV8574. Wykorzystać w tym celu można narzędzia z pakietu i2ctools, a mianowicie:
lub
To z której komendy korzystamy zależne jest od wersji naszego modułu. Rev 1 korzysta z interfejsu zerowego, a rev 2 z pierwszego.
Dochodzimy teraz do kwestii oprogramowania wyświetlacza. Skrypt obsługujący LCD napisany został w Pythonie, poniżej znajduje się prosta biblioteka, pozwalająca na komunikację z wyświetlaczem poprzez I²C. Skrypt wymaga do działania biblioteki obsługującej smbus, nazywającej się python-smbus. Aby zainstalować bibliotekę wystarczy wpisać w linii komend:
Po skopiowaniu poniższy skrypt zapisać trzeba jako pylcdlib.py.
A program główny wygląda następująco:
Ten krótki skrypt zapisujemy jako test_lcd.py i wpisujemy w linii komend:
Uwaga
Jeśli korzystacie z Raspberry Pi rev 2.0 to trzeba zmienić interfejs I²C z którego korzysta program. Moduły Rev 1 korzystają z interfejsu 0, a rev 2 z interfejsu 1, zatem w powyższym programie trzeba zmienić linijkę "lcd = pylcdlib.lcd(0x21,0)" na "lcd = pylcdlib.lcd(0x21,1)".
Źródło: http://www.rpiblog.com/2012/07/interfacing-16x2-lcd-with-raspberry-pi.html
PCF8574 to 8 bitowy ekspander I²C, podłączony jest do LCD z kontrolerem HD44780 w następujący sposób, wykorzystując 4 bitowy interfejs komunikacji z tym wyświetlaczem.
| Pin ekspandera | Pin LCD | P0 | D4 | P1 | D5 | P2 | D6 | P3 | D7 | P4 | RS | P5 | R/W | P6 | E |
Pin A0 ekspandera podłączony jest do VCC poprzez rezystor 10kΩ, a pozostałe piny adresowe do masy. Daje to adres układu 0x21.
Jeśli chcemy wykorzystać inny adres, to układy PCF8574 i PCF8574A dają nam dostęp do szerokiej gamy adresów:
Przed rozpoczęciem pracy z Raspberry Pi i interfejsem I²C trzeba interfejs ten włączyć. Opis jak to zrealizować znaleźć można w tym projekcie.
Po podłączeniu LCD i ekspandera i załadowaniu systemu z włączonym interfejsem I²C na RPi można sprawdzić czy system wykrywa obecność ekspandera PCV8574. Wykorzystać w tym celu można narzędzia z pakietu i2ctools, a mianowicie:
i2cdetect 0 -y lub
i2cdetect 1 -y To z której komendy korzystamy zależne jest od wersji naszego modułu. Rev 1 korzysta z interfejsu zerowego, a rev 2 z pierwszego.
Dochodzimy teraz do kwestii oprogramowania wyświetlacza. Skrypt obsługujący LCD napisany został w Pythonie, poniżej znajduje się prosta biblioteka, pozwalająca na komunikację z wyświetlaczem poprzez I²C. Skrypt wymaga do działania biblioteki obsługującej smbus, nazywającej się python-smbus. Aby zainstalować bibliotekę wystarczy wpisać w linii komend:
sudo apt-get install python-smbusPo skopiowaniu poniższy skrypt zapisać trzeba jako pylcdlib.py.
Kod: Python
A program główny wygląda następująco:
Kod: Python
Ten krótki skrypt zapisujemy jako test_lcd.py i wpisujemy w linii komend:
sudo python test_lcd.pyUwaga
Jeśli korzystacie z Raspberry Pi rev 2.0 to trzeba zmienić interfejs I²C z którego korzysta program. Moduły Rev 1 korzystają z interfejsu 0, a rev 2 z interfejsu 1, zatem w powyższym programie trzeba zmienić linijkę "lcd = pylcdlib.lcd(0x21,0)" na "lcd = pylcdlib.lcd(0x21,1)".
Źródło: http://www.rpiblog.com/2012/07/interfacing-16x2-lcd-with-raspberry-pi.html
Fajne? Ranking DIY