google-site-verification: google3bd66dd162ef54c7.html

ArduinoでLチカを簡単に動かす方法

 久しぶりにArduinoの話題です。今回はLチカを最小限のハードとソフトで動かす方法について紹介します。

 LチカとはLEDチカチカの意味で、マイコンでLEDを点滅させることです。簡単な動作ですが、これが出来れば基本的なハードとソフトの環境が正しく動いていることが確認出来ます。

 そんなことはご存知の方が多いでしょうから、この先の説明は手短に行います。

 普通のLチカはLEDと電流制限抵抗をマイコンのピン(ポート)とグラウンドの間に直列に接続します。電流制限抵抗を入れるといっても電子工作を始めたばかりの人は抵抗なんて持っていないでしょうから、ここでちょっと時間をロスすると思います。
 そんな事情からでしょうか、入門書によっては抵抗を入れずLEDをポートに直結するように書かれているものも見掛けます。ATmega328Pのドライブ能力は大きいし、電流を流すと電圧も下がるので即座に壊れることは無いでしょう。でも双方のスペックをきちんと確認しないでこんなことやるのはあまり感心出来ません。

 今回紹介するLチカの回路は以下の通りです。

▼Lチカの回路
LED1個の回路図
 Arduinoの部品図は居酒屋ガレージさんが公開されている、BSch3V用ライブラリを使わせていただきました。

 Pin12 (PB4/D12) に接続したLEDが光ります。Pin12を使ったのは、近くにGNDのピンが出ていて単にLEDを挿し込み易いからです。でもこれ見ると、電流制限抵抗が無いじゃん!って突っ込みが入るでしょう。

 でも大丈夫です、以下のソフトで動かせば電流制限抵抗を入れなくても安全に動かすことができます。
/* CPUのプルアップ抵抗を使ってLチカ
* Pin12:LEDアノード、GND:LEDカソードへ接続
* 2015/10/06 ラジオペンチ http://radiopench.blog96.fc2.com/
*/

void setup() {
} // pinMode( )を指定しなければinputになる

void loop() {
digitalWrite(12, HIGH); // HIGHを書くとプルアップ抵抗が接続され,LED点灯
delay(500);
digitalWrite(12, LOW); // LED消灯
delay(500);
}
 このプログラムではsetup()の中には何も書いていません。この場合、ピンは全部入力になります。もちろん入力ピンのままではLEDを光らすことは出来ません。でも都合の良いことにプルアップ抵抗が全てのピンに準備されていて、これを有効にすることでLEDを光らせることが可能です。
 10行目で digitalWrite(12, HIGH); とやっている所でプルアップ抵抗を有効にしてLEDが点灯します。プルアップ抵抗は本来スイッチのON/OFFなどを検出するために用意されているものですが、微小な電流を流すことが出来るので、これでLEDを光らせてしまおう、という作戦です。

 文章だと判り難いので、回路図にすると以下の通りです。

▼プルアップ抵抗とLEDの関係
プルアップ抵抗でLEDを光らす
 プルアップ抵抗は約38kΩという大きな値(20k~50kΩ?)なので、LEDへ流れる電流はとても小さくなります。でも最近のLEDは効率がいいので、これくらいの大きな値の抵抗を入れても点灯していることが確認出来ます。

▼LEDが点灯している様子
Arduino UNO R3でLチカ

 どうせだからLEDを増やして3個にしてみます。

▼LED3個の回路
LED3個の回路図
 ArduinoにはGNDピンが3つあるのでハンダ付けしなくても3個のLEDをコネクタのソケットに挿すことが出来ます。

スケッチ
/* CPUのプルアップ抵抗を使ってLチカ
* Pin12, A0, A1 PinにLEDを接続
* 2015/10/06 ラジオペンチ http://radiopench.blog96.fc2.com/
*/

void setup() {
} // pinMode( )を指定しなければinputになる

void loop() { // 三つのLEDを順に点灯(発光デューティは2/3)
digitalWrite(12, HIGH); // HIGH(LOW)を書くとプルアップ抵抗が接続(切断)され,LED点灯(消灯)
digitalWrite(A1, LOW); // 以下A0, A1はそれぞれ 14, 15と書いても可
delay(200);
digitalWrite(A0, LOW);
digitalWrite(A1, HIGH);
delay(200);
digitalWrite(12, LOW);
digitalWrite(A0, HIGH);
delay(200);
}
 最初のプログラムの応用です。アナログピンもデジタルピンとして使えるのでLEDを点灯させることが出来ます。ちなみにスケッチのコメントにも書いておきましたが、A0~A5のアナログピンはデジタルの14~19として使うことも出来ます。

 ハンダ付けが必要になりますが、以下のようにすれば18個のLEDを点灯させることが可能だと思います。

▼18LED駆動
LED18個の回路図
 この回路は実際に作って動作を確認した訳ではありませんが、たぶんうまくいくと思います。18個のLEDを自在に点滅させることが出来るので、面白いことが出来そうです。
 なお、マトリックスでダイナミック点灯すればもっと少ないピン数で18個のLEDを点灯できます。でもその場合は、短時間に大きな光量を出す必要があるのでこのやり方、つまり内部プルアップ抵抗を使う方法ではうまくいかなくなるかも知れません。

◆まとめ
 ということで、Lチカを簡単な回路とスケッチで動かす方法の紹介でした。裏技みたいで面白いと思います。

 実はこの方法はLPS331を使った気圧高度計の製作、不具合解決の記事の時に、LEDを暗く点灯させるテクニックとして使ったのですが、初めてLチカを試す方の参考になるかもしれないので、単独の記事にしてみました。

 なお、この方法ではLEDは出来るだけ輝度の高い物を使う必要があります。最近の高輝度タイプなら大丈夫ですが、昔のLEDでは効率が悪くて充分な明るさが出ないかも知れません。
関連記事

コメントの投稿

管理者にだけ表示を許可する

BSchライブラリ

自家製ライブラリを活用いただきうれしい限りです(笑)

re:BSchライブラリ

居酒屋ガレージ店主さん、便利に使わせていただいてます。

本文に、そちらのライブラり公開をアナウンスされている記事へのリンクを追加しておきました。
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード