MicroPythonでmicrobitのGrove Shieldに接続したGrove LEDを、USBシリアル通信を通して光らせるには、以下の手順を実行します(制御側はPC側)。
実行手順
1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo dnf -y install python3
sudo pip3 install --upgrade pip
sudo pip3 install --upgrade setuptools
sudo pip3 install pipenv
echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc
source ~/.bashrc
2. pyserialのインストール
以下のコマンドでpyserialをインストールした仮想環境を作成します
mkdir -p ~/pyserial
cd ~/pyserial
pipenv --python 3
pipenv install pyserial
pipenv shell
3. PC側送信プログラムの保存
以下をcontrol_led.pyとして保存します。
import serial
import time
try:
ser = serial.Serial('/dev/ttyACM0',115200,timeout=None)
ser.write(b"led_on")
time.sleep(3)
ser.write(b"led_off")
finally:
ser.close()
4. micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *
uart.init(115200)
display.show(Image.HEART)
while True:
line = uart.readline()
if line == b'led_on':
pin0.write_digital(1)
if line == b'led_off':
pin0.write_digital(0)
if button_a.is_pressed() and button_b.is_pressed():
display.clear()
break
sleep(1000)
uart.init(115200)
5. PC側の受信プログラムの実行
シェルで以下を実行後、LEDが3秒間点灯後に消灯することを確認します。AボタンとBボタンを同時押してmicro:bit側のプログラムを終了します。
python control_led.py
関連情報
・Thonnyに関する記事は、こちらを参照してください。
・Micro:bitに関する記事は、こちらを参照してください。
・Groveデバイスまとめ