MicroPythonでコードを書く時にPythonで普段書いている文法が使えなかったりします。
その理由はMicroPythonは軽量化の為に古いバージョンのPythonをベースに作られた言語になっていまして、最近のPythonで導入された文法が未対応になっています。
MicroPythonのバージョンを把握しておくことで、Python的には正しいコードを書いたはずなのに何故かエラーになる症状に陥った時に速やかに原因を特定できるようになります。
今回はMicroPythonのバージョンの確認方法について見ていきます。
マイクロビットの5×5ディスプレイで確認する方法
from microbit import * import sys display.scroll(sys.version)
この書き方だとバージョンの番号が読みにくいので、

マイクロビットでLCDキャラクターディスプレイを使ってみるで使用したLCD1602を使ってみます。
from microbit import *
import sys
class LCD1602:
def __init__(self, addr=0x27):
self.addr = addr
# バックライトONフラグ (0x00にするとオフ)
self.bl = 0x08
sleep(50)
# 4bitモードへの初期化シーケンス
for val in [0x30, 0x30, 0x30, 0x20]:
self._write_half(val)
sleep(5)
# 基本設定命令
self.send_command(0x28) # 2行表示, 5x8ドット
self.send_command(0x0C) # 画面ON, カーソルOFF
self.send_command(0x06) # 文字入力後カーソルを右へ
self.clear()
def _write_half(self, data):
# I2Cアダプタ経由で上位4bitを送信し、Enable信号を振る
i2c.write(self.addr, bytes([data | self.bl | 0x04])) # Enable High
sleep(1)
i2c.write(self.addr, bytes([(data & ~0x04) | self.bl])) # Enable Low
sleep(1)
def send_command(self, cmd):
# 命令送信(上位4bit -> 下位4bitの順)
self._write_half(cmd & 0xF0)
self._write_half((cmd << 4) & 0xF0)
def send_data(self, data):
# データ送信(RSビットを立てる: 0x01)
self._write_half((data & 0xF0) | 0x01)
self._write_half(((data << 4) & 0xF0) | 0x01)
def clear(self):
self.send_command(0x01)
sleep(2)
def puts(self, s, x=0, y=0):
# 指定した座標(x, y)に文字列を表示
addr = 0x80 + x + (0x40 if y else 0)
self.send_command(addr)
for char in s:
self.send_data(ord(char))
lcd = LCD1602(addr=0x27)
while True:
lcd.puts("Python Version", 0, 0)
lcd.puts(sys.version, 0, 1)