Raspberry Pi 3B+で、LEDの点灯、消灯、点滅のやり方を書いていきたいと思います。
(Raspberry Pi 4Bでも同様のやり方でできます。)
LEDといってもここでは、簡単な単色LEDについて説明します。
単色LEDの他にもフルカラーLEDがありますが、フルカラーLEDについては後日にします。
1.使用する単色LEDと電極の見分け方
使用するLEDは、OSOYOOのセンサーセットに入っている単色LEDを使用しています。
そして、LEDには極性があり見分け方は、
足の長い方をアノードと呼び+側へ
足の短い方をカソードと呼び-極へ
接続します。
実物は、こんな感じです。
2.Raspberry Pi 3B+ ボードと単色LEDの接続
Raspberry Pi 3B+ ボードとLEDの接続は、こんな感じです。
黄色線にはGPIO18、黒線にはGNDを接続しており、
LEDのアノード側と黄色線の間に抵抗200Ωを入れます。
そしてLEDのカソード側と黒線を接続します。
特にGPIO18でなくても、他のGPIOでも大丈夫です。
そして、抵抗を入れている理由は、電流が流れすぎてLEDが壊れないようにするためです。
3.単色LEDの点灯と消灯
LEDの点灯・消灯は、GPIO18をHighにすると点灯、Lowにすると消灯になります。
ユーザー空間からGPIOを使用するには、ここではWiringPiライブラリを使用します。
C言語のサンプルコードとしては、こんな感じです。
#include <wiringpi.h>
#include <stdio.h>
#include <stdlib.h>
#define LEDPIN 1
int main(){
if(wiringPiSetup()==-1){
printf("setup wiringPi failed!\n");
exit(1);
}
pinMode(LEDPIN, OUTPUT);
digitalWrite(LEDPIN, HIGH);
delay(500);
digitalWrite(LEDPIN, LOW);
delay(500);
digitalWrite(LEDPIN, HIGH);
return 0;
}
定義値LEDPINが何故、18ではなく1なのかというと、
それは、WiringPiライブラリ内ではGPIO18を1と定義しているからです。
そして、どこを見ればそれがわかるかというと、
Raspberry Pi 上で、
# gpio readall
を実行すると、下記のように表が出力されます。
そして黄枠にあるとおり、Raspberry Piのピン番号が書かれているPhysicalの12を見て、
その右横列とwPi列とが交差するところが1になっていることがわかります。
4.単色LEDの点滅
LEDの点滅は、「LED点灯後、数百msぐらいのdelayを入れて消灯し、点灯まで同様のdelayを入れる」を繰り返すだけです。
C言語のサンプルコードとしては、こんな感じです。
#include <wiringpi.h>
#include <stdio.h>
#include <stdlib.h>
#define LEDPIN 1
#define FOREVER 1
int main(){
if(wiringPiSetup()==-1){
printf("setup wiringPi failed!\n");
exit(1);
}
pinMode(LEDPIN, OUTPUT);
while( FOREVER ){
digitalWrite(LEDPIN, HIGH);
delay(500);
digitalWrite(LEDPIN, LOW);
delay(500);
}
return 0;
}
5.最後に
単色のLED操作は、GPIOをON/OFFするだけなので簡単です。
LEDには、まだ吐息のようにボワーっと光らせたり、単色以外にフルカラーLEDもあるので、
この辺りも書いていきたいと思います。
<関連・おすすめ記事>
Raspberry Pi 3B+ でI2CキャラクタLCD(1602) の動作確認 - 水瓶座列車
RaspberryPi 3B+でLEDを徐々に点灯、消灯させる方法 - 水瓶座列車
Bluetoothでマルチペアリング(複数台接続)できるマウスのおすすめランキングベスト5 - 水瓶座列車
Raspberry Pi (ラズパイ)で役に立つ書籍のおすすめランキングベスト5 - 水瓶座列車
Raspberry Pi OSのカーネルソースビルド手順解説 - 水瓶座列車