Arduino Uno用 LED Cube Shieldキット

商品ページ リンク

紹介動画

本商品の特徴

【特徴1】作業時間の大幅短縮

本商品は、手軽にLED Cubeを作成するためのキットとなっています。通常は回路を検討し、部品を選定し、LEDを組み立て…と1週間ほどかかるであろう作業が、2~3時間ほど※1で完了します。

※1:LED Cube作成用の治具を付属しているため、短時間での組み立てが可能です。

【特徴2】手軽にプログラミング

本商品はArduino Unoの shieldですので、手軽に点灯パターンのプログラミングが可能となっています。
プログラミングを学びたての頃は、練習問題を解くだけではモチベーションの維持が難しいと思います。
そこでLED CubeというLチカより少し複雑なハードウェアを使用して、実際にハードウェアを制御する面白さを体感してみましょう※2

本商品にはスイッチと可変抵抗を付属しており、スイッチを押した際は点灯パターンを変えるなど、ハードウェアを制御する際の一連の流れ(入力※3→処理→出力)を体感することができます。

※2:ArduinoではArduino言語と呼ばれるプログラミング言語を使用しますが、実際はC/C++をベースにしたものであるためC/C++言語の勉強になります。
※3:スイッチではデジタル入力、可変抵抗ではアナログ入力を学ぶことができます。

【特徴3】機能拡張性

本商品ではA2~A5のアナログ入力ピンや、0~1のデジタル入出力ピン(UART通信も可能)、19(SCL)、18(SDA)のI2Cピンが未使用となっており、ご自身でセンサやスイッチ、スピーカやモータ等を追加していただくことが可能です。
是非ご自身のアイデアでオリジナルデバイスを創り出すことにチャレンジしてみてください。

【特徴4】見栄え

LED Cube作成用の治具(9個の穴が開いたもの)はよくありますが、本商品では高さ方向の治具も付属しているため、LED間の距離を、縦、横、高さ方向で均等にすることができ、点灯した際の見栄えをより良くすることができます。

注意事項

本商品はArduino Uno※4のShieldであるため、別売りのArduino Unoが必要です。ご自身で別途ご用意ください。

本商品は完全な組み立て済みではありません。ご自身での作成が必要となります。

作成にはニッパ、はんだごて、はんだが必要となりますのでご用意ください。はんだ付けの際は、火傷に十分ご注意ください。

本商品や関連するドキュメント等によって生じるいかなるトラブル・損害・損失等についても、Weekly Engineering は一切の責任を負わないことをご了承ください。

※4:Arduino Uno R3、R4 minimaで動作確認済みです。互換機では動作未確認となっています。デジタル・アナログ入力、デジタル出力の基本的な機能しか使用していないため、互換機でも動作可能と思われますが、自己責任でのご使用をお願いします。

仕様

項目備考
対応マイコンArduino Uno
消費電流約250mALED9個点灯時の理論値(Arduino Uno USBポート部分の消費電流)
Aruduino Uno本体の消費電流含む。
動作電圧5VArduino Uno +5Vピンから給電。
※Arduino Uno搭載のレギュレータにより入力電圧を5Vに変換します。
※Aruduino Unoへの給電はUSBポートや外部電源の利用が可能です。
使用ピン5V、GND、A0、A1、2、~3、4、~5、~6、7、8、~9、~10、~11、12、13
Sheild 寸法W74.9×D53.3mm
LED Cube寸法W55×D35×H60mmはんだ付けにより誤差有り。

内容物

品名個数備考
LED Cube Shield1
LED30必要数27、予備3つ含む
可変抵抗11KΩ
DMOSトランジスタアレイ(シンクタイプ)216ピン
DMOSトランジスタアレイ(ソースタイプ)118ピン
ピンソケット218ピン 1つ、14ピン 1つ
スズメッキ線3短、中、長 各1本
治具2A、B 各1つ

作業手順

PDFはこちら↓

Shield

下記のようにはんだ付けをします。

1.左図のように、付属の部品をDMOSトランジスタアレイ→ピンソケット→可変抵抗の順ではんだ付けします。

※DMOSトランジスタアレイには向きがあります。半円状の切り欠きの向きを基板に印刷されたシルクと合わせるようにしてください。

LED Cube

下記手順でLED Cubeを作成します。

1.LEDのカソード(短い足)を左図のように外側に90°折り曲げてください。

