PythonでTENORI-ONを動かすblog(仮)

PythonでMIDIを作ってYAMAHAのTENORI-ONをごにょごにょするよ。

MaixduinoのMaixPyでGPIO制御

※理解が正しくない部分など、ちょいちょい加筆・修正しています

 

前回、MaixduinoでMaixPyからESP32よぶにはシリアル通信が必要と書きましたが、間違いでした。。

 

どうもこれが正解のようです。。

  • ANALOG IN(A0〜5)はArduino IDE使わないとダメ
  • DIGITAL/PWMはMaixPyを使う

 

読むべき資料

SipeedのGitHubから以下の資料を入手する

  • maixduino_pins.png
    • 青枠の数字を"IO"はつけずに定義してやればOK
    • 定数もあるけれど資料と合ってない部分があったので、かえってつまづくかも
  • MaixDunio(Pin assignment table).xlsx
    • 前述の青枠の数字の代わりに、Functionの定数を使うこともできる
    • しかし、print(board_info.LED_R) で戻ってきたのが13ではなく14だった(あれ?)

その他、MaixPyで下記を実行すると、ピンに割り当てる機能の定数が確認できる。(fm.fpioa.GPIO0など)

from fpioa_manager import fm
print(fm.fpioa.help())

 コード

ボードの9番ピンからLEDを光らせるだけですが。

import time
from Maix import GPIO
from fpioa_manager import fm

# ボードの9番にLEDを繋いで光らせる場合
fm.register(13, fm.fpioa.GPIO0)
led_1 = GPIO(GPIO.GPIO0, GPIO.OUT)

flg=0
while(1):
    led_1.value(flg)
    if flg==0:
        flg=1
    else :
        flg=0
    time.sleep(1)

ハマった点

ESP32のFWは通常と異なるので、Arduino IDEでも通常のESP32のコードの流用はできないこともある。

  • ArduinoIDEでledcSetupなど対応していないメソッドを呼ぶと、ESP32が延々再起動する
  • ArduinoIDEはanalogWriteもコンパイルエラーになった。
  • analogReadは動く。(逆にMaixPy上で動かせない)

homemadegarbage.com

MaixPyのPWM制御はトラ技にあったので、こちらを参考にしようと思います。

cc.cqpub.co.jp

GPIOのピンアサインさえわかれば、あとはM5StickVでググるのが吉。

 

・・・そういえばBLEって使えないんですかね。

まぁ、通常のESP32のようなことがしたいなら、M5Atom LiteかM5StickCと接続した方が良い気もします。

www.switch-science.com