2022/05/05
マイクロビット(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を使って画面にドットを表示しました。