Seeed K.K. エンジニアブログにも記事をポストしていますが、雑多な感じのものはこっちの個人ブログへポストすることにします。
今回は、デジタル入力を確認しましょう。
ハードウェア
デジタル出力のときと同様、(電源を除いた)全ピンで入力できるようです。
なので、D0にタクトスイッチ経由で3V3(3.3V)に結線し、かつ、D0を抵抗経由でGNDに結線しました。
ソフトウェア
タクトスイッチを押したときに、オンボードの黄色LEDを点灯するコードを作成しました。
オンボードの黄色LEDは13で、論理が反対(LOWで点灯)なので注意してください。
constexpr int BTN = 0; // D0 constexpr int LED = 13; // YELLOW_LED void setup() { pinMode(BTN, INPUT); pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, digitalRead(BTN) ? LOW : HIGH); }
実行!
タクトスイッチを押すと、黄色LEDが点灯しました。(動画は割愛w)
プルアップ/プルダウン抵抗って省略できないの?
SAMD21マイコンのPORTには、内蔵プルアップ/プルダウンの機能があります。
↓データシートから抜粋
Platformにも、それらしい定義があるので試してみることに。
ハードウェアはこちら。プルダウン抵抗を取っ払いました。
ソフトウェアは、pinMode()で指定していたINPUT
をINPUT_PULLDOWN
にしました。
constexpr int BTN = 0; // D0 constexpr int LED = 13; // YELLOW_LED void setup() { pinMode(BTN, INPUT_PULLDOWN); // <--- pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, digitalRead(BTN) ? LOW : HIGH); }
結果、ちゃんと動作しましたー
おしまい。