Lesson 15
【LEDの調光】
こんにちは、管理人のomoroyaです。
Lesson 14は【LEDの点灯 消灯】ということでマウスのクリックによってLEDを点灯、消灯させることを通して「Serialクラス」を理解しました。
Lesson 15では、【LEDの調光】に挑戦。
Processingのウィンドウ画面でマウスを動かすことでLEDの明るさを調整するスケッチを作ってみます。
さしずめ、家の中にある調光機能付きのLEDライトのイメージでしょうか。
Lesson 01で遊んだ、「Dimmer」のサンプルスケッチの理解にもつながるはずです。
Processing学習の最終目標は、「6軸モーションセンサ」との連携です。
Lesson 14以降を学習することでLesson 01 ~ Lesson 06【Arduino連携変 そのX】で遊んだスケッチも理解できるようになるはず。
これからのLessonを楽しみましょう!
Processingを始めようと考えている方。
ネット情報のみでも十分に学習可能です。
手元に参考書がほしいと考えている場合は下記の2冊程度で十分と考えます。
はじめに
Lesson 14からはArduinoと一緒に学習していきます。
Arduinoの詳細な解説は「Arduino入門編」にて確認してください。
本LessonではLEDの明るさを調整するスケッチを描いていきます。
明るさの調整には「パルス変調」を使います。
Arduinoでパルス変調をするためには、アナログ出力ピンを利用します。
始めに、下記を読んでおくと理解しやすいはずです。


Lesson 15 目標
本Lessonの目標は以下の2点です。
2.ArduinoとProcessingの通信方法を理解
3.Arduinoのパルス変調の復習
本Lessonの学習に必要な物
本Lessonに必要となる電子部品を列挙します。
Lesson 14と同じ電子部品となります。
- USB接続用のPC(IDE統合環境がインストールされたPC)
- UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード(安価)
※おすすめブレッドボード1、おすすめブレッドボード2 - 5mm発光ダイオード、5色ダイオードセット
- ELEGOO 17値1%抵抗器、0オーム〜1Mオーム(525本)
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
実践 回路作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にスケッチ(コード)を書いて、パソコンからLEDの輝度を調整してみましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
抵抗とLEDのみの単純な回路です。
抵抗はLEDの焼損を防ぐための電流制限抵抗のため実質LEDのみの回路です。
Lesson 14と同じ回路となります。
利用するピンも同じ9番ピン、Lesson 14ではON、OFFに利用しましたがLesson 15ではアナログ出力ピン(PWM出力)として利用します。
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
部品はLEDと抵抗のみなので簡単に接続できます。
使用するポートは、アナログ出力ピンの「9」です。
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
Serial入出力のためのクラス 復習
Lesson 14にて解説しましたが、覚えるという意味で再度軽く解説。
Serialクラスの機能を使うためには、「serialパッケージをimport」する。
次に、Serialオブジェクトの生成処理。
生成するためには、Serialクラスのコンストラクタ使用。
parent:通常「this」を使用
portName:ポート番号(COM*) デフォルト:COM1
baudRate:通信速度 デフォルト:9600
Serial Port; //シリアルクラスのオブジェクト、変数の設定
Port = Serial(this, COM3, 9600); //Serialオブジェクト生成、Portへ代入
Serialクラスの主なメソッドを紹介。
Serialクラス | 内容 |
---|---|
available() | 読めるデータのバイト数を返す。 戻り値が0より大きい場合、データを利用できる。 |
serial.list() | 使用可能なシリアルポートのリストを返す。 |
read() | 次の1バイトの読み込み。 0~255の値を返す。 読めるバイトがないと-1を返す。 データが使用可能かどうかを確認するために最初にavailable()で確認することを推奨します。 |
write() | バイト、文字、整数、バイト[]、文字列をシリアルポートに書き込みます。 |
詳しく知りたい方は、公式のホームページで確認!
実践 スケッチ作成
ProcessingとArduinoを連携するためには、お互いにデータのやり取りをする必要があります。
本Lessonのデータのやり取りは、「Processing」 → 「Aruduino」。
マウスを動かすことによって、マウスの動きを0~255の数値としてArduinoに送信。
Arduino側では、その数値をパルス変調に利用しLEDの明るさを調整。
といった動作になります。
Arduino側では、受信データ「0~255」のデータに対して以下の動作をさせます。
- 受け取った、「0~255」のデータにあわせ、PWM(パルス変調)した波形をLEDへ送る。
Processing側のスケッチはマウスの動作によって以下の文字を送信させます。
- マウスの位置を「0~255」のデータに変換してArduinoに送信
Arduino用 サンプルスケッチ
サンプルスケッチ(コード)を下記に示します。
アナログ出力である9番ピンを「OUTPUT指定」します。
あとは、受け取ったデータをanalogWrite()関数で出力する単純なものです。
//Lesson 15 Arduino用スケッチ //ProcessingによるLEDの調光 //https://omoroya.com/ int ledPin = 9; //アナログ出力9にLEDを割り当て void setup() { Serial.begin(9600); //シリアル通信のデータ転送レートを設定しポート開放 pinMode(ledPin, OUTPUT); //9番ピンをOUTPUTに設定 } void loop() { if(Serial.available() > 0){ //受信データがある場合if文内を処理 byte val = Serial.read(); //受信したデータをvalにbyte型として格納 analogWrite(ledPin, val); //変調したパルスを9番ピンへ出力 } }
このスケッチもLesson 14同様にProcessingがなくても動かすことができます。
Aruduinoのシリアルモニタを立ち上げて、「0~255」のデータを入力して送信することでLEDの輝度を調整することができます。
ただし、シリアルモニタでのデータのやり取りはASCIIコードとなります。
0を入力して送信しても、送っているデータは「0」ではありません。
簡単に確認したいのであれば、「!」、「~」を入力して送信してみてください。
それぞれ、33と126の入力に相当します。
Processing用 サンプルスケッチ
サンプルスケッチ(コード)を下記に示します。
mouseX変数を使い、マウスのX座標をシリアルポートへ送信するスケッチとなります。
Processingのウィンドウサイズを256とすることで、マウスの位置がウィンドウの中では0~255の範囲で動くというのがミソになります。
ウィンドウサイズを変更したい場合は、オフセットを考慮したスケッチを描いてください。
//Lesson 15 Processing用スケッチ //ProcessingによるLEDの調光 //https://omoroya.com/ import processing.serial.*; //Arduinoと通信するためのライブラリの読み込み Serial port; //シリアル通信を行うための変数を定義 void setup() { size(256, 150); //ウィンドウサイズ background(0); //背景の色 println("Available serial ports:"); printArray(Serial.list()); //使用できるCOMポートの取得 port = new Serial(this, Serial.list()[0], 9600); //通信するポートと速度の設定、Arduinoと合わせる必要あり } void draw() { //枠線作り fill(0); //黒塗り stroke(255); //枠線白 rect(0, 50, 255, 50); //四角形描画 //マウスに合わせて四角形の移動とシリアルポートへの出力 fill(mouseX); //マウスの位置で黒から白へ色変更 rect(mouseX, 50, 10, 50); //マウスの位置に合わせて四角形移動 port.write(mouseX); //マウスのX位置をシリアルポートへ出力 }
動作確認
では、さっそく動作を確認していきます。
1:Arduinoのスケッチ書き込み
2:Processingスケッチ実行
3:マウスボタンを動かすことでLEDの明るさが調整される。
となるはずです。
Processingのウィンドウ画面には白枠の四角形が現れ、マウスを右から左に動かすと黒から白に徐々にかわります。
その変化にあわせて、LEDの明るさも変わります。
四角形左端:LED消灯
四角形右端:LED点灯(Maxの明るさ)
四角形左端から右端の間:場所に応じた明るさ
Processing ウィンドウ | LEDの「調光」 |
---|---|
![]() |
![]() |
![]() |
![]() |
まとめ
Processing 入門 Lesson 15【LEDの調光】はここまで。
本Lessonでは以下の3つについて目標としました。
2.ArduinoとProcessingの通信方法を理解
3.Arduinoのパルス変調の復習
パソコンと連携することで遊びの幅が広がります。
色んなことをして遊べそうです。
こんな、簡単なことでも管理人は楽しいです!
次回Lesson 16はProcessingでRGBダイオード制御します。

RGBダイオードの詳細はこちら。
Processingを始めようと考えている方。
ネット情報のみでも十分に学習可能です。
手元に参考書がほしいと考えている場合は下記の2冊程度で十分と考えます。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント