PR

【Arduino】1秒ごとにLEDを点灯させよう (Lチカ)

こんにちは、メカ旦那です!

メカ坊や
メカ坊や

Arduino初心者キット買ってみました!いろいろ部品が入っているんですが、何から始めたらいいですか?…

メカ旦那
メカ旦那

まずは、Arduino入門の王道、Lチカをやってみましょう!

Lチカとは?

LEDをチカチカ点灯させることを電子工作界隈ではLチカと呼んでいます。ローソンのチキンではありませんよ。

部品接続やコードが簡単なので、Arduino入門の王道としてよく紹介されています。

Lチカにも色々あって奥が深いのですが、今回はLED編その①として「1秒ごとの点灯」で遊んでみましょう!基礎編として「LEDを1秒ごとに点灯させてみよう!」、応用編として「点灯の回数を指定してみよう!」について解説します。

ちなみに、LED編その②ではボタンによる点灯、その③では明るさの調整を解説しています。

始める前に…

※ 初めてArduinoで遊ぶ方向けに前準備を解説します。慣れている方は「使用部品」にスキップして下さいね!

Arduinoとは?

 Arduinoって何?…という方はこちらをご覧ください!遊び方の大まかな流れも理解できますよ。

使用する初心者キット

今回はこちらの初心者キットを使って解説します。ArduinoはUnoを使用しています。

Arduino Web Editorのアカウント作成

プログラムを作成するためにはエディターが必要になります。オンライン版エディター「Arduino Web editor」のアカウント作成が終わっていない方はこちらを参考にしてください。

基本的にはWeb Editorをオススメしますが、ネット環境が悪い方は「Arduino IDE」をインストールしましょう。

ブレッドボード、抵抗

本ブログではブレッドボードと抵抗を使います。初めての方はこちらでザックリ知っておくと便利ですよ!

Arduinoの各ピン

必須ではありませんが各ピンの役割を知っておくと理解が捗ります!

準備が完了したら早速遊んでみましょう!

使用部品

Arduino、ブレッドボード、USBケーブル、ジャンプワイヤー×2、抵抗(220Ω)、LEDを準備しましょう。LEDとジャンプワイヤーは何色でもOKです!

回路の作り方

回路図はfritzingを用いて作成しています

上図を参考に部品を繋いでみましょう!ポイントはこちらです!

ポイント① Arduinoの7ピンはLEDのアノード側に、GNDはカソード側に接続しよう

今回はArduinoの7ピンからLEDを通ってGNDへ電流を流します。そのため、Arduinoの7ピン+極GND-極になります。

LEDにも±があり、アノード(長いピン)が+極、カソード(短いピン)が-極になります。

そのため、Arduinoの7ピンはアノード側に、GNDはカソード側になるよう接続しましょう。逆だと電流は流れません。

回路図はfritzingを用いて作成しています

ポイント② 抵抗を必ず繋ごう

抵抗を繋がないと大電流がLEDに流れるため壊れてしまいます。必ず繋ぎましょう!

基礎編 LEDを1秒ごとに点灯させてみよう!

ソースコード

void setup() {
    pinMode(7, OUTPUT);
}

void loop() {
    digitalWrite(7, HIGH);
    delay(1000);
    digitalWrite(7,LOW);
    delay(1000);
}

まず基礎編としてLEDを1秒ごとに点灯させるコードについて解説します。

上記のコードをWeb editor(もしくはIDE)にコピペすればOKですが、初心者の方向けに各関数について解説します。

コードは基本的に上から実行されます。そのためまずvoid setup の{}内が実行されます。void setup にはソースコードの前提となる初期条件を入力します。今回はpinMode(7, OUTPUT)を実行します。これはArduinoの7ピンを出力ピンにするという意味です。

void setup() {
    pinMode(7, OUTPUT);
}
回路図はfritzingを用いて作成しています

次にvoid loopに移ります。
void loop ではメインの処理を実行します。

まず、digitalWrite(7,HIGH)を実行します。これは出力ピンをHIGH(電位が5V)にする関数で、先ほど出力ピンに設定した7ピンがHIGHになります。GNDがLOW(電位が0V)なので電位差ができて、7ピンから電流が流れます。そして、LEDが点灯します。電位については追々別のブログで解説します!

