第4回 PepperでHello World

 前回までで、Pepperの作成が終了し、パソコンでの動作確認が終了しました。また、Processingの準備も完了しました.
 今回はPepperを使って、LEDの点滅を行うプログラムをProcessingで作成します。

【準備】

 Pepper単体では、何も入出力がないため、最も簡単な出力デバイスとしてLEDを1個だけ接続します。必要な物は次のとおりです。

ブレッドボード    1
LED (赤)    2
抵抗 470オーム    2

 また、配線用にブレッドボード付属のジャンパ線を使います。

pep06-00 Parts.jpg

【ハードウエアの作成 その1】
 まずは,LEDを1個だけつなぎます。
 Pepperのモード1を使います。モード1ではアナログ出力が2ポートとアナログ入力が2ポート使えますが、アナログ出力0を使います。Pepperのコネクタでは、4番になります。
 回路図を示します。

pep06-01 circuit0.png Pepperをブレッドボードで使う場合ピン同士がショートしないように、ボードに対して縦方向に挿し込むことが必要になります。写真のブレッドボードの場合には数字の並んでいる方向になります。横方向に挿し込むと、ピン同士がショートしてしまいます。
 1ピンの+5Vと6ピンのグラウンドを先に横のバス・バーに接続しておくと良いと思います。また、2ピンから5ピンはジャンパで反対側(fからj列)に渡しておくと配線が楽です。

pep06-02 BB.jpg Pepperを挿し込んで、ジャンパ線に当たらないか確認します。

pep06-03 Insert Pepper.jpg ジャンパ線は芯線が1本しか入っていない単線です。芯線をブレッドボードに垂直に注意深く挿し込んでください。新しいブレッドボードはバネが強く入りにくいことがあるので,ピンセットやラジオ・ペンチなどでジャンパ・ピンを挟んで挿し込むと挿し込みやすいと思います。

 抵抗の足をコの字型に曲げます。少し長い場合には、挿し込む穴の距離を確認して、ニッパーで切ってください。
 LEDは切らずにそのままでも問題ありません。長いほうが+側で、Pepperのコネクタの4番ピン側につないでください。

pep06-04 LED.jpg
  足を切らなかった場合には、空中で導線同士が接触しないようにうまく配置を工夫してください。
 完成した写真を示します。

pep06-05 install LED.jpg【Processingでプログラム(その1)マウスでLEDを点灯する】
 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の中で参照されます。

pep06-06 Processing Program.png Processingのスケッチ画面でプログラムを入力し、メニューから実行を選択するとプログラムがコンパイルされ、エラーがなければ続いて実行されます。画面のようなウインドウが現れます。

pep06-07 Processing Execution.png
 ウィンドウ内をマウスでクリックすると、画面が反転しONの表示になります。

pep06-08 Processing Execution 2.png マウスをクリックしている間はLEDが光ります。

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

pep06-10 Processing on Error.png
 次回は、少しプログラムを改造して、アナログ出力の利点を活用します。

桑田喜隆

トラックバック(0)

このブログ記事を参照しているブログ一覧: Ginger/Pepper/Sugarでフィジカル・コンピューティング(6)

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/2238

コメントする





マイコンと電子工作 No.6


マイコンと電子工作 No.4


マイコンと電子工作No.1
サポート・ページはこちら

カテゴリ

このブログ記事について

このページは、kuwataが2008年11月18日 13:31に書いたブログ記事です。

ひとつ前のブログ記事は「連載(7)Arduinoで何でも制御 サンプル・スケッチを動かす(1)」です。

次のブログ記事は「連載(8)Arduinoで何でも制御 サンプル・スケッチを動かす(2)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.