ArduinoでフルカラーLEDを制御|ブロックプログラミング【Lesson6】
Arduino(アルドゥイーノ)プログラミングLESSON6は「フルカラーLEDを使って段階的に点灯色を変化させる」です。
今回はLESSON3で学んだアナログ出力(PWM)を用いたプログラミング内容を使って学習をすすめます。
本LESSON記事は、プログラミングの学習とフルカラーLEDの機能知識を習得するプログラムになっています。
小学生やプログラミング初心者の方も安心してプログラミングができるように、ブロックを使ったスクラッチでのプログラミング方法についても動画付きで紹介しています。
光の三原色を理解するのにぴったりなLESSONなんだ
- フルカラーLEDの仕組み
- プログラミングによる、フルカラーLEDの色制御方法
- Arduino IDE、スクラッチ(Scrattino3)を使ったプログラミング方法
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
子供の成長を育む!小学生のお子様にぴったりなプログラミング教室が見つかるように厳選しました!
アナログ回路のおさらい
デジタル回路は「0」か「1」の信号のみで構成されるのに対して、アナログ回路は連続的な変化をする信号で構成されます。
アナログ回路は0と1の間の数値を取り扱うことができます。
デジタル回路とアナログ回路の違い
デジタル回路:消灯と点灯の2つの状態のみ制御可能
アナログ回路:消灯と様々な明るさの点灯が制御可能
アナログ回路は段階的な明るさ制御ができるよ
フルカラーLEDとは
フルカラーLEDとは、ざっくりいうと「赤、緑、青のLEDが集まっている点灯機器」です。
光の三原色の原理を利用して、その3つの点灯色の点灯組み合わせで点灯色を変化させます。
ArduinoUnoでの点灯色の組み合わせはアナログ出力値2563=16,777,216(通り)です。
アナログ出力(PWM)によるフルカラーLED点灯色制御の説明
今回のLESSONで取り扱うフルカラーLED点灯色制御の動作説明は、以下になります。
- LED点灯色が緑色⇒赤色⇒青色⇒緑色の順に切り替わる。
- LED点灯色は段階的に変化する。
- 点灯色が緑色に変化したのち、再び赤色への色変化動作が行われる。
- フルカラーLEDを用いた、点灯色の段階的な切り替え制御動作
- スクラッチを使ったプログラミング手順
まずは動画を見て、LED点灯色が段階的に変化する動作を確認してください。
また、スクラッチを使ったプログラミングをするためには準備作業が必要です。
動画にて準備作業に必要な手順をくわしく説明しています。
フルカラーLEDを用いた、段階的な点灯色切り替え制御回路の作り方
プログラミングするために、パソコンが必要です。
電子部品等の必要な機器については、このあと説明します。
パソコンに統合開発ソフトウェア「ArduinoIDE」のインストールを行います。
Arduinoのセットアップ方法については、以下の記事にて詳しく説明しています。
Arduino IDEでの言語プログラミングも勉強したい方は、プログラミングの流れを理解しておいてください。
以下の記事にて、プログラミングから動作確認までの流れを詳しく説明しています。
パソコンにスクラッチでプログラミングするためのソフトウェア「Scrattino3(スクラッチーノ3)」のインストールを行います。
以下の記事にて詳しく説明しています。
電子部品とジャンパーワイヤの差し込みだけで配線が可能です。
専用開発ソフトウェア「Arduino IDE」を使います。
文字列プログラミングを行う場合は、私が作成したプログラムをコピペして使ってください。
スクラッチプログラミングについては、動画または後述するプログラミング例を参考にしてください。
プログラムが完成したら動作確認を行います。
- LED点灯色が段階的に緑色⇒赤色⇒青色⇒緑色の順に切り替わるか?
- 点灯色が緑色に変化したのち、再び赤色への色変化動作が行われるか?
記載のプログラムは動作確認済です。
動作確認方法については、以下の記事にて詳しく説明しています。
段階的な点灯色切り替え制御回路で使うもの
- パソコン
- Arduino本体
- USBケーブル
- ブレッドボード
- フルカラーLED
- 抵抗(220Ω)×3本
- ジャンパー線(オスーオス)×4本
今回はELEGOO社の初心者スターターキットに入っている部品のみで作ることができますが、Arduino裏面のショート対策としてクリアケースも併せて準備することをおすすめします。
パソコン
プログラムを作成するために必要です。
プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。
パソコンのOSはWindows、Macどちらでも対応可能です。
Arduino本体【キット】
基本的なエディション「Arduino Uno」の互換機である、ELEGOO社のUNO R3を使用しています。
Arduino本体裏面のショート対策に、別売りのクリアケースの購入をおすすめしています。
各ソケットの役割など、Arduino本体の機能について以下の記事にて詳しく説明しています。
USBケーブル【キット】
パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。
ブレッドボード【キット】
たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。
フルカラーLED【キット】
フルカラーLEDを1本使用します。
フルカラーLEDは端子が4本あり、RGB点灯色+共通GNDの割り当てとなります。
また、LED素子にはプラスマイナスの極性があるため配線時には注意が必要です。
極性を間違えて配線すると、LEDは点灯しません
抵抗(220Ω)【キット】
220Ωの抵抗を3本使用し、フルカラーLEDのRGB端子に1本ずつ接続します。
LEDは流せる電流値に制約があるため、抵抗を直列つなぎすることでLEDに流れる電流を調節します。
抵抗は極性がないので、配線時に方向を気にする必要はありません。
LEDを点灯させるために接続する抵抗の選び方については、こちらの記事で詳しく説明しています。
LED点灯色 | VF | IF |
---|---|---|
赤 | 1.95V | 0.02A |
緑 | 3.3V | 0.02A |
青 | 3.3V | 0.02A |
ジャンパー線(オスーオス)【キット】
ジャンパー線を4本使用します。
今回のLESSONでは、Arduino本体とブレッドボードの接続に使います。
LED点灯色と配線色を合わせると、プログラミング時に間違えにくくなるのでおすすめですよ!
今回のLESSONで使用可能な、スターターキットです。
(おすすめ!)モーターやLEDディスプレイ等の機器を備えたコスパの高いキットです。
【おすすめ!】Arduino本体裏面のショート対策におすすめです。
初心者キットに含まれる機器に関しては、以下の記事にて詳しく紹介しています。
配線のやり方
上図が配線説明図となりますので、これと同じ配線をすれば完成します。
- フルカラーLEDをブレッドボードに差し込む
- 220Ω抵抗をブレッドボードに差し込む
- ジャンパー線をブレッドボードとArduinoソケットに差し込む(計4本)
LEDや抵抗及びジャンパー線は、Arduinoのソケットやブレッドボード穴に差し込むだけでOKです。
LEDはプラス・マイナスの極性があります。
抵抗は極性がありません。
フルカラーLEDの端子機能割り当てについては、こちらをご確認ください。
機器故障させないためにも、USBケーブルを抜いた「通電OFF」状態にて配線を行ってください
LEDの点灯色制御の考え方
基本的な考え方としては、赤色、緑色、青色の明るさ度合い(0~255階調)の組み合わせで色を作ります。
アナログ出力機能(PWM)
Arduinoでは0Vと5VのON時間の割合を調節することで、疑似的なアナログ出力ができる機能を持っています。
疑似的なアナログ出力方式をパルス変調といい、PWM(Pulse Width Modulation)出力といいます
アナログ出力の値は0~255までの256段階で出力します。
フルカラーLED点灯色の例
各色のアナログ出力値と点灯色の組み合わせについて、一例を紹介します。
プログラミングのやり方
Arduino IDEとスクラッチの両方について、プログラミング方法とプログラムを説明します。
2つのプログラミングの特徴は以下の通り。
ArduinoIDE:文字列による命令語形式
スクラッチ:ブロックによるビジュアル形式
文字列を使わないスクラッチの方が、直感的で分かりやすく小学生におすすめのプログラミング方法になります。
スクラッチを使ってプログラミングをする方は、スクラッチの説明まで読み飛ばしてください。
Arduino IDE
Arduino IDEとは統合開発ソフトウェアで、C言語のような文字列を用いたプログラミング方法です。
プログラミングするにあたり、ある程度の命令語を知っておく必要があります。
Arduino IDEのインストール方法については、以下の記事で詳しく説明しています。
プログラミング方法
Arduino IDEを使って、文字列プログラミングを行います。
Arduino IDEを使ったプログラミング~動作確認方法については、以下の記事で詳細説明しています。
Arduino IDEプログラム
/* 作品名:LESSON6 */
/* 作成者:せでぃあ https://cediablog.com */
/* プログラムによるフルカラーLED制御 */
int LED_R_SOCKET = 9; //赤色LEDの出力ソケット番号
int LED_G_SOCKET = 10; //緑色LEDの出力ソケット番号
int LED_B_SOCKET = 11; //青色LEDの出力ソケット番号
void setup() {
// put your setup code here, to run once: プログラム起動時1回だけ処理される回路
//入出力の割り当て
pinMode(LED_R_SOCKET, OUTPUT); //9番ピンは出力として使用
pinMode(LED_G_SOCKET, OUTPUT); //10番ピンは出力として使用
pinMode(LED_B_SOCKET, OUTPUT); //11番ピンは出力として使用
}
void loop() {
// put your main code here, to run repeatedly: プログラム起動後ループ処理される回路
for(int i=0; i<=255; i++){
analogWrite(LED_R_SOCKET, i); //赤色出力値を1ずつ増加
analogWrite(LED_G_SOCKET, 255-i); //緑色出力値を1ずつ減少
analogWrite(LED_B_SOCKET, 0); //青色は消灯したまま
delay(10); //0.01秒待つ
}
for(int i=0; i<=255; i++){
analogWrite(LED_R_SOCKET, 255-i); //赤色出力値を1ずつ減少
analogWrite(LED_G_SOCKET, 0); //緑色は消灯したまま
analogWrite(LED_B_SOCKET, i); //青色出力値を1ずつ増加
delay(10); //0.01秒待つ
}
for(int i=0; i<=255; i++){
analogWrite(LED_R_SOCKET, 0); //赤色は消灯したまま
analogWrite(LED_G_SOCKET, i); //緑色出力値を1ずつ増加
analogWrite(LED_B_SOCKET, 255-i); //青色出力値を1ずつ減少
delay(10); //0.01秒待つ
}
}
上記がフルカラーLEDの点灯色制御回路のプログラムになります。
Arduino IDEのプログラム画面にコピーアンドペーストすることで、動作確認まで進めることができます。
各プログラム列の右側にプログラム内容をコメント記入してありますので参考にしてください。
色変化スピードを調整するにはディレイタイマの数値を変更してください
命令語の解説
今回のプログラムで使用した命令文について、解説します。
変数のデータ型指定
変数のデータ型を指定するものです。
今回はピンソケット番号を代入するので整数を扱う「int型」を指定します。
またアナログ出力値は「0~255」の整数を扱いますので、同じく「int型」を指定します。
データ型 | 説明 | 扱える範囲 |
---|---|---|
int | 2バイトの整数を代入可能。 | -32768~32767 |
long | 4バイトの整数を代入可能 | -2,147,483,648~2,147,483,647 |
float | 4バイトの小数を代入可能。 | 3.4028235×1038~-3.4028235×1038 |
char | 1バイトの値を代入可能。文字列の代入に利用されます。 | -128~127 |
boolean | 0または1のみ代入可能。フラグのON-OFFなどに利用されます。 | 0,1 |
pinMode(入出力ソケット番号,INPUTまたはOUTPUT)
指定したデジタル入出力ソケット番号の機能を指示します。
入力として使用する場合は「INPUT」、出力の場合は「OUTPUT」を指定します。
for文
初期値から加算値を加算しながら実行分を繰り返します。
条件式が成立すると繰り返し動作が終了します。
for(初期化 ; 条件式 ; 加算){
実行される文 ;
}
analogWrite(入出力番号,0~255の範囲のアナログ値)
指定したデジタル入出力ソケット番号の電圧を255階調での値で出力します。
5V出力の場合、0のとき0V、255の時5Vの出力となります。
0Vと5Vの状態を時間の割合で調整して作る、疑似的なアナログ電圧になります。
delay(時間)
()内で指定した時間(単位はmsec)だけ、プログラム実行を待たせます。
今回のプログラムでは明るさ検出センサの値によりLEDの明るさ制御を行ってから、500msec=0.5sec待ったのちふたたび明るさ検出センサの値を確認するプログラムをループ実行しています。
マイクロ秒単位で指定したい場合は、delayMcroseconds(時間)を使います。
スクラッチ
Scrattino3(スクラッチーノ3)というソフトウェアを使って、プログラミングする方法です。
Scrattino3のインストール方法やプログラミング、動作確認方法については、以下の記事にて詳しく説明しています。
動画を参考にプログラミングしてみよう
スクラッチプログラム(Scrattino3|スクラッチーノ3)
上記がスクラッチのプログラミングとその解説になります。
Scrattino3(スクラッチーノ3)でのスクラッチプログラミングの作り方について、本記事冒頭の動画にて詳しく説明していますのでぜひご覧ください。
変数の設定方法
スクラッチプログラム内で使用する変数の追加方法を説明します。
①変数をクリック
②「変数を作る」をクリック
③変数名を入力
④「OK」をクリック
上記4ステップで変数の追加が完了します。
変数名の左側にあるチェックをいれることで、画面上(ネコの上あたり)に現在の変数値を表示させることができます。
また、変数ブロックにも設定した変数が表示され、複数の変数を作った場合はプルダウンにて変数名を選択できます。
変数名は分かりやすさが重要なんだ
Arduino専用ブロックについては、以下の記事にて詳しく説明しています。
動作確認方法
- LED点灯色が段階的に緑色⇒赤色⇒青色⇒緑色の順に切り替わるか?
- 点灯色が緑色に変化したのち、再び赤色への色変化動作が行われるか?
上記項目について確認していきましょう。
LED点灯色が段階的に緑色⇒赤色⇒青色⇒緑色の順に切り替わるか?
徐々に色変化が起きていることを、目で見て確認してください。
緑色⇒赤色⇒青色⇒緑色の順に切り替わっているか確認してください。
色の入れ替わりの組み合わせを変更して、どんな色合いになるか試してみるものいいですね
可能な方はArduino IDEプログラミングとの動作周期の違いを確認してみてください
点灯色が緑色に変化したのち、再び赤色への色変化動作が行われるか?
継続的に色変化が起きることを確認してください。
もし、色変化が途中で止まってしまった場合はプログラム内容を見直して修正してください。
フルカラーLED制御回路(LESSON6)のまとめ
- フルカラーLEDはR(赤)G(緑)B(青)の組み合わせで色を作る電子機器
- Arduinoのアナログ出力は0~5Vの出力電圧を0~255の値で扱う
- RGBそれぞれのアナログ出力値を変化させることで色を作ることができる
小学生のお子様には断然、スクラッチでのプログラミングがおすすめです!
次は電子機器の学習プログラムである、LESSON7(シフトレジスタによる複数LED点灯制御)にチャレンジしてください。
次はシフトレジスタについて学習しましょう!
小学生のお子様には、プログラミング教室での基礎学習をおすすめしています!
Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。
Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。
LESSON1:LED点灯プログラミングの学習についてはこちら!
LESSON5:周りの明るさに応じたLEDの明るさ制御プログラミングの学習についてはこちら!
コメント