Dziś mały wstęp do pracy z Raspberry Pi i LCD OLED o rozdzielczości 128×64 i przekątnej 0,96″ na szynie I2C.

Zakupiłem całkiem tani i całkiem mały wyświetlacz OLED który jest prosty w obsłudze i można na nim zrealizować wiele projektów. Działa on na szynie I2C i domyślnie zgłasza się na adresie 3c. Instalacja sprowadza się do podłączenia zasilania 3.3V, GND, SDA i SCL do Raspberry Pi. Jak widać poniżej piny są oznaczone więc nie ma problemu z podłączeniem. Oczywiście piny Raspberry Pi są do sprawdzenia np. tu.

techfreakpl_raspberrypi_oled_ssd1306_1 techfreakpl_raspberrypi_oled_ssd1306_2

Po wydaniu polecenia listującego urządzenia podłączone pod szynę I2C powinien pojawić się adres jak poniżej.

root@Zero1:~# i2cdetect -y 1
 0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Sterowniki

Bez odpowiednich bibliotek nie ruszymy dalej! Ja znalazłem na tym githubie co trzeba zainstalować aby z powodzeniem używać OLED’a. W skrócie trzeba wykonać poniższe instalacje:

sudo apt-get install i2c-tools python-smbus python-pip libjpeg-dev
sudo pip install pillow
git clone https://github.com/rm-hull/ssd1306
cd ssd1306
sudo python setup.py install

Po poprawnej instalacji można odpalić przykłady

cd examples
python sys_info.py

techfreakpl_raspberrypi_oled_ssd1306_3

Dalej można już tylko się bawić!

techfreakpl_raspberrypi_oled_ssd1306_4 techfreakpl_raspberrypi_oled_ssd1306_5 techfreakpl_raspberrypi_oled_ssd1306_6
Przykładowy kod który wyświetla napis nettemp.pl, który został dopisany do kodu sys_info.py z przykładów:

font = ImageFont.load_default()
 font2 = ImageFont.truetype('../fonts/C&C Red Alert [INET].ttf', 30)
     with canvas(oled) as draw:
     draw.text((10, 15), 'nettemp.pl', font=font2, fill=255)

Rysowanie tekstu odbywa się przy pomocy ustawienia kursora w odpowiednim miejscu i narysowanie go odpowiednią czcionką i wielkością. Ja ustawiłem wielkość 30, i zmieniłem wartości draw.text((0, 0) na draw.text((10, 15).

Sam dopiero zaczynam z tym wyświetlaczem może coś jeszcze o nim napiszę :) Dawajcie znać jak wam idzie :)