※この時点でアノード(長い足)を折り曲げてLED Cubeを作成してしまうと、LEDが点灯しないためご注意ください。

2.折り曲げたLEDを治具Aに左図のようにセットします。

3.LEDの頭(緑色のレンズ部分)を治具Aに押し付けながら、矢印のようにカソードを直角に折り曲げます。

4.折り曲げたLEDを治具Aから外します。

5.外したLEDを治具Aの左図の場所に再度セットします。

6.矢印のように治具Aに沿ってアノード側を折り曲げます。

7.折り曲げたLEDを治具Aから外します。

8.手順1~7を繰り返し、合計9個のLEDを用意します。

9.折り曲げたLEDの一つを治具Aに左図のようにセットします。

10.治具Aに沿って、矢印のようにLEDの足を直角に折り曲げます。

11.折り曲げたLEDを治具Aから外します。

12.同様に合計3つのLEDを折り曲げます。残り6つのLEDはこれ以上折り曲げません。

13.手順11、12で折り曲げたLED3つを、左図の順(1→2→3)で治具Aにセットします。

14.左図の赤丸部分をはんだ付けし、3つのLEDを接続します。

15.残りのLED6つのうち2つを左図の順(1→2)で治具Aにセットします。

16.左図の赤丸部分をはんだ付けします。

17.残りの4つのLEDについても、手順15、16と同様に、セットしてはんだ付けします。

18.LEDを治具Aから取り外します。

※はんだ付けした直後だとやけどしてしまう可能性があるため、十分に時間をおいてから取り外しましょう。

※LEDの足がなるべく直角に曲がっているように調整します。

19.手順1~18を繰り返し行い、LEDが9個接続されたもの(今後平面LEDと呼びます)を合計3つ作成します。

20.平面LEDのうち一つを左図のように治具Bにセットします。

21.平面LEDのもう一つを左図のように治具Bにセットし、赤丸部分(二つの平面LEDの足)をはんだ付けします。

※治具Bを使用することで、LED同士の距離を一定に保った上ではんだ付けが可能です。

※治具BからLEDを取り外す際は、火傷しないように十分時間をおいてから取り外しましょう。

22.手順21の対角線上のLEDの足をはんだ付けするために、治具Bを左図のようにLEDの隙間に差し込みます。

※対角線上のLED側からの視点だと、このようになっています。

23.治具Bを青矢印のようにLEDに押し当て、赤丸部分(治具Bに押し当てられているLEDの足同士)をはんだ付けします。

※治具BからLEDを取り外す際は、火傷しないように十分時間をおいてから取り外しましょう。

24.残り7箇所のはんだ付けされていない足についても、同様に治具Bをセットしてはんだ付けを行います。

25.下段側のLEDを再度治具Bに左図のようにセットします。

26.残っていた平面LEDを治具Bにセットし、赤丸部分をはんだ付けします。

※治具BからLEDを取り外す際は、火傷しないように十分時間をおいてから取り外しましょう。

27.手順23と同様に、手順26ではんだ付けしたLEDとは対角線上のLEDを、治具Bを用いてはんだ付けします。

※治具BからLEDを取り外す際は、火傷しないように十分時間をおいてから取り外しましょう。

28.残り7箇所のはんだ付けされていない足についても、同様に治具Bをセットしてはんだ付けを行います。

29.LED CubeをSheildのピンに挿し込みます。

※1列ずつ差し込んでいくと挿し込みやすいです。

※ピンの中心にLEDの足がない状態で強く推すと、うまく入らずLEDの足が曲がってしまうことがあるため、ピンの中心にLEDの足があることを確認して挿し込みましょう。

30. スズメッキ線(短)を右図のように左側のピンに挿し込みます。

31.左図赤丸部をはんだ付けし、はみ出たLEDの足をニッパで切断します。

32.スズメッキ線(中)、スズメッキ線(超)についても同様にはんだ付けし、はみ出たLEDの足をニッパで切断します。

33.残りのはみ出たLEDの足をニッパで切断します。

※切断した足がShield上に残っていないことを十分にご確認ください。

回路図

回路図は下記よりダウンロードください。
解説は下記を参照ください。

LED部

LED部 回路図解説
LED部 回路図抜粋

