おすすめArduinoキットとLESSON記事はこちらから!click here

スクラッチプログラミング フルカラーLEDを制御【Arduino:Lesson6】

  • URLをコピーしました!

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とは、ざっくりいうと「赤、緑、青のLEDが集まっている点灯機器」です。

光の三原色の原理を利用して、その3つの点灯色の点灯組み合わせで点灯色を変化させます。

光の三原色
光の三原色

ArduinoUnoでの点灯色の組み合わせはアナログ出力値2563=16,777,216(通り)です。

アナログ出力(PWM)によるフルカラーLED点灯色制御の説明

今回のLESSONで取り扱うフルカラーLED点灯色制御の動作説明は、以下になります。

フルカラーLED点灯動作の説明
  • LED点灯色が緑色⇒赤色⇒青色⇒緑色の順に切り替わる。
  • LED点灯色は段階的に変化する。
  • 点灯色が緑色に変化したのち、再び赤色への色変化動作が行われる。
動作説明とスクラッチプログラミング手順の解説動画
動画での解説内容
  • フルカラーLEDを用いた、点灯色の段階的な切り替え制御動作
  • スクラッチを使ったプログラミング手順

まずは動画を見て、LED点灯色が段階的に変化する動作を確認してください。

また、スクラッチを使ったプログラミングをするためには準備作業が必要です。

動画にて準備作業に必要な手順をくわしく説明しています。

フルカラーLEDを用いた、段階的な点灯色切り替え制御回路の作り方

STEP
必要なものを準備

プログラミングするために、パソコンが必要です。

電子部品等の必要な機器については、このあと説明します。

STEP
Arduinoを使うためのセットアップ

パソコンに統合開発ソフトウェア「ArduinoIDE」のインストールを行います。

Arduinoのセットアップ方法については、以下の記事にて詳しく説明しています。

Arduino IDEでの言語プログラミングも勉強したい方は、プログラミングの流れを理解しておいてください。

以下の記事にて、プログラミングから動作確認までの流れを詳しく説明しています。

STEP
スクラッチでプログラミングするためのセットアップ

パソコンにスクラッチでプログラミングするためのソフトウェア「Scrattino3(スクラッチーノ3)」のインストールを行います。

以下の記事にて詳しく説明しています。

STEP
電気配線

電子部品とジャンパーワイヤの差し込みだけで配線が可能です。

STEP
プログラミング

専用開発ソフトウェア「Arduino IDE」を使います。

文字列プログラミングを行う場合は、私が作成したプログラムをコピペして使ってください。

スクラッチプログラミングについては、動画または後述するプログラミング例を参考にしてください。

STEP
動作確認

プログラムが完成したら動作確認を行います。

動作確認チェックリスト
  • LED点灯色が段階的に緑色⇒赤色⇒青色⇒緑色の順に切り替わるか?
  • 点灯色が緑色に変化したのち、再び赤色への色変化動作が行われるか?

記載のプログラムは動作確認済です。

動作確認方法については、以下の記事にて詳しく説明しています。

段階的な点灯色切り替え制御回路で使うもの

明るさセンサ検出値に応じたLEDの点灯明るさ制御回路で使うもの
配線が完了しプログラム転送できる状態
準備するもの
  1. パソコン
  2. Arduino本体
  3. USBケーブル
  4. ブレッドボード
  5. フルカラーLED
  6. 抵抗(220Ω)×3本
  7. ジャンパー線(オスーオス)×4本

今回はELEGOO社の初心者スターターキットに入っている部品のみで作ることができますが、Arduino裏面のショート対策としてクリアケースも併せて準備することをおすすめします。

パソコン

プログラムを作成するために必要です。

プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。

パソコンのOSはWindows、Macどちらでも対応可能です。

Arduino本体【キット】

Arduino本体
Arduino本体

基本的なエディション「Arduino Uno」の互換機である、ELEGOO社のUNO R3を使用しています。

Arduino本体裏面のショート対策に、別売りのクリアケースの購入をおすすめしています。

各ソケットの役割など、Arduino本体の機能について以下の記事にて詳しく説明しています。

USBケーブル【キット】

必要なUSBケーブルの説明写真
USBケーブル

パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。

ブレッドボード【キット】

ブレッドボードの機能説明図
ブレッドボードの機能説明図

たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。

フルカラーLED【キット】

フルカラーLEDの各端子の機能説明
フルカラーLEDの各端子機能説明

フルカラーLEDを1本使用します。

フルカラーLEDは端子が4本あり、RGB点灯色+共通GNDの割り当てとなります。

また、LED素子にはプラスマイナスの極性があるため配線時には注意が必要です。

極性を間違えて配線すると、LEDは点灯しません

抵抗(220Ω)【キット】

220Ω抵抗とカラーコードによる見分け方
220Ω抵抗と色による見分け方

220Ωの抵抗を3本使用し、フルカラーLEDのRGB端子に1本ずつ接続します。

LEDは流せる電流値に制約があるため、抵抗を直列つなぎすることでLEDに流れる電流を調節します。

抵抗は極性がないので、配線時に方向を気にする必要はありません。

LEDを点灯させるために接続する抵抗の選び方については、こちらの記事で詳しく説明しています。

LED点灯色VFIF
1.95V0.02A
3.3V0.02A
3.3V0.02A
フルカラーLED各色に対するVF,IF値

ジャンパー線(オスーオス)【キット】

キットに同梱されているジャンパー線(オスーオス)の説明
ジャンパー線

ジャンパー線を4本使用します。

今回のLESSONでは、Arduino本体とブレッドボードの接続に使います。

せでぃあ

LED点灯色と配線色を合わせると、プログラミング時に間違えにくくなるのでおすすめですよ!

今回のLESSONで使用可能な、スターターキットです。

(おすすめ!)モーターやLEDディスプレイ等の機器を備えたコスパの高いキットです。

【おすすめ!】Arduino本体裏面のショート対策におすすめです。

初心者キットに含まれる機器に関しては、以下の記事にて詳しく紹介しています。

配線のやり方

Arduinoとの配線完了時の状態写真
配線完了時の状態写真
アナログ出力機能(PWM)を用いたフルカラーLED点灯色制御回路の配線説明図
フルカラーLED点灯色制御回路の配線説明図(fritzingを用いて作成)

上図が配線説明図となりますので、これと同じ配線をすれば完成します。

必要な配線作業
  • フルカラーLEDをブレッドボードに差し込む
  • 220Ω抵抗をブレッドボードに差し込む
  • ジャンパー線をブレッドボードとArduinoソケットに差し込む(計4本)

LEDや抵抗及びジャンパー線は、Arduinoのソケットやブレッドボード穴に差し込むだけでOKです。

LEDはプラス・マイナスの極性があります

抵抗は極性がありません

フルカラーLEDの端子機能割り当てについては、こちらをご確認ください。

機器故障させないためにも、USBケーブルを抜いた「通電OFF」状態にて配線を行ってください

LEDの点灯色制御の考え方

基本的な考え方としては、赤色、緑色、青色の明るさ度合い(0~255階調)の組み合わせで色を作ります。

アナログ出力機能(PWM)

Arduinoでは0Vと5VのON時間の割合を調節することで、疑似的なアナログ出力ができる機能を持っています。

疑似的なアナログ出力方式をパルス変調といい、PWM(Pulse Width Modulation)出力といいます

LEDの明るさ度合いと出力電圧、アナログ値の説明図
LEDの点灯明るさと出力電圧、アナログ値の説明図

アナログ出力の値は0~255までの256段階で出力します。

フルカラーLED点灯色の例

各色のアナログ出力値と点灯色の組み合わせについて、一例を紹介します。

LED点灯色を赤色に制御する
LED点灯色を赤色に制御する例
LED点灯色を緑色に制御する
LED点灯色を緑色に制御する例
LED点灯色を青色に制御する
LED点灯色を青色に制御する例
LED点灯色を白色に制御する
LED点灯色を白色に制御する例

プログラミングのやり方

Arduino IDEとスクラッチの両方について、プログラミング方法とプログラムを説明します。

2つのプログラミングの特徴は以下の通り。

ArduinoIDE:文字列による命令語形式
スクラッチ:ブロックによるビジュアル形式

文字列を使わないスクラッチの方が、直感的で分かりやすく小学生におすすめのプログラミング方法になります。

スクラッチを使ってプログラミングをする方は、スクラッチの説明まで読み飛ばしてください。

Arduino IDE

Arduino IDEとは統合開発ソフトウェアで、C言語のような文字列を用いたプログラミング方法です。

プログラミングするにあたり、ある程度の命令語を知っておく必要があります。

スクラッチプログラミングをする場合でも、Arduino IDEを使ったファームウェア書き込みが必要ですがプログラミング技術は必要ありません。

Arduino IDEのインストール方法については、以下の記事で詳しく説明しています。

