はじめに
micro:bit Advent Calendar 2020 6日目の「micro:bit v2 用 MicroPython で新機能を試してみる」を書いたときには V2用MicroPython は beta-2 でしたが、早くも12月21日に beta-3 が出たので新機能や変わったところを試してみました。
タッチセンサーのモードの変更
端子 0, 1, 2 を静電容量式のタッチセンサーに変更できる set_touch_mode()
メソッドが追加になりました。これでロゴ以外でも GND 端子に触れることなくタッチセンスできるようになります。
from microbit import *
touch_pin = pin0
touch_pin.set_touch_mode(touch_pin.CAPACITIVE) # 静電容量
#touch_pin.set_touch_mode(touch_pin.RESISTIVE) # 抵抗膜
while True:
if touch_pin.is_touched():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
一方、ロゴのほうを抵抗膜式に変更できるかというと、それはうまくいきませんでした。
アセンブラ関数
V1 にはあったアセンブラ関数が V2 でもサポートされました。以下は簡単な整数の足し算の例です。
from microbit import *
@micropython.asm_thumb
def asm_add(r0, r1):
add(r0, r0, r1)
display.show(asm_add(1, 2))
スピーカ関連の変更
以前の記事で、内蔵スピーカーと外付けのスピーカーの両方を指定するAPI仕様が正式にサポートされるか微妙と書いていましたが、beta-3 では廃止となりました。
デフォルトで内蔵スピーカーと端子 0 から音が出るのは今までどおりです。
内蔵スピーカーを有効/無効にする speaker.on()/off()
が追加になりました。
from microbit import speaker
import music
speaker.off() # 内蔵スピーカーを無効にする
music.play(music.PYTHON) # 端子0に繋いだスピーカーからだけ音が出る
内蔵スピーカーからだけ音を出すようにする(端子0 を別の目的に使えるようにする)には次のようにします。
import music
music.play(music.PYTHON, pin=None)
端子1や2に繋いだスピーカからだけ音を出すには次のようにします。
from microbit import speaker, pin1, pin2
import music
speaker.off()
music.play(music.PYTHON, pin=pin1) # 端子1に繋いだスピーカーの場合
music.play(music.PYTHON, pin=pin2) # 端子2に繋いだスピーカーの場合