稼働中

マイクロビット(m_21)SSD1306 OLED(1)

micro:bit_ssd1306 ライブラリー

OLED SSD1306 128×64のディスプレイをmicro:bitのmicropythonで簡単に使えるライブラリーがあります。試してみたので記載します。

OLED SSD1306は3.3Vから動作するので直接micro:bitと接続できます。I2C接続するだけです。そのため、接続図などは省きます。

SSD1306

micro:bit_ssd1306ライブラリーの入手

library micro:bit_ssd1306 は「https://github.com/fizban99/microbit_ssd1306」から入手できます。
右上のCode>Download ZIPをクリックします。

ダウンロードサイト

ファイル名「microbit_ssd1306-master.zip」がダウンロードされます。

microbit_ssd1306-master

「microbit_ssd1306-master.zip」を解凍すると「microbit_ssd1306-master」のフォルダーに以下のファイルが入っています。
私は、フォルダ名を「ssd1306」に変更してThonnyのワークホルダに移動しました。

ZIPの中身

Thonnyのメニューバーから「Tools > Open system shell」を使って「ssd1306.py」など、使用するファイルをmicro:bitへ送って使います。マイクロビットのメモリが少ないためか、使う機能だけをmicro:bitへ送るように小分けになっているようです。
ssd1306.py                          初期化、画面クリアなど必須のモジュールです。
ssd1306_bitmap.py           bitmapの表示
ssd1306_effects.py            表示のパルス効果、点滅
ssd1306_img.py                 micro:bitのImageからstamp作成
ssd1306_px.py                   ドット単位で表示
ssd1306_stamp.py             micro:bitのImageから作成したstampを表示
ssd1306_text.py                 文字を表示

(1)ssd1306.py

ssd1306.pyには「set_pos, draw_screen, ADDR, set_zoom, command, zoom, screen, i2c, clear_oled, initialize」の関数が含まれています。

ADDR OLED SSD1306のスレーブアドレスが定義されています。ADDR = 0x3C

(l-01)initialize()     初期化します
(l-02)clear_oled()     画面をクリアします
(l-03)draw_screen()     set_px、add_text、draw_stampでセットした画像の表示

(2)ssd1306_bitmap.py

ssd1306_bitmap.pyには「set_zoom, command, show_bitmap, set_pos, ADDR, i2c」の関数が含まれています。

(l-04)show_bitmap(filename)
filenameの画像を画面に表示します。画像はエンコードされている必要があります。

\ssd1306\sample_images\microbit_logoにある’microbit_logo’を表示してみます。
’microbit_logo’はエンコードされています。

sample

サンプルスクリプト

’microbit_logo’を表示するスクリプト例です。※thonny-microbitのMicroPythonを使っています。


from ssd1306 import initialize, clear_oled
from ssd1306_bitmap import show_bitmap

initialize()
clear_oled()
# 128x64 1BPP siro-kuro
show_bitmap("microbit_logo") 
#clear_oled()

microfsでモジュールを送る

「ssd1306.py、ssd1306_bitmap.py、\ssd1306\sample_images\microbit_logo」を使います。
そのためmicrofsを使ってmicro:bitへ送ります。※microfsについてはm-20の記事「(d-20)microfsモジュール」を参照ください。

Thonnyのメニュー「Tools > Open system shell」でターミナルを開きます。micro:bitがつながっている場合は「Device > Close serial connection」で切り離します。
Thonnyのワークディレクトリから「ssd1306」ディレクトリに移動して中身を見ます。

フォルダ内

「ssd1306.py、ssd1306_bitmap.py、microbit_logo」をufs putを使ってmicro:bitへ送ります。


\ssd1306>ufs put ssd1306.py
\ssd1306>ufs put ssd1306_bitmap.py

\ssd1306>cd sample_images
\ssd1306\sample_images>ufs put microbit_logo
\ssd1306\sample_images>

micro:bitにファイルが送られたか確認します。ufs lsで確認できます。


\ssd1306\sample_images>ufs ls
ssd1306_bitmap.py ssd1306.py microbit_logo

実行結果

以下が実行結果になります。
’microbit_logo’が表示されました。私が購入したOLEDディスプレイは1行目は黄色のようです。

microbit_logo

まとめ

ライブラリーmicro:bit_ssd1306 のssd1306.py、ssd1306_bitmap.pyを使って画面にmicrobit_logoを表示しました。