第4回 PepperでHello World
前回までで、Pepperの作成が終了し、パソコンでの動作確認が終了しました。また、Processingの準備も完了しました.
今回はPepperを使って、LEDの点滅を行うプログラムをProcessingで作成します。
【準備】
Pepper単体では、何も入出力がないため、最も簡単な出力デバイスとしてLEDを1個だけ接続します。必要な物は次のとおりです。
また、配線用にブレッドボード付属のジャンパ線を使います。

前回までで、Pepperの作成が終了し、パソコンでの動作確認が終了しました。また、Processingの準備も完了しました.
今回はPepperを使って、LEDの点滅を行うプログラムをProcessingで作成します。
【準備】
Pepper単体では、何も入出力がないため、最も簡単な出力デバイスとしてLEDを1個だけ接続します。必要な物は次のとおりです。
ブレッドボード 1
LED (赤) 2
抵抗 470オーム 2
また、配線用にブレッドボード付属のジャンパ線を使います。
【ハードウエアの作成 その1】
まずは,LEDを1個だけつなぎます。
Pepperのモード1を使います。モード1ではアナログ出力が2ポートとアナログ入力が2ポート使えますが、アナログ出力0を使います。Pepperのコネクタでは、4番になります。
回路図を示します。
Pepperをブレッドボードで使う場合ピン同士がショートしないように、ボードに対して縦方向に挿し込むことが必要になります。写真のブレッドボードの場合には数字の並んでいる方向になります。横方向に挿し込むと、ピン同士がショートしてしまいます。
1ピンの+5Vと6ピンのグラウンドを先に横のバス・バーに接続しておくと良いと思います。また、2ピンから5ピンはジャンパで反対側(fからj列)に渡しておくと配線が楽です。
Pepperを挿し込んで、ジャンパ線に当たらないか確認します。
ジャンパ線は芯線が1本しか入っていない単線です。芯線をブレッドボードに垂直に注意深く挿し込んでください。新しいブレッドボードはバネが強く入りにくいことがあるので,ピンセットやラジオ・ペンチなどでジャンパ・ピンを挟んで挿し込むと挿し込みやすいと思います。
抵抗の足をコの字型に曲げます。少し長い場合には、挿し込む穴の距離を確認して、ニッパーで切ってください。
LEDは切らずにそのままでも問題ありません。長いほうが+側で、Pepperのコネクタの4番ピン側につないでください。

足を切らなかった場合には、空中で導線同士が接触しないようにうまく配置を工夫してください。
完成した写真を示します。
【Processingでプログラム(その1)マウスでLEDを点灯する】
Processingを立ち上げて、LEDをひとつだけ点灯するプログラムを作成します。
一般的には、最初のプログラムとしては”Hello World”と表示するのが定番です。また、電子工作の定番はLEDが点滅するだけの「LEDチカチカ」です。
単純なLEDチカチカでは面白くないので,今回はフィジカル・コンピューティングらしく、マウス・ボタンを押したときだけLEDが点灯するプログラムを作成してみます。
まず、Processingで作成したプログラム1analogInterraction0.pdeを示します。
Gainerのライブラリを使うため、プログラムの最初で import文が使われています(4行)。次に、変数の宣言があります。(6~8行)
プログラムの中心として、setup(), draw(), mousePressec(), mouseReleased()という四つの関数が定義されています。その内容を簡単に説明します。
setup()はプログラムの最初に呼ばれる関数で、主に変数の初期化や準備のための処理が行われます。
ここでは表示ウィンドウのサイズを縦250、横250に設定しています (11行) 。次に、12行でgainerをモード1で初期化しています。後の処理は画面表示のための初期化です。
draw()は画面の描画を行う関数ですが、setup()が終了するとプログラムが終了するまで、何度も自動的に呼ばれ続けます。関数内では、onという変数の内容を見て、画面に”ON”または”OFF”と色違いで表示しています(19から28行)。
実際に、Pepperに信号を送っているのは、30行目のgainer.analogOutputという関数呼び出しです。最初の引数はアナログ・チャネルの番号ですが、ここではチャネル0にLEDをつないだので、0番を指定します。2番目の引数が出力する値です。アナログ出力は8ビットですので、0から255を指定することができます。ここでは変数onに255をかけて、0または255を出力しています。
mousePressed(), MouseReleased()はウィンドウ内でマウス・ボタンが押される、または離されると呼び出される関数です。それぞれの関数内で左ボタンが押された場合のみ、変数onの値を変更しています。この値はdrawの中で参照されます。
Processingのスケッチ画面でプログラムを入力し、メニューから実行を選択するとプログラムがコンパイルされ、エラーがなければ続いて実行されます。画面のようなウインドウが現れます。