void loop() {
    digitalWrite(7, HIGH);
回路図はfritzingを用いて作成しています

次にdelay(1000)を実行します。delayは直前に設定した状態を一定時間保持する関数です。先ほどの7ピンのHIGHを1000 ms 保持します。1000ms=1sなので、LEDが1秒間点灯します。

delay(1000);

1秒経ったあとdigitalWrite(7,LOW)を実行します。これは出力ピンをLOWにする関数です。7ピンが0VになることによりGNDとの電位差が無くなり電流が流れなくなります。そしてLEDが消灯します。

digitalWrite(7,LOW);
回路図はfritzingを用いて作成しています

最後にdelay(1000)を実行します。つまり、LEDが1秒間消灯します。

以上でvoid loop関数は終了ですが、名前にloopと付いている通り、別のコードが転送されるまでこの処理がずっと繰り返されます。そのためまたdigitalWrite(7,HIGH)に戻り、1秒ごとの点灯を繰り返します。

メカ坊や
メカ坊や

ちなみに、pinModeとかdigitalWriteって、単語間のスペースがないし、2つ目の単語の頭文字だけが大文字ですしなんか変ですね…

メカ旦那
メカ旦那

英単語の書き方なら pin mode ですよね(笑)
ただ、Arduino言語ではこういう書き方が一般的になりますし、間にスペースを開けたり大文字小文字間違えたりするとエラーが出てしまいます。徐々に慣れましょうね。

転送しよう!

コード入力が終わったらArduinoに転送しましょう!

無事1秒ごとにLEDが点灯しました。

応用編 点灯の回数を指定してみよう!

ソースコード

応用編として、点灯の回数を指定する場合について解説します。

void setup() {
    pinMode(7,OUTPUT);
}

void loop() {
  for(int i=0; i<5; i=i+1){
    digitalWrite(7,HIGH);
    delay(1000);
    digitalWrite(7,LOW);
    delay(1000);
 }
 exit(0);
}

void setup内は基礎編と同じですが、void loop内には新しくfor文exit関数の記載があります。

for文

forの()内の条件が成立する間は{}内の処理が実行されます。()内では

  • 変数の宣言初期化 (int i = 0)
  • 条件式 (i < 5)
  • 変化式 (i = i + 1)

を記入します。

この場合なら、まず変数iに初期値0を代入し、{}内の処理を実行します。そして最後にiに1加えて、冒頭に戻り、同様の処理を繰り返します。i = 5になった時点で条件式(i < 5)を満たさなくなるのでfor文の外に出ます。

exit関数

for文の外ではexit(0)を実行します。exit(0)はプログラムを強制的に終了させる関数です。この一連の流れでLEDを5回だけ点灯させることができます!

転送しよう!

Arduinoにコードを転送してみましょう。LEDが5回点灯するはずです。

ちなみに、繰り返し回数を指定する関数はfor文以外にもあります。気になる方はこちらをチェックしてみてください!

遊び終わる時は?

メカ坊や
メカ坊や

旦那~、終わりたい時はUSBケーブルを抜けばいいんですか?

メカ旦那
メカ旦那

もちろん抜く必要がありますが、その前にして頂きたいことを紹介します!

それは、何も書かれていないソースコードをArduinoに転送することです。

USBケーブルを抜いた後、Arduinoは最後に転送されたコードを記憶します。そのため、別日にUSBケーブルを接続し、PCから電流が流れた瞬間、そのコードを即座に実行します。「Upload」ボタンをクリックしなくてもです。前とは全く違う部品が接続されていた時に、最悪の場合Arduinoや部品が故障します。

LED点滅のコードを記憶したままモーターに指示を出すArduino君
メカ旦那
メカ旦那

私も何回かヒヤヒヤしました…!

その為、Arduinoで遊び終わった時は何も書かれていない白紙のコードを転送し、Arduinoの記憶を消した後に、USBケーブルを抜きましょう。こうすることで、別日に違う部品を繋いでも、何の処理も実行しないので安心です。

まとめ

LED編その1いかがでしたか。
Arduinoの初歩を学ぶにはもってこいの内容ですね。

次回は「ボタンを押してLEDを点灯させよう」を解説します。
自宅でスイッチを押すと電気がつく仕組みも理解できるので、ぜひチャレンジしてみて下さい!

メカ旦那

旧帝大工学部を卒業後、FA業界で会社員をしています。
電子工作の面白さを伝えるべく、ザックリ解説します!

メカ旦那をフォローする
Arduino
ザックリ解説Web

コメント

スポンサーリンク