Lesson 14
【LEDの点灯 消灯】
こんにちは、管理人のomoroyaです。
Lesson 13は【キーボード関連の変数と関数】ということでキーボードのインタラクションについて確認しました。
Processingの基本的な構文の確認はLesson 13で終了とします。
Lesson 14からは、ProcessingでArduinoを制御していきます。
制御する過程で、ProcessingとArduinoの情報のやり取りについて理解していきます。
Processing学習の最終目標は、「6軸モーションセンサ」との連携です。
本Lessonから、ようやくArduino登場です。
Lesson 14以降を学習することでLesson 01 ~ Lesson 06【Arduino連携変 そのX】で遊んだスケッチも理解できるようになるはず。
これからのLessonが楽しみです。
Processingを始めようと考えている方。
ネット情報のみでも十分に学習可能です。
手元に参考書がほしいと考えている場合は下記の2冊程度で十分と考えます。
はじめに
本LessonからArduinoと一緒に学習していきます。
Arduinoの詳細な解説は「Arduino入門編」にて確認してください。
Arduinoといえば、始めにすることはLEDの点灯、消灯ですよね。
このLEDをProcessingのスケッチを利用すことでパソコン上から制御することを学習していきます。
ダイオードの使いかたなどの詳細は下記を参考にしてください。
Arduino 入門 Lesson 02 【ダイオード点滅編】
Arduino 入門 Lesson 03 【ダイオードの輝度変更編】
Arduino 入門 番外編 03 【デジタル出力 とは】【 デジタル入力 とは】
Lesson 14 目標
本Lessonの目標は以下の2点です。
2.ArduinoとProcessingの通信方法を理解
本Lessonの学習に必要な物
本Lessonに必要となる電子部品を列挙します。
- 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のみの回路です。
利用するピンは9番ピン(デジタル入出力)。
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
部品はLEDと抵抗のみなので簡単に接続できます。
使用するポートは、デジタル入出力ピンの「9」です。
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
Serial入出力のためのクラス
ProcessingとArduinoを連携するために必要な知識としてSerialクラスを理解しておく必要があります。
スケッチを理解する前に、ProcessingのSerialクラスについて理解しておきましょう。
シリアル通信プロトコルを使い、データをやり取りするためののクラスがSerialです。
serialパッケージをimport
Serialクラスの機能を使うためには、「serialパッケージをimport」する必要があります。
Serialオブジェクトの生成処理
次に、Serialオブジェクトの生成処理が必要です。
生成するためには、Serialクラスのコンストラクタ使用します。
parent:通常「this」を使用
portName:ポート番号(COM*) デフォルト:COM1
baudRate:通信速度 デフォルト:9600
Serial Port; //シリアルクラスのオブジェクト、変数の設定
Port = Serial(this, COM3, 9600); //Serialオブジェクト生成、Portへ代入
Serialクラスのメソッド
Serialクラスの主なメソッドを紹介しておきます。
Serialクラス | 内容 |
---|---|
available() | 読めるデータのバイト数を返す。 戻り値が0より大きい場合、データを利用できる。 |
serial.list() | 使用可能なシリアルポートのリストを返す。 |
read() | 次の1バイトの読み込み。 0~255の値を返す。 読めるバイトがないと-1を返す。 データが使用可能かどうかを確認するために最初にavailable()で確認することを推奨します。 |
write() | バイト、文字、整数、バイト[]、文字列をシリアルポートに書き込みます。 |
他にも色々あります。
使いながら解説を増やしていきます。
すぐに知りたいかたは、公式のホームページで確認してください。
実践 スケッチ作成
ProcessingとArduinoを連携するためには、お互いにデータのやり取りをする必要があります。
本Lessonでは、マウスを押している動作とマウスが押されていない動作によりLEDを点灯、消灯させます。
Processingを使って、マウスを押した押していないという「データ」をArduinoへ送信するスケッチを描くということです。
Arduino側では、受信データ「p」と「r」に対して以下の動作をさせます。
- p:LED点灯
- r:LED消灯
Processing側のスケッチはマウスの動作によって以下の文字を送信させます。
- マウスを押している間は「p」
- マウスを離すと「r」
Arduino用 サンプルスケッチ
サンプルスケッチ(コード)を下記に示します。
デジタル入出力ピンである9番ピンを「OUTPUT指定」をします。
9番ピンに「H」「L」を与えてLEDの「点灯」「消灯」をするスケッチとなります。
//Lesson 14 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文内を処理 char val = Serial.read(); //受信したデータをvalにchar文字として格納 if(val == 'p'){ //受信データがpの場合 digitalWrite(ledPin, HIGH); //9番ピンをHigh }else if(val == 'r'){ //受信データがrの場合 digitalWrite(ledPin, LOW); //9番ピンをLow } } }
このスケッチ、Processingがなくても動かすことができます。
Aruduinoのシリアルモニタを立ち上げて、「p」を入力して送信、「r」入力して送信することでLEDを「点灯」「消灯」させることができます。
シリアルモニタを介して、Arduinoに「p」と「r」を送っているからです。
Processing用 サンプルスケッチ
サンプルスケッチ(コード)を下記に示します。
mousePressed変数を使い、マウスの「押した」「押していない」をシリアルポートへ文字「p」「r」として送信するスケッチとなります。
//Lesson 14 Processing用スケッチ //ProcessingによるLEDの点灯、消灯 //https://omoroya.com/ import processing.serial.*; //Arduinoと通信するためのライブラリの読み込み Serial port; //シリアルクラスのオブジェクト。シリアル通信を行うための変数を定義 void setup() { size(500, 300); //ウィンドウサイズ background(200); //背景の色 rectMode(CENTER); //描画座標をセンターに変更 println("Available serial ports:"); printArray(Serial.list()); //使用できるCOMポートの取得 port = new Serial(this, Serial.list()[0], 9600); //Serialオブジェクトを生成。通信するポートと速度の設定、Arduinoと合わせる必要あり frameRate(30); //30fpsに設定 } void draw() { if(mousePressed == true){ port.write('p'); //マウスが押されたらpをシリアルポートに書き込み rect(250, 150, 50, 50); //四角形描画 fill(255, 0, 0); //赤 }else{ port.write('r'); //マウスが押されていなかったらrをシリアルポートに書き込み rect(250, 150, 50, 50); //四角形描画 fill(0, 0, 255); //青 } }
動作確認
では、さっそく動作を確認していきます。
1:Arduinoのスケッチ書き込み
2:Processingスケッチ実行
3:マウスボタンを押す、離すでLEDが点灯、消灯
となるはずです。
Processingのウィンドウ画面には青い四角形が現れ、押すと赤い四角形になります。
青い四角形(マウスボタンを押していない):LED消灯
赤い四角形(マウスボタンを押している):LED点灯
Processing ウィンドウ | LEDの「点灯」「消灯」 |
---|---|
まとめ
Lesson 14 【LEDの点灯 消灯】はここまで。
本Lessonでは以下の2つについて目標としました。
2.ArduinoとProcessingの通信方法を理解
ようやく、Arduinoと連携するためのLessonに突入です。
シリアルポートを使いパソコンからArduinoを制御することができれば色々と応用の幅が広がるはず。
色々と試していきたいと考えている管理人です。
次回Lesson 15はProcessingでLEDの調光に仕方について学習していきます。
少しずつ、難易度を上げていきたいと考えています。
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日間の無料会員を試す/
無料会員登録
コメント