3. GPIO
本章では、GPIOとして、デジタル信号の入力出力を行う方法を説明します。
ここでは、以下のようなスイッチとLEDの付いた回路を制御できるようにします。
3.1. Arduino
Arduinoでの利用方法を解説します。 サンプルコードは以下のリポジトリにあります。
https://github.com/74th/ch32v003-book-code/tree/main/blink_and_read-arduino_core_ch32
まず、各GPIOの値を取得する前に、GPIOの各ピンの設定をする必要があります。
ArduinoではpinMode
関数を使って、GPIOの設定を行います。
例えば、入力と出力の設定は以下のように記述できます。
void setup()
{
// 出力
pinMode(PC0, OUTPUT);
// 入力
// INPUT: フローティング
// INPUT_PULLUP: プルアップ
// INPUT_PULLDOWN: プルダウン
pinMode(PA1, INPUT_PULLUP);
}
pinModeの第2引数に、種別を指定します。
OUTPUT
: 出力INPUT
: 入力、フローティングINPUT_PULLUP
: プルアップを有効にした入力INPUT_PULLDOWN
: プルダウンを有効にした入力
次に値を取得したり、出力するにはdigitalWrite
とdigitalRead
を使います。
たとえば、LEDの点滅をしたり、ボタンの入力を取得する実装は以下となります。
void loop() {
// ボタンが押されるとLOWになる
bool btn = digitalRead(PA1);
if (!btn)
{
delay(1000);
return;
}
digitalWrite(PC0, HIGH);
delay(500);
digitalWrite(PC0, LOW);
delay(500);
}
digitalWrite()
の第2引数には、HIGH
またはLOW
を指定、もしくはbool値の値を入力します。
digitalRead()
の戻り値は、HIGH
またはLOW
のbool値です。