本商品では27個のLEDを使用していますが、単純に全てのLEDの点灯制御をしようとすると27個のデジタルI/Oピンが必要です。
ArduinoのデジタルI/Oピンは20個のみであるため、ダイナミック点灯という方式を用いて、上図のように12個(LED_I1~I3、LED_O1~O9)のデジタルI/Oピンで制御しています。
例えば上記赤枠部のLED(LED D1~D3、LED D13~D15、LED D25~D27)を常時点灯させたい場合、下記1.~3.を5ms周期など短時間で繰り返し実行することで実現できます。
実際は1.~3.で別々の点灯をしているのですが、人間の目には短時間の点灯の切り替えを感じることができないため、上記赤枠部のLEDが同時に点灯しているように感じられるのです。
このように人間の目では感じられない速さで、LED D1~D9、D10~D18、D19~D27の点灯パターンを繰り返すことで、12個のデジタルI/Oピンで27個のLED制御を実現できます。

  1. LED_I1をHIGH(LED_I2、I3はLOW)と設定し、LED_O1~O3をLOW(LED_O4~O9はHIGH)と設定します。
    このときLED_I1列にあるLED D1~D9のLEDのうち、カソード側がLOWとなっているLED D1~D3が点灯します。
  2. LED_I2をHIGH(LED_I1、I3はLOW)と設定し、LED_O4~O6をLOW(LED_O1~O3、O7~O9はHIGH)と設定します。
    このときLED_I2列にあるLED D10~D18のLEDのうち、カソード側がLOWとなっているLED D13~D15が点灯します。
  3. LED_I3をHIGH(LED_I1、I2はLOW)と設定し、LED_O7~O9をLOW(LED_O1~O6はHIGH)と設定します。
    このときLED_I3列にあるLED D19~D27のLEDのうち、カソード側がLOWとなっているLED D25~D27が点灯します。

電流増幅部

電流増幅部 回路図解説
電流増幅部 回路図抜粋

Arduino Unoの1ピン当たりの定格電流は40mAで、LED一つあたりに流れる電流は20mA程度となるようにしています。
例えばLED部でLED D1~D9が点灯した場合、LED_I1には180mA(= 20mA * 9個)の電流が流れてしまい、定格の40mAを超えてしまいます。
そこで、トランジスタアレイを用いて+5Vピンから電流を供給するようにしています。
そうすれば、LEDの点灯/消灯の制御はデジタルI/Oピンで実施し、実際にLEDに流す電流は+5ピンから供給できます。

TBD62783はソース型のトランジスタアレイで、I1~I8をHIGHとすると、対応するO1~O7にVCCに接続された+5Vが流れます。
TBD62003はシンク型のトランジスタアレイで、I1~I8をHIGHとすると、対応するO1~O7がGNDと接続されます。
つまり、例えばArduinoの1(TX)、7、12(MISO)ピン(上図赤枠部)をHIGHとすると、LED_I1が5V、LED_O3、O8がGNDとなり、LED D3、D8が点灯します。

入力部

入力部 回路図解説
入力部 回路図抜粋

入力方法は2種類あります。

1つは可変抵抗によるアナログ入力で、つまみを回すことでRV1の抵抗値が変わり、それに応じてA1ピンの入力電圧が変わります。
A1ピンはアナログ入力となっており、入力電圧に応じたAD値※5を読み取り、AD値に応じた処理をプログラミングできます。

もう1つはスイッチによるデジタル入力で、2ピンの入力電圧は、スイッチを押していない場合はプルアップ抵抗によりHIGH、スイッチを押している場合はLOWとなります。

※5:Aruduino Unoでは0~5Vの入力で、AD値は0~1023となります。

サンプルプログラム

サンプルプログラムは下記Githubに載せています。

https://github.com/Weekly-Engineering/LED-Cube-Shield-for-Arduino-Uno

Led_Flasher_basic
・Led_Flasher_basic.ino
本Shieldを用いてLED Cubeの点灯を制御するための最低限のサンプルプログラムとなります。
SWと可変抵抗値による入力は実装していません。

Led_Flasher_advance
・Led_Flasher.ino
・led_flash_funcs.cpp
・led_flash_funcs.hpp
・parameter.hpp
Led_Flasher_basicに機能を追加し、オブジェクト指向で再構成したサンプルプログラムとなります。
SWと可変抵抗による入力を実装し、LEDの照度制御、点灯時間制御、点灯パターン切替等が可能となっています。
※2023/9/17加筆
Arduino UNO R3およびR4 minimaの両方で動作するようにled_flash_funcs.hppの一部を修正しました。