プログラミング方法

Arduino IDEでのプログラミング画面(LESSON6)
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型」を指定します。

スクロールできます
データ型説明扱える範囲
int2バイトの整数を代入可能。-32768~32767
long4バイトの整数を代入可能-2,147,483,648~2,147,483,647
float4バイトの小数を代入可能。3.4028235×1038~-3.4028235×1038
char1バイトの値を代入可能。文字列の代入に利用されます。-128~127
boolean0または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)によるlessonスクラッチプログラミングの説明(LESSON6)
スクラッチを使ったプログラミング

Scrattino3(スクラッチーノ3)というソフトウェアを使って、プログラミングする方法です。

Scrattino3のインストール方法やプログラミング、動作確認方法については、以下の記事にて詳しく説明しています。

プログラミング、動作確認方法については、本記事の説明動画でも紹介しています

せでぃあ

動画を参考にプログラミングしてみよう

スクラッチプログラム(Scrattino3|スクラッチーノ3)

Scrattino3(スクラッチーノ3)によるスクラッチプログラミングlesson6の詳細解説
スクラッチプログラミングと解説

上記がスクラッチのプログラミングとその解説になります。

Scrattino3(スクラッチーノ3)でのスクラッチプログラミングの作り方について、本記事冒頭の動画にて詳しく説明していますのでぜひご覧ください。

Arduinoをプログラミング制御するときは、USBケーブルの常時接続が必要です

変数の設定方法

スクラッチプログラム内で使用する変数の追加方法を説明します。

変数の作り方説明
①変数をクリック
②「変数を作る」をクリック

①変数をクリック
②「変数を作る」をクリック

変数の作り方説明
③変数名を入力
④「OK」をクリック

③変数名を入力
④「OK」をクリック

上記4ステップで変数の追加が完了します。

変数名の左側にあるチェックをいれることで、画面上(ネコの上あたり)に現在の変数値を表示させることができます。

また、変数ブロックにも設定した変数が表示され、複数の変数を作った場合はプルダウンにて変数名を選択できます。

変数名はプログラム内で、どのような役割をはたす数値なのかがイメージできる名称にしましょう

せでぃあ

変数名は分かりやすさが重要なんだ

Arduino専用ブロックについては、以下の記事にて詳しく説明しています。

動作確認方法

配線状態説明図(LESSON6)
配線状態説明図
動作確認チェックリスト
  • LED点灯色が段階的に緑色⇒赤色⇒青色⇒緑色の順に切り替わるか?
  • 点灯色が緑色に変化したのち、再び赤色への色変化動作が行われるか?

上記項目について確認していきましょう。

LED点灯色が段階的に緑色⇒赤色⇒青色⇒緑色の順に切り替わるか?

徐々に色変化が起きていることを、目で見て確認してください。

緑色⇒赤色⇒青色⇒緑色の順に切り替わっているか確認してください。

色の入れ替わりの組み合わせを変更して、どんな色合いになるか試してみるものいいですね

スクラッチプログラミングの場合は、色変化周期を0.01秒に設定しても実際はもう少し遅い周期になります。

せでぃあ

可能な方はArduino IDEプログラミングとの動作周期の違いを確認してみてください

点灯色が緑色に変化したのち、再び赤色への色変化動作が行われるか?

継続的に色変化が起きることを確認してください。

もし、色変化が途中で止まってしまった場合はプログラム内容を見直して修正してください。

フルカラーLED制御回路(LESSON6)のまとめ

この記事の内容をまとめると
  • フルカラーLEDはR(赤)G(緑)B(青)の組み合わせで色を作る電子機器
  • Arduinoのアナログ出力は0~5Vの出力電圧を0~255の値で扱う
  • RGBそれぞれのアナログ出力値を変化させることで色を作ることができる

小学生のお子様には断然、スクラッチでのプログラミングがおすすめです!

次は電子機器の学習プログラムである、LESSON7(シフトレジスタによる複数LED点灯制御)にチャレンジしてください。

せでぃあ

次はシフトレジスタについて学習しましょう!

小学生のお子様には、プログラミング教室での基礎学習をおすすめしています!

プログラミング教室が近くにない方には、オンライン教室という選択肢もあります。

Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。

Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。

LESSON1:LED点灯プログラミングの学習についてはこちら!

LESSON5:周りの明るさに応じたLEDの明るさ制御プログラミングの学習についてはこちら!

応援ありがとうございます(^^)/

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次