本記事の内容
Seeeduino xiao初心者向けに、Seeeduino xiao RP2040でGPIO機能を使用する方法をおさらいします。
GPIO入力と出力について、実際のMicroPythonコードを解説しながら、実行結果を確認していきます。
GPIOピンとは
GPIOピンとは、General Purpose Input/Outputピンの略であり、日本語にすると汎用IOピンになります。すなわち、プログラム次第で、入力でも出力でも自由に決められるピンになります。
具体的な使用方法としては、GPIOピンとGNDの間にLEDと抵抗を挟み、GPIOピンに出力を命じてLEDを光らせる用途が挙げられます。また、GPIOピンに入力を命じて、センサで取得した値を読み取ることもできます。
Seeeduino xiao RP2040ではGPIOピンとして、P0~P7(P5は除く)とP26~P29の計11本がMicroPythonで指定できます。P5とP8~P25は番号が飛んでいるので注意が必要です。
Raspberry Pi Picoとの比較
MicroPythonを書き込めるマイコンボード同士、Seeeduino xiao RP2040とRaspberry Pi Picoで各ピンの本数を比較してみました。
Seeeduino xiao RP2040 | Raspberry Pi Pico | |
ピン総数 | 14本 | 40本 |
GPIO | 11本(P0~P7とP26~P29、P5は除く) | 26本(GP0~GP22とGP26~GP28) |
電源 | 5Vと3.3V | 5Vと3.3V |
GND | 1本 | 8本 |
通信規格 | I2C×1、SPI×1、UART×1 | I2C×2、SPI×2、UART×2 |
Seeeduino xiao RP2040とRaspberry Pi Picoとの大きな違いは、
- GPIOピンが半分以下で、ピン総数は約1/3
- GNDは1本のみ
- 通信規格は各1系統のみ
です。ちなみに真ん中については、GNDが何本だろうが結局は0Vに繋がれば問題ありません。
1点目については、用途次第です。正直なところ、私はそれほど多くのGPIOピンを一度に使用したことはありません。ピン総数も少ないに越したことはないと考えています。
ただし、3点目については時たま不便に感じることがあります。I2C通信のセンサで取得した値をI2C通信のディスプレイで表示しようものなら、Raspberry Pi PicoでないとI2Cの系統数が足りません。
とはいえ、Raspberry Pi PicoでI2C通信を同時に2系統使ったとしても最大8ピンしか使用しないので、結局は40ピンの半分も使いきれないのが現状です。
GPIO入力・出力の使い方
ここからは実際にSeeeduino xiao RP2040でGPIOピンを使用するためのプログラムコードと実行結果を見ていきます。
GPIO出力(machine.Pin.OUT)
GPIO出力については以下の3行で簡単に実行できます。
import machine
led = machine.Pin(1, machine.Pin.OUT)
led.value(1)
1行目はmachineライブラリのインポートを意味します。GPIOピンを使用するには、まずはmachineライブラリを読み込む必要があります。
2行目で、使用するGPIOピンと入力/出力を指定します。今回はP1を出力で指定しました。Seeeduino xiao RP2040で指定できるピンは、P0~P7(P5は除く)とP26~P29です。
3行目でP1に3.3Vの出力を実行しています。”.value(0)”とすれば、出力を0Vにすることもできます。
GPIO入力(machine.Pin.IN)
続いて、Seeeduino xiao RP2040でGPIO入力を実行したいと思います。GPIO入力についても、以下の3行で簡単に記述できます。
import machine
inn = machine.Pin(1, machine.Pin.IN)
print(inn.value())
1行目については、GPIO出力と違いありません。同じくmachineライブラリを読み込みます。
2行目で使用するGPIOピンと、入力を指定します。今度はP1を入力で指定しました。こちらも、Seeeduino xiao RP2040で指定できるのは、P0~P7(P5は除く)とP26~P29です。
3行目では読み取った値を表示しています。入力電圧が少しでもあれば「1」、0Vであれば「0」と表示されます。
まとめ
Seeeduino xiao RP2040で使用できるGPIO機能は以下の通りです。
GPIO出力 | GPIO入力 | |
プログラムコード | machine.Pin(1, machine.Pin.OUT) | machine.Pin(1, machine.Pin.IN) |
指定できるピン | P0~P7(P5は除く)とP26~P29 | 同左 |
備考 | “value(1)”で出力3.3V “value(0)”で出力0V | 入力0V以上で「1」 入力0Vで「0」 |
コメント