MicroPythonで使うWio Terminal - machine.Pin (GPIO)
machine.Pin (GPIO) の使用例
# Wio Terminal machine.Pin (GPIO)のサンプル# This code is provided under a CC0 Public Domain License.# http://creativecommons.org/publicdomain/zero/1.0/# 2022年6月19日 佐藤恭一 https://kyoutan.jpn.org
import timefrom machine import Pin, Map
# 出力led = Pin(50, Pin.OUT) # 内蔵LEDが接続されている50番のGPIOを出力に設定led = Pin(Map.LED_BUILTIN, Pin.OUT) # 内蔵デバイスは machine.Mapで定義されているので、こう書くとらくちんled = Pin(Map.LED_BUILTIN, value=1) # 初期化と同時に出力値を指定することもできるled.init(Pin.IN, Pin.PULL_UP) # ピンの設定を変更する。入力出力を切り替えたりとかled.init(Pin.OUT)
led.on() # on / offでGPIOを操作できるtime.sleep(1)led.off()time.sleep(1)
led.value(1) # valueでもGPIOを操作できるtime.sleep(1)led.value(0)
# 入力buttonC = Pin(Map.WIO_KEY_C, Pin.IN) # GPIOを入力に設定(KEY_Cは左側のボタン)buttonC = Pin(Map.WIO_KEY_C, Pin.IN, Pin.PULL_DOWN) # プルダウンを指定することができるbuttonC = Pin(Map.WIO_KEY_C, Pin.IN, Pin.PULL_UP) # プルアップを指定することもできる
count = 0while True: # ボタンが押されてる時LEDを点灯させる。10回押したら次へ進む # led.value(buttonC.value()) # ボタンが押されている時にLEDを点灯させるだけならこの一行で良い if buttonC.value() == 0: # ボタンが押されたらLED点灯 led.on() count += 1 while buttonC.value() == 0: # ボタンが離されるまで待つ pass else: led.off() # ボタンが離されたらLED消灯
if count > 9: break time.sleep_ms(50) # print(count)led.off()
上のように簡単に使えます。
ピン番号はコネクタのピン番号(1~40)を使用します。
micropythonの標準ライブラリにある割り込み機能が Wio Terminalの ArduPyにはありませんでした。残念。
割り込みが使えないと、用途がけっこう限定されちゃう。
machine.Pinの関数一覧
>>> import machine>>> help(machine.Pin)object <class 'Pin'> is of type type init -- <function> value -- <function> off -- <function> on -- <function> IN -- 0 OUT -- 1 PULL_UP -- 2 PULL_DOWN -- 3 IRQ_RISING -- 4 IRQ_FALLING -- 3 IRQ_CHANGE -- 2
>>> help(machine.Map)object <class 'Map'> is of type type LED_BUILTIN -- 50 WIO_BUZZER -- 51 WIO_LIGHT -- 52 WIO_MIC -- 53 WIO_IR -- 54 WIO_KEY_A -- 55 WIO_KEY_B -- 56 WIO_KEY_C -- 57 WIO_5S_UP -- 58 WIO_5S_DOWN -- 61 WIO_5S_LEFT -- 59 WIO_5S_RIGHT -- 60 WIO_5S_PRESS -- 62 A0 -- 13 A1 -- 15 A2 -- 16 A3 -- 18 A4 -- 22 A5 -- 32 A6 -- 33 A7 -- 36 A8 -- 37 DAC0 -- 11 DAC1 -- 26 WIRE -- 0 WIRE1 -- 1 SPI -- 0 SPI1 -- 1 SPI2 -- 2 SPI3 -- 3 UART1 -- 1 UART2 -- 2