デジタル入出力(GPIO)¶
一般的なデジタル入力系の関数群です。
利用例¶
メンバー¶
ピンモード設定 pinMode()¶
指定したピンのモードを設定する。
GPIO_NUM_34-39はINPUTかANALOGにのみ設定可能です。OUTPUTやINPUT_PULLUP、INPUT_PULLDOWNなどは利用できません。
ANALOGは特定のPINでのみ設定可能です。無線を利用するとADC2に接続したPINは利用できなくなるので、ADC1に接続したPINを利用してください。
void pinMode(uint8_t pin, uint8_t mode)
引数
- uint8_t
pin
指定するpin - uint8_t
mode
設定するモード- INPUT : デジタル入力
- INPUT_PULLUP : プルアップ入力
- INPUT_PULLDOWN : プルアップ入力
- OUTPUT : デジタル・アナログ出力
- OUTPUT_OPEN_DRAIN : オープンドレイン出力
- ANALOG : アナログ入力
利用例
pinMode(0, OUTPUT); // pin0を出力モードにする
デジタル出力 digitalWrite()¶
指定したピンの電圧を設定します。
void digitalWrite(uint8_t pin, uint8_t val);
引数
- uint8_t
pin
指定するpin - uint8_t
val
設定するモード(HIGH, LOW)
利用例
digitalWrite(0, HIGH); // pin0を3.3V出力にする
デジタル入力 digitalRead()¶
指定したピンの電圧を取得します。
int digitalRead(uint8_t pin);
引数
- uint8_t
pin
指定するpin
戻り値
HIGH:1.65V以上, LOW:1.65V未満
利用例
int val = digitalRead(0); // pin0の値を取得
割り込みハンドラ設定 attachInterrupt()¶
指定したピンに割り込みハンドラを設定する。
void attachInterrupt(uint8_t pin, void (*)(void), int mode);
引数
- uint8_t
pin
指定するpin - void (*)(void) コールバック関数
- int
mode
モード(DISABLED, RISING, FALLING, CHANGE, ONLOW, ONHIGH, ONLOW_WE, ONHIGH_WE)
利用例
volatile byte state = LOW;
void setup() {
pinMode(0, INPUT_PULLUP);
attachInterrupt(0, blink, CHANGE);
}
void loop() {
}
void blink() {
state = !state;
}
割り込みハンドラ設定(構造体) attachInterruptArg()¶
指定したピンに割り込みハンドラを設定する。 割り込み関数内部は通常と動作環境が違うので注意が必要です。
void attachInterruptArg(uint8_t pin, void (*)(void*), void * arg, int mode);
引数
- uint8_t
pin
指定するpin - void (*)(void) コールバック関数
- void *
arg
構造体 - int
mode
モード(DISABLED, RISING, FALLING, CHANGE, ONLOW, ONHIGH, ONLOW_WE, ONHIGH_WE)
利用例
struct StatusData {
byte state;
};
StatusData pin1 = {LOW};
void setup() {
pinMode(0, INPUT_PULLUP);
attachInterrupt(0, blink, pin1, CHANGE);
}
void loop() {
}
void blink(void* arg) {
StatusData* s = static_cast<StatusData*>(arg);
s->state = !s->state;
}
割り込みハンドラ削除 detachInterrupt()¶
指定したピンの割り込みハンドラを削除する。
void detachInterrupt(uint8_t pin);
引数
- uint8_t
pin
指定するpin
利用例
detachInterrupt(0);