稼働中

マイクロビット(m_22)SSD1306 OLED(2)

micro:bit_ssd1306 ライブラリー

(3)ssd1306_px.py

ssd1306_px.pyには「set_px, screen, set_pos, get_px, i2c, pack_into」の関数が含まれています。

(l-05)set_px(x, y, color, draw=1)
64×32 座標の位置 x, y の画素を点灯します(0は暗い、1は明るい)。

(l-06)get_px(x, y)
指定されたピクセルの状態を返します(0暗 1明)設定した値。

サンプルスクリプト

set_px, get_pxのサンプルスクリプトです。「ssd1306_px.py、ssd1306.py」を使うのでmicrofsでモジュールを送ります。※microfsについてはm-20の記事「(d-20)microfsモジュール」を参照ください。※thonny-microbitのMicroPythonを使っています。

①set_pxの指定位置を点灯、draw_screenの動作確認


from microbit import *
from ssd1306_px import set_px, get_px
from ssd1306 import draw_screen, initialize, clear_oled
initialize()
clear_oled()
# set_px(64,32) 
set_px(10,10,1)     # 表示される
set_px(20,0,1,0)    # draw_screen まで非表示(バッファーに保存)
set_px(20,10,1,0)   # draw_screen まで非表示(バッファーに保存)
set_px(20,20,1,0)   # draw_screen まで非表示(バッファーに保存)
set_px(20,30,1,0)   # draw_screen まで非表示(バッファーに保存)
sleep(2000)
set_px(10,10,0)     # 非表示される
sleep(2000)

a=get_px(20,20)      # バッファーのデータでも’1’が返る
print(a)
draw_screen()
b=get_px(20,20)      # バッファーデータ4点が表示される
print(b)
sleep(2000)
clear_oled()

実行結果①
以下が実行結果になります。


>>> %Run my_ssd1306_02_px_01.py
1             # バッファーのデータでも’1’が返る
1            # draw_screen()後 ’1’が返る
>>> 

表示結果①

②set_px表示領域(64×32)を確認


from microbit import *
from ssd1306_px import set_px, get_px
from ssd1306 import draw_screen, initialize, clear_oled

initialize()
clear_oled()
# set_px(64,32) 127,63
for x in range(0,64,4):
    for y in range(0,32,4):
        set_px(x,y,1)      # on disp
        sleep(100)

実行結果②
以下が実行結果になります。左列から順に4pxピッチで点灯しています。表示領域の確認ができました。
表示結果②

まとめ

ライブラリーmicro:bit_ssd1306 のssd1306_px.pyを使って画面にドットを表示しました。