Raspberry Pi Pico の main.py を実行していると Thonny が認識できない問題
解決したいこと
Raspberry Pi Pico を MicroPython で使用していて、main.py で自動実行させていると、後日プログラムに手を入れようとして PC(MacBook Pro) にUSB接続すると、main.py が動いて、while True: のループのためか、Thonny が Pico に接続できない問題があります。
解決方法を教えていただければ助かります。
発生している問題・エラー
main.py が設定されている Pico を接続し、Thonny を起動すると、下には次のエラーが表示され、停止ボタンも機能しません。
Device is busy or does not respond. Your options:
- wait until it completes current work;
- use Ctrl+C to interrupt current work;
- use Stop/Restart to interrupt more and enter REPL.
該当するソースコード
一応、time.sleep() を入れていますが、システムの割り込み(?)ができないのでしょうか?
import machine
import ssd1306
import time
import sys
from bme280 import BME280
sda = machine.Pin(0)
scl = machine.Pin(1)
i2c = machine.I2C(0,sda=sda, scl=scl, freq=400000)
bme = BME280(i2c = i2c)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
def sensor_read():
oled.init_display()
t, p, h = bme.read_compensated_data()
p = p // 256
pi = p // 100
pd = p - pi * 100
hi = h // 1024
hd = h * 100 // 1024 - hi * 100
oled.text("Temp: ", 0, 5)
oled.text(str(t)+"C", 40, 5)
oled.text("Pres: ", 0, 25)
oled.text(str(pi)+"."+str(pd)+"hPa", 40, 25)
oled.text("Hum: ", 0, 45)
oled.text(str(hi)+"."+str(hd)+"%", 40, 45)
oled.show()
if __name__ == '__main__':
while True:
try:
sensor_read()
except KeyboardInterrupt:
sys.exit()
time.sleep(5)
自分で試したこと
ネットで検索して rshell を試してみたのですが、同様に main.py が動作していると接続待ちとなりました。
また、新たに UF2 ファイルをインストールしてみたのですが、Pico には(見えないけど) main.py が残っていて解決しませんでした。
しょうがないので、センサーを外してプログラムがエラー停止することで凌いでいます。
何か、他に方法はないのでしょうか?
2