boot.pyをこんな感じにすると、GPIO6につけたスイッチを押してUSB接続すると、switch.valueがFalseとなり通常のドライブが見れる状況。 スイッチを押さずに起動すると、PCにpicoのドライブが表示されない。 import os import storage import board import digitalio switch = digitalio.DigitalInOut(board.GP6) switch.direction = digitalio.Direction.INPUT switch.pull = digitalio.Pull.UP if switch.value: #NormalMode storage.disable_usb_drive() else : #Maintance pass ドライブが表示されないなどPCからPICOのストレージに書き込みができない場合には、circuitpythonからストレージに書き込み可能となる。 これを使って状態の永続化をする。 pythonはjson形式文字列をそのまま辞書として保持できるみたいなので、こんな感じで辞書変数のdataをdata.jsonのファイルで出力して、 import json # 永続化したいデータ data = { "name": "Taro", "age": 30, "city": "Tokyo" } # JSONファイルにデータを書き込む with open('data.json', 'w', encoding='utf-8') as file: json.dump(data, file) data.jsonからデータを読み取り、更新してファイルに出力するのはこんな感じ。 import json # JSONファイルからデータを読み込む with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) print(data) data['age']+=1 # JSONファイルにデータを書き込む with open('data.json', 'w', encoding='utf-8') as file: json.dump(data, file) boot.pyからcode.pyの情報連携のやり方がわからず、PCから書き込み可能モードだとboot.pyからもファイル出力ができなさそう。 なので、data書き込みをしてみて、エラーになったらメンテナンスモードと判断しようかな。 2025/3/2 追記:JSONのやり取りはすごく遅いので、普通のファイル入出力の方がよさそう。
2025年2月9日日曜日
circuitpythonでストレージ非表示、データ永続化、
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