ボタンを押している間だけLED点滅をさせてみる
Arduino Uno Rev.3を購入したので前回のブログ記事で、さっそくLチカ(LED点滅)を試してみた。
前回はGPIOをOUTPUTに設定して5Vを出力することでLチカしていたのだが、GPIOのINPUTも使ってみたい。ということで今回はボタン(タクトスイッチ)を押している間だけLチカする回路をつくり、コードを書いてみる。
ちなみにボタンは以下のRaspberry Piのキットについてきたものだが、大体どのタクトスイッチも同じような構造だと思う。
ボタンの内部構造などについてはSunfounder社のWebサイトに書いてある。
開発環境
Arduino Uno R3
Windows 10(開発用PC)
Arduino IDE 1.8.19
ブレッドボードに回路をつくる
今回は以下のような回路にした。ArduinoのGPIOのD2ピンを5Vでプルアップしているため、ボタンを押していないときはD2がHIGH、ボタンを押しているときはD2がLOWになる。LEDについては前回と同じくGPIOのD7ピンから5Vを出力することで光らせる。
ブレッドボードに接続してみたのが以下の図。
以下が実際に繋いでみた写真。これで準備完了。LEDが白だったり、ボタンがデカくて足を挿す位置がちょっとだけ違ったりしてるけど、電気的な接続は上のブレッドボードの回路と同じ。
Lチカのプログラムを書いて実行する
今回は以下のようなコードを書いて、ボタンが押されている間だけLEDが点滅するようにした。
int led_pin = 7; int button_pin = 2; void setup() { pinMode(led_pin, OUTPUT); pinMode(button_pin, INPUT); } void loop() { while(digitalRead(button_pin) == LOW) { digitalWrite(led_pin, HIGH); delay(500); digitalWrite(led_pin, LOW); delay(500); } digitalWrite(led_pin, LOW); }
GPIO7を0.5秒(500m秒)ごとにHIGH/LOW繰り返すことでLEDを点滅させるのは前回と同じだが、GPIO2がLOWの間(つまりボタンが押されている間)だけボタンが点滅するようになっている。また、ボタンが押されていない場合はGPIO7はLOWに固定してLEDが光らないようにしている。
あとは前回と同じ手順でArduinoに書き込めばOK。以下が実際に光っている様子。
そういえばまだArduinoでGPIOの入力は使ってなかったな〜と思いテスト。ボタンを押している間だけLチカ。満足したので寝る💤 pic.twitter.com/reATvLzyLK
— Wakky (@wakky_free) May 18, 2022
GPIOの入力、出力の使い方についてはざっくり理解することができた。次回はライブラリを使って、手持ちのLCD(液晶ディスプレイ)に文字を表示させてみたいと思う。
日記まとめ
Arduinoで遊んでみた軌跡を以下でまとめてます。