ウィンドウ内をマウスでクリックすると、画面が反転しONの表示になります。
マウスをクリックしている間はLEDが光ります。

これまでの試行で、もしうまくPepperと通信できないような場合にはエラーが出ます。”Gainer not found !!”のようなエラーが出た場合には、Pepperとの通信をもう一度確認してください。
タイプミスなどプログラムのミスの場合にもコンパイル時にエラーが出ますので、入力したプログラムの該当個所を確認してください。

次回は、少しプログラムを改造して、アナログ出力の利点を活用します。
まずは,LEDを1個だけつなぎます。
Pepperのモード1を使います。モード1ではアナログ出力が2ポートとアナログ入力が2ポート使えますが、アナログ出力0を使います。Pepperのコネクタでは、4番になります。
回路図を示します。
1ピンの+5Vと6ピンのグラウンドを先に横のバス・バーに接続しておくと良いと思います。また、2ピンから5ピンはジャンパで反対側(fからj列)に渡しておくと配線が楽です。
抵抗の足をコの字型に曲げます。少し長い場合には、挿し込む穴の距離を確認して、ニッパーで切ってください。
LEDは切らずにそのままでも問題ありません。長いほうが+側で、Pepperのコネクタの4番ピン側につないでください。
足を切らなかった場合には、空中で導線同士が接触しないようにうまく配置を工夫してください。
完成した写真を示します。
Processingを立ち上げて、LEDをひとつだけ点灯するプログラムを作成します。
一般的には、最初のプログラムとしては”Hello World”と表示するのが定番です。また、電子工作の定番はLEDが点滅するだけの「LEDチカチカ」です。
単純なLEDチカチカでは面白くないので,今回はフィジカル・コンピューティングらしく、マウス・ボタンを押したときだけLEDが点灯するプログラムを作成してみます。
まず、Processingで作成したプログラム1analogInterraction0.pdeを示します。
プログラム 1
001 /*
002 Hello World from pepper
003 */
004 import processing.gainer.*;
005
006 PFont myFont;
007 Gainer gainer;
008 int on = 0;
009
010 void setup(){
011 size(250,250);
012 gainer = new Gainer(this,Gainer.MODE1);
013 myFont = loadFont("CourierNewPSMT-24.vlw");
014 textFont(myFont, 24);
015 frameRate(30);
016 }
017
018 void draw(){
019 // Display Control
020 if (on == 1) {
021 background(255);
022 fill(0);
023 text("ON" ,100, 120);
024 } else {
025 background(0);
026 fill(255);
027 text("OFF" ,100, 120);
028 }
029 // LED Control
030 gainer.analogOutput(0, on * 255);
031 }
032
033 void mousePressed() {
034 if(mouseButton==LEFT)
035 on = 1;
036 }
037 void mouseReleased() {
038 if(mouseButton==LEFT)
039 on = 0;
040 }
Gainerのライブラリを使うため、プログラムの最初で import文が使われています(4行)。次に、変数の宣言があります。(6~8行)
プログラムの中心として、setup(), draw(), mousePressec(), mouseReleased()という四つの関数が定義されています。その内容を簡単に説明します。
setup()はプログラムの最初に呼ばれる関数で、主に変数の初期化や準備のための処理が行われます。
ここでは表示ウィンドウのサイズを縦250、横250に設定しています (11行) 。次に、12行でgainerをモード1で初期化しています。後の処理は画面表示のための初期化です。
draw()は画面の描画を行う関数ですが、setup()が終了するとプログラムが終了するまで、何度も自動的に呼ばれ続けます。関数内では、onという変数の内容を見て、画面に”ON”または”OFF”と色違いで表示しています(19から28行)。
実際に、Pepperに信号を送っているのは、30行目のgainer.analogOutputという関数呼び出しです。最初の引数はアナログ・チャネルの番号ですが、ここではチャネル0にLEDをつないだので、0番を指定します。2番目の引数が出力する値です。アナログ出力は8ビットですので、0から255を指定することができます。ここでは変数onに255をかけて、0または255を出力しています。
mousePressed(), MouseReleased()はウィンドウ内でマウス・ボタンが押される、または離されると呼び出される関数です。それぞれの関数内で左ボタンが押された場合のみ、変数onの値を変更しています。この値はdrawの中で参照されます。
ウィンドウ内をマウスでクリックすると、画面が反転しONの表示になります。
これまでの試行で、もしうまくPepperと通信できないような場合にはエラーが出ます。”Gainer not found !!”のようなエラーが出た場合には、Pepperとの通信をもう一度確認してください。
タイプミスなどプログラムのミスの場合にもコンパイル時にエラーが出ますので、入力したプログラムの該当個所を確認してください。
次回は、少しプログラムを改造して、アナログ出力の利点を活用します。
桑田喜隆





コメントする