Arduinoと戯れてみる!

Processing 入門 Lesson 14【LEDの点灯 消灯】

Processing-lesson14-00Processing入門編
スポンサーリンク
Processing 入門
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点です。

1.LEDの点灯、消灯をパソコンから制御して遊ぶ!
2.ArduinoとProcessingの通信方法を理解

 

本Lessonの学習に必要な物

本Lessonに必要となる電子部品を列挙します。

 

抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!

という方は、「電子工作基本部品セット」が使い勝手が良い。

 

実践 回路作成

最初に回路図を確認してください。

次に、回路図に合わせて部品を接続します。

最後にスケッチ(コード)を書いて、パソコンからLEDの点灯、消灯をしみましょう。

 

Arduinoのピン配置を確認したい方は番外編02を参照してください。

 

回路図

抵抗とLEDのみの単純な回路です。

抵抗はLEDの焼損を防ぐための電流制限抵抗のため実質LEDのみの回路です。

利用するピンは9番ピン(デジタル入出力)。

 

回路図がこちら。

 

processing-lesson01-01

 

こちらがブレッドボード図。

processing-lesson01-02

 

 

回路図は「fritzing」を利用しています。

「fritzing」の使い方は下記を参照してください。

 

接続

下図に示すように、用意した部品を使用して接続しましょう。

部品はLEDと抵抗のみなので簡単に接続できます。

 

使用するポートは、デジタル入出力ピンの「9」です。

穴に挿入しづらいときは、ラジオペンチなどを使用してください。

Processing-lesson14-01

 

Serial入出力のためのクラス

ProcessingとArduinoを連携するために必要な知識としてSerialクラスを理解しておく必要があります。

スケッチを理解する前に、ProcessingのSerialクラスについて理解しておきましょう。

シリアル通信プロトコルを使い、データをやり取りするためののクラスがSerialです。

 

serialパッケージをimport

Serialクラスの機能を使うためには、「serialパッケージをimport」する必要があります。

import processing.serial.*;

 

Serialオブジェクトの生成処理

次に、Serialオブジェクトの生成処理が必要です。

生成するためには、Serialクラスのコンストラクタ使用します。

Serial(parent, portName, baudRate);
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」を送っているからです。

本LessonのProcessingスケッチは、シリアルモニタをマウスに置き換えていると考えていただければ理解しやすいと思います。

 

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
通信速度、COMポートの番号はArduinoと合わせる必要があります。
COMポートはAruduinoがつながっている番号であり、デバイスマネージャで確認可能
補足事項2
println(Serial.list());
を利用することで、使用できるCOMポートを拾ってくれます。
いちいちデバイスマネージャーを確認する必要がないため設定すると便利です。
取得したリストの最初のシリアルポートがArduinoボードとなります。
Serial.list()[0] ← [0]に格納されている。
※OS環境により、ならない場合は手動で書き換えて設定してください。

 

動作確認

では、さっそく動作を確認していきます。

1:Arduinoのスケッチ書き込み
2:Processingスケッチ実行
3:マウスボタンを押す、離すでLEDが点灯、消灯

となるはずです。

 

Processingのウィンドウ画面には青い四角形が現れ、押すと赤い四角形になります。

青い四角形(マウスボタンを押していない):LED消灯
赤い四角形(マウスボタンを押している):LED点灯

Processing ウィンドウLEDの「点灯」「消灯」
Processing-lesson14-02Processing-lesson14-03
Processing-lesson14-04Processing-lesson14-05

 

 

まとめ

Lesson 14【LEDの点灯 消灯】はここまで。

本Lessonでは以下の2つについて目標としました。

1.LEDの点灯、消灯をパソコンから制御して遊ぶ!
2.ArduinoとProcessingの通信方法を理解

ようやく、Arduinoと連携するためのLessonに突入です。

シリアルポートを使いパソコンからArduinoを制御することができれば色々と応用の幅が広がるはず。

色々と試していきたいと考えている管理人です。

 

次回Lesson 15はProcessingでLEDの調光に仕方について学習していきます。

少しずつ、難易度を上げていきたいと考えています。

Processing 入門 Lesson 15【LEDの調光】
Lesson 15は【LEDの調光】に挑戦。Processingのウィンドウ画面でマウスを動かすことでLEDの明るさを調整するスケッチを作ってみます。さしずめ、家の中にある調光機能付きのLEDライトのイメージでしょうか。Lesson 01で…

 

Processingを始めようと考えている方。

ネット情報のみでも十分に学習可能です。

手元に参考書がほしいと考えている場合は下記の2冊程度で十分と考えます。

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分)一般プライム会員
5,000円~19,999円0.5%1.0%
2,0000円~39,999円1.0%1.5%
40,000円~89,999円1.5%2.0%
90,000円~2.0%2.5%

さらに、初回チャージで2000ポイントもらえるキャンペーンも実施中!
※いつもは1000ポイント、今なら2000ポイントです!

\Amazonギフト券 2000ポイントキャンペーン/
Amazonチャージ 初回購入で2000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

コメント

タイトルとURLをコピーしました