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 time
from 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 = 0
while 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

このブログの人気の投稿

windowsで「インターネット接続の共有」の設定

月刊 I/O 記事リスト 1976~1989

X68000実機のROMを保存