【電子工作】Arduinoでボタン(タクトスイッチ)を押している間だけLチカをする(Arduino UNO R3で遊ぼう日記 その2)

投稿日:2022年5月25日
最終更新日:2022年6月4日

ボタンを押している間だけ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。以下が実際に光っている様子。

GPIOの入力、出力の使い方についてはざっくり理解することができた。次回はライブラリを使って、手持ちのLCD(液晶ディスプレイ)に文字を表示させてみたいと思う。

 

日記まとめ

Arduinoで遊んでみた軌跡を以下でまとめてます。

【電子工作】Arduino UNO R3で遊ぼう日記 まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください