ESP-WROOM-32-でLEDキューブを作ってみる!(3×3×3)
こんばんわ!
今回はど素人でも作れるレベルのLEDキューブを作ってみたいと思います!
作り方は単純で、3×3×3のLEDをダイナミック点灯で制御するだけです^^
※ダイナミック点灯とは、点灯しているLEDを一定周波数で高速に点滅させる点灯方法です。
ピンは全然足りるので特に特殊なICなどは使いません^^
①「使う部品」
・LED(何色でもOKです) 27個
※5mmの透明のLEDのほうが完成時見栄えは良くなります!
※今回は3mmLEDしかなかった為、3mmLEDを使用しています。
左が3mm、右が5mm
・LEDキャップ (任意)
※点灯させたとき眩しいのであった方が良いです。
・ESP-WROOM-32 (ESP-WROOM-32D)
電子工作ステーション 1100円(送料無料)(30pinモデル)
電子工作ステーション 1200円(送料無料)(ESP32D)(38pinモデル)
秋月電子 1230円+送料(38Pinモデル)
※楽天にて横幅を細くしたバージョンが登場‼
pin番を無くした代わりに細くなっているので、ブレットボードで使いやすくなりました‼
6極ブレットボードではなく定番のブレットボードで使えるようになるのでススメです⇩⇩⇩
・通信用マイクロUSBケーブルタイプB (家に無ければ)
秋月電子 120円+送料
ESP-WROOM-32とパソコンを繋ぐためのケーブルです。
100円ショップなどでも販売していますが、スマホ用充電専用タイプだと使えないのでご注意ください。
・抵抗 (10~150Ω) 100本 100円
※今回は使用していませんが、あった方がLEDの故障を防げます。
(ESP-WROOM32は幅が広い為6穴版でないと差せません)
・ジャンパーワイヤー(オス・オス)
電子工作ステーション 1セット(10本)100円+送料(500円以上で無料)
秋月電子 18本180円+送料
(ブレットボードで回路を組むとき、見栄え良く綺麗に繫げられますのであると便利)
ジャンパーワイヤーとLEDを接続するために使います。
※LEDの組み立てに、半田付けが必要になります。
はんだこてをまだお持ちで無い方はこちらは一度お読みください⇩
②「組み立て方」
・LEDキューブを作るにあたって一番重要なのは見栄えです!
LEDとLEDの間隔さえ均等に組み立てればとりあえず綺麗に見えます!
組み立て方はいろいろありますが、私のやり方は、
まず、長い脚、専門用語でアノード(+)側の足を90℃曲げます!
次に曲げた足をLEDの出っ張っている部分で、90ど折下げます!
そしたら短い方の足、専門用語でカソード( – )側を同じ向きに90℃曲げます!
カソード側を均等な間隔ではんだ付けしていきます!(自分は1.5cmでやりました)
今度はアノード側を均等にはんだ付していきます!
(折り下げたところに付けます)
次はカソード側(横に出てる方)を90℃横に曲げ、均等にはんだ付けすると形が完成します!
後は配線していきます!
・LEDの足すべてにピンソケットを付けていきます!
銅線をはんだで直接接続しても構いませんが、こうしておけば取り外しも可能なのでいざという時に便利かと思います^^
後はジャンパーワイヤーを差していくだけです!
⇧の写真は、赤線がアノード(+)で、黒線がカソード( – )です!
・後はブレットボードにESP-WROOM-32をセットしてIOピンに差していくだけです!
③「配線・接続」
真上から見たLED(アノード側)の列番号の配置⇩
左上 | 右上 | |
led7 | led8 | led9 |
led4 | led5 | led6 |
led1 | led2 | led3 |
左下 | 右下 |
※差すIOピンは任意で決めていただいても問題ありません。
LED列制御番号(アノード側) | IOピン |
led1 | 2 |
led2 | 4 |
led3 | 16 |
led4 | 17 |
led5 | 5 |
led6 | 18 |
led7 | 13 |
led8 | 12 |
led9 | 14 |
LED段制御番号(カソード側) | IOピン |
danLed1 | 27 |
danLed2 | 26 |
danLed3 | 25 |
そうするとこんな感じに出来上がるかと思います⇩
この写真は先ほど説明した「真上から見たLED(アノード側)の列番号の配置」の通り、
左下のLEDがled1となりその右隣がled2と並んでいます!
※抵抗を付ける場合はアノード側のLEDとIOpinの間に挟んでください。
④「Arduino IEDにESP-WROOM-32を使えるように設定する」
・こちらをご参考に↓
Arduino IDEでESP-WROOM-02(ESP8266)とESP-WROOM-32を使えるようにする!(Windows10)
⑤「プログラミング」
・早速プログラムで動かしてみましょう!
まずは動作確認のために、1段目のled1から順番に光らせていきたいと思います!
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
//LEDのアノード側とESP32に接続するピン番号を指定します #define led1 2 #define led2 4 #define led3 16 #define led4 17 #define led5 5 #define led6 18 #define led7 13 #define led8 12 #define led9 14 //LEDのカソード側とESP32に接続するピン番号を指定します。 #define danLed1 27 #define danLed2 26 #define danLed3 25 void setup() { //各ピン番号を使えるようにします。 pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); pinMode(led9, OUTPUT); pinMode(danLed1, OUTPUT); pinMode(danLed2, OUTPUT); pinMode(danLed3, OUTPUT); } void loop() { //1~9番のアノード側のLEDを配列で操作できるようにします。 int retu[10]; retu[1] = led1, retu[2] = led2, retu[3] = led3, retu[4] = led4, retu[5] = led5, retu[6] = led6, retu[7] = led7, retu[8] = led8, retu[9] = led9; //1~3番のカソード側のLEDを配列で操作できるようにします。 int dan[4]; dan[1] = danLed1, dan[2] = danLed2, dan[3] = danLed3; for (int i = 1; i <= 3; i++) { digitalWrite(dan[i], HIGH); } //各LEDを点灯していきます。danがLOW、retuがHIGHのところが点灯します。 for (int k = 1; k <= 3; k++) { digitalWrite(dan[k], LOW); for (int i = 1; i <= 9; i++) { digitalWrite(retu[i], HIGH); delay(150); digitalWrite(retu[i], LOW); } } } |
これですべてのLEDが動作確認完了です!
※もし、光らない箇所があった場合は、はんだがシッカリ付いているかや、LEDの接続方向は正しいのか回路を確認してください!(LEDが壊れてたりってこともあります)
※点灯の順番が違かった場合はLEDとIOピンの接続を確認してください。
こんな感じに光ります↓
・次はダイナミック点灯をやってみたいと思います!
冒頭でも軽く説明している通りですが、点灯しているLEDを一定周波数で高速に点滅させる点灯方法です。
つまり、今回は1段目の1番のLEDと、3段目の9番のLEDを高速で交互に光らせて、
あたかも同時に光っているように見せます!
では早速下記のコードで試してみてください^^
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
//LEDのアノード側とESP32に接続するピン番号を指定します #define led1 2 #define led2 4 #define led3 16 #define led4 17 #define led5 5 #define led6 18 #define led7 13 #define led8 12 #define led9 14 //LEDのカソード側とESP32に接続するピン番号を指定します。 #define danLed1 27 #define danLed2 26 #define danLed3 25 void setup() { //各ピン番号を使えるようにします。 pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); pinMode(led9, OUTPUT); pinMode(danLed1, OUTPUT); pinMode(danLed2, OUTPUT); pinMode(danLed3, OUTPUT); } void loop() { //1~9番のアノード側のLEDを配列で操作できるようにします。 int retu[10]; retu[1] = led1, retu[2] = led2, retu[3] = led3, retu[4] = led4, retu[5] = led5, retu[6] = led6, retu[7] = led7, retu[8] = led8, retu[9] = led9; //1~3番のカソード側のLEDを配列で操作できるようにします。 int dan[4]; dan[1] = danLed1, dan[2] = danLed2, dan[3] = danLed3; for (int i = 1; i <= 3; i++) { digitalWrite(dan[i], HIGH); } //ダイナミック点灯 for (int i = 1; i <= 500; i++) { //1番目の1段目のLEDのみ0.001秒光らせます。 digitalWrite(retu[1], HIGH); digitalWrite(dan[1], LOW); delay(1);//0.001秒 //消灯 digitalWrite(retu[1], LOW); digitalWrite(dan[1], HIGH); //9番目の3段目のLEDのみ光らせます。 digitalWrite(retu[9], HIGH); digitalWrite(dan[3], LOW); delay(1);//0.001秒 //消灯 digitalWrite(retu[9], LOW); digitalWrite(dan[3], HIGH); } //3秒間隔で繰り返す。 delay(3000); } |
1段目の1番のLEDと、3段目の9番のLEDが1秒点灯して3秒消灯を繰り返します^^
これで考え方次第で、いろんなパフォーマンスが出来る様になります^^
以上、ご訪問ありがとうございました!
6件のフィードバック
-
ピンバック: LEDキューブの作り方!!! – ど素人電子工作
-
ピンバック: LEDキューブの作り方!!! – ど素人電子工作
今学校の工作でこのLEDキューブを参考にしているのですが、「Arduino IEDにESP-WROOM-32を使えるように設定する」の部分がうまくいきません(シリアルポートが検出されない等)。よろしければ詳しく教えてほしいです
ご質問頂きありがとうございます!
原因はいくつかあると思います。
1.USBケーブルが不調、または充電専用の物である。
これはUSBを変えてください。
2.PCがポートを読み込めてない。
ESP-WROOM-32D開発ボードのみでPCと接続して、デバイスマネージャーで「ポート(COMとLPT)」のところで…(COM)が正常に認識されているか確認してください。
正常に認識されいなければドライブを再インストールしてください。
その後はPCを再起動してくださいね^^
これでもできない場合はエラーメッセージ前文と、配線状態等などを教えて頂ければとおもいます(;^ω^)
頑張ってください^^