見出し画像

スイッチを使ってLEDを点灯、消灯させよう!~プルアップとプルダウン~

 こんにちは、タクト工房へようこそ!今回は、Raspberry Piを使ってスイッチでLEDを点滅させるプロジェクトに挑戦します。


プロジェクトの概要

 このプロジェクトでは、スイッチを使ってLEDを制御します。スイッチを押すとLEDが点灯し、スイッチを離すとLEDが消える仕組みを作ります。また、プルアップ抵抗とプルダウン抵抗の違いを理解し、実際の回路に組み込んでみましょう。

必要な材料と道具

  • Raspberry Pi

  • ブレッドボード

  • LED

  • 抵抗

  • タクタイルスイッチ

  • ジャンパーワイヤー

タクタイルスイッチとは

 タクタイルスイッチは、ボタンを押している間だけ、ONになり、離すとOFFになるスイッチです。スイッチ端子の1番と2番は内部で接続され、3番と4番も同様に接続されています。簡単に記号で表すと下の図のようになります。

 プルアップ抵抗とプルダウン抵抗の概要と必要性

 スイッチやセンサーなどからRaspberry Piなどのマイコンに外部入力を行う際に、プルアップ抵抗やプルダウン抵抗を使用します。使用しないと、GPIOピンが未接続(フロート状態)になります。GPIOピンが未接続の場合、電圧が不安定になり、予期しない動作を引き起こす可能性があります。そのため、プルアップ抵抗やプルダウン抵抗を使用して、ピンを確実にHIGHまたはLOWの状態に保つことが重要です。

 プルアップ抵抗とは?

 プルアップ抵抗は、入力ピンを高い電圧(通常は3.3Vや5V)に接続するための抵抗です。GPIOピンが未接続の場合、入力はHIGHになります。

プルアップ(回路例)

 プルダウン抵抗とは?

 プルダウン抵抗は、入力ピンを低い電圧(GND)に接続するための抵抗です。これにより、GPIOピンが確実にLOW状態に保たれます。スイッチが押されると、ピンがVccに接続されてHIGH状態になります。

プルダウン(回路例)

 LEDの点灯、消灯

 では、実際にスイッチを使ってLEDを点灯・消灯させましょう。今回はプルダウン抵抗を使って回路を設計します。また、前回のプロジェクトで使用した3つのLEDを使った回路を再利用します。まだ見ていない方は、下の記事を参考にしてください。

回路設計

 配線は以下のように接続します。もし、RaspberryPiのピンの配置が分からない方は、下の記事を参考にしてください。


 プルダウン抵抗の大きさを決めていきたいと思います。RaspberryPiのGPIO21に流れる電流は小さいほうが電源の負荷が低減されるので、今回は流れる電流を1mAとします。オームの法則により、

$$
抵抗Ω=\frac{3.3V}{1.0×10^{-3}}=3.3kΩ
$$

とします。
 また、GPIOの内部抵抗を使う場合、今回でいう、GPIO21に接続されている抵抗を削除することができます。内部抵抗を有効にすると、GPIO21は上の図と同じように内部で抵抗と接続されます。これによって部品点数を減らすことができます。今回は内部抵抗を使わずやっていきます。

プログラム

 次に、Raspberry Piに以下のC言語コードを入力します。

#include <wiringPi.h>
#include <stdio.h>

#define RED_PIN 17    // GPIO 17
#define GREEN_PIN 27  // GPIO 27
#define BLUE_PIN 22   // GPIO 22
#define BUTTON_PIN 21

int main(void) {
    wiringPiSetupGpio();
    pinMode(RED_PIN, OUTPUT);
    pinMode(GREEN_PIN, OUTPUT);
    pinMode(BLUE_PIN, OUTPUT);
    pinMode(BUTTON_PIN,INPUT);
  //pullUpDnControl(BUTTON_PIN, PUD_DOWN);  内部抵抗を使う場合
    
    while (1) {
        if (digitalRead(BUTTON_PIN) == HIGH) {   // スイッチが押されたとき
            digitalWrite(RED_PIN, HIGH);
            digitalWrite(GREEN_PIN, HIGH);
            digitalWrite(BLUE, HIGH);  // LEDを点灯
        } else {
            digitalWrite(RED_PIN, LOW);
            digitalWrite(GREEN_PIN, LOW);
            digitalWrite(BLUE_PIN, LOW);   // LEDを消灯
        }
        delay(100);  // 100ミリ秒待機
     }

    return 0;
}

コンパイルと実行

 入力が完了したら、メニューの「ビルド>Build」をクリックします。コンパイルが完了したら「ビルド>Execute」をクリックし、プログラムを実行します。実行し、ボタンを押すとLEDが点灯し、離すと消灯します。


 これで、タクタイルスイッチを使ってLEDを点灯・消灯させるプロジェクトが完成です。プルアップ抵抗とプルダウン抵抗の違いを理解し、適切に使い分けることで、より安定した電子回路を設計できます。ぜひ、自分で試してみてください!


この記事が気に入ったらサポートをしてみませんか?