
Raspberry PiでのLチカ!LEDを点滅させてみよう(C言語)
こんにちは、タクト工房へようこそ!今日は、Raspberry Piを使ってLEDを点滅させるプロジェクト、通称「Lチカ」に挑戦してみましょう。WiringPiをインストールがまだでしたら、下の記事を参考にインストールを行ってください。
この記事は、アフリエイト広告を利用しています
必要な材料と道具
Raspberry Pi
ブレッドボード
LED
抵抗
ジャンパーワイヤー

LEDとは
LED(発光ダイオード)は、電気エネルギーを光に変換する電子部品です。LEDは非常に効率的で、低消費電力、高輝度、長寿命などの特徴があり、信号機、照明、イルミネーション、ディスプレイなど様々な製品に使用されています。
LEDの構造
以下の写真のように、LEDにはアノード(正極)とカソード(負極)があります。通常、長い足がアノード、短い足がカソードです。また、LEDは負の電荷を持った「自由電子」がたくさんあるN型半導体と、自由電子が不足し、あたかも正の電荷を帯びた、「正孔(ホール)」と呼ばれるものが多くあるP型半導体を接合させたPN接合した構造を持っています。

発光のメカニズム
LEDの発光は、P型半導体とN型半導体の接合部で発生します。LEDのアノードを電源のプラス側に、カソードを電源のマイナス側に接続して電圧を加えるとき、その電圧の向きを「順方向」といいます。
1.順方向電圧の回路:
順方向電圧をかけた場合、P型半導体の正孔とN型半導体の自由電子が接合部で再結合します。この再結合によりエネルギーが放出され、光として観測されます。以下の図は、順方向電圧をかけたときの回路を示しています。

2.逆方向電圧の回路:
逆方向電圧をかけた場合、P型半導体の正孔とN型半導体の自由電子は接合部から離れる方向に引っ張られ、電流は流れません。逆方向電圧をかけ続けると、LEDが破損することがあります。以下の図は、逆方向電圧をかけたときの回路を示しています。

回路設計(抵抗の求め方)
LED回路の設計を行います。LEDの回路は以下の図のような回路を作ります。

LEDに電流が流れすぎると壊れる恐れがあるため、抵抗を使って、流れる電流を抑制します。抵抗の求め方は以下の式から求めることができます。
$$
R=\frac{V-V_F}{I_F}
$$
ここで、Rは抵抗、Vは電源の電圧、$${V_F}$$は順方向電圧、$${I_F}$$は順方向電流を表しています。RaspberryPiの電源電圧は3.3Vになっています。また、順方向電圧、順方向電流はデータシートから得られることができます。今回記事で使用するLEDはそこら辺にあったものを使用するため、一般的な赤色のLEDの順方向電圧は2V、順方向電流は20mAのため、この値を使用します。式に代入すると、次のように抵抗が求まります。
$$
R=\frac{3.3-2}{0.02}=65
$$
計算の結果、65Ωとなったため、この値より大きな抵抗を使用します。抵抗の大きさによって、明るさが変わるので、いろいろ試してみてください。
LED点滅
いよいよLチカを行います。以下の手順で進めます。
ステップ1:配線のセットアップ
まず、ブレッドボードにLEDと抵抗をセットします。以下の図のように配線を行ってください。Raspberry PiのGPIOの配置が分からなければ、以下の記事を参考にしてください。

写真と全く同じ配線をする必要はありませんが、LEDのカソード側をGNDに接続し、反対側の抵抗を経由してRaspberry Piの出力ピンに接続してください。今回はGPIO 4に接続します。

ステップ2:プログラムを書く
次に、Raspberry Piに以下のC言語コードを入力します。このコードは、WiringPiを使ってLEDを1秒間隔で点滅させるプログラムです。
#include<wiringPi.h>
#include<stdio.h>
#define LED_PIN 4
int main(void){
wiringPiSetupGpio();
pinMode(LED_PIN,OUTPUT);
while(1){
digitalWrite(LED_PIN,HIGH);
delay(1000);
digitalWrite(LED_PIN,LOW);
delay(1000);
}
return 0;
}
プログラムの説明
wiringPiSetupGpio(); WiringPiライブラリを使用する際に、Raspberry Piのピン番号をBCM(Broadcom)番号で設定するための関数です。BCM番号は、Raspberry Piのチップ上のGPIO番号に直接対応しています。
pinMode(LED_PIN, OUTPUT): GPIOピンを出力モードに設定します。
digitalWrite(LED_PIN, HIGH): GPIOピンをHIGH(3.3V)に設定し、LEDを点灯させます。
delay(1000): 1秒間(1000ミリ秒)待機します。
digitalWrite(LED_PIN, LOW): GPIOピンをLOW(0V)に設定し、LEDを消灯させます。
delay(1000): 再び1秒間待機します。このループは無限に繰り返され、LEDが1秒間隔で点滅します。
ステップ3:コンパイルと実行
入力が完了したら、メニューの「ビルド>Build」をクリックします。コンパイルが完了したら「ビルド>Execute」をクリックし、プログラムを実行します。実行するとLEDが点滅します。もし、点滅しない場合、ピンの接続位置が合っているか確認してください。

以上でLチカプロジェクトの説明は終わりです。ぜひ、自分でいろいろ試してみて楽しんでください!