INDEX(各項目ごとの目次)

[HOME]  [Processing関係]  [Arduino関係]  [マテリアル関係]  [秋葉原工作マップ]

2008年用ですが、部分的に内容を更新しています(2010/06/14)。
また、[建築農業工作ゼミ2009-2010]とも連動していますので、そちらにも幾つかサンプルがあります。
:

5/18/2008

Arduino LEDの点滅



LEDを点滅させるプログラム(上画像)です。
まずsetup()loop()を用いて、以下のようなフォーマットを用意します。ほぼProcessingと同じような感じです。
void setup(){
//初期設定のプログラム
}

void loop(){
//ループ処理のプログラム
}

初期設定setup()の中には、pinMode()を使って、基盤上のどのピンを出力または入力で使いたいのかを設定します。
pinMode()の()内には、数字でピンの番号(0〜13)とOUTPUTかINPUTのどちらかをコンマで区切って入れます。LEDを光らせる電源としてOUTPUT(出力)に設定します。
ループ処理loop()の中には、LEDを点滅させる一連の処理についてのプログラムを書きます。
digitalWrite()の()内には、数字でピンの番号(0〜13)とHIGHかLOWのどちらかをコンマで区切って入れます。HIGHは5Vを出力し、LOWは0Vを出力します。delay()は、()内に入れた数字の分だけ、時間を保持します。単位はミリ秒で、1秒は1000ミリ秒に相当します。上記のプログラムでは、delay(1000)を二回挿入しているので、2秒ループのプログラムになります。
プログラムを新たに書き直したら、一旦「Verify」ボタンを押してプログラムをコンパイルします。Arduino基盤とパソコンがUSB接続されていれば、「Upload to I/O Board」ボタンをクリックし、基盤にプログラムをアップロードします。


LEDは電流を一方向にしか流さない特性があるため、+と-を電源に対して正しくつながないと発光しません(逆につないでも壊れるということは、ほぼありません)。上図のように、通常二つの端子(アノードとカソード)があります。アノード側をプラスに、カソード側をマイナスに接続します。LEDの多くは2.5V前後の電源で発光するようにつくられているので、Arduino基盤上の5V電源とGND(0V)に直接つなぐと壊れる恐れがあります。そのため、抵抗をかませる必要があります。Arduino基盤の13番ピンには抵抗なしで直接つなぐことができますが、0〜12番ピンに接続する際には、抵抗(220〜470Ω程度)を直列つなぎしてください。LEDによって特性が異なりますので、より精確に行いたい場合は、購入する際に使用電圧や最大電流についてメモしておくか、付属のデータシートを参考にしてください。



アノード側に抵抗をつないだ場合は、抵抗を通して5Vの電圧が2.5Vまで下げられ、LEDによって2.5Vから0Vに下げられます。
カソード側に抵抗をつないだ場合は、LEDを通過することで5Vの電圧が2.5Vまで下げられ、抵抗によって2.5Vから0Vに下げられます。
最初にプラス側で電圧をさげておくか、最後にマイナス側で電圧を下げるかという違いです。もし、抵抗を取付けなければ、LEDにおいて5Vから0Vに一気に下げられ、電位差が5Vになってしまい使用電圧である2.5Vをはるかに上回り破損してしまうという感じです。抵抗の取付けについては、回路設計やLEDの特性に応じて使い分けてください。

5/17/2008

Arduino基盤の概要


上画像は旧型のArduino Decimilaボードです。

Arduino基盤には、大きく分けてデジタル出力、デジタル入力、アナログ出力、アナログ入力の端子があります。LED、センサ、アクチュエータ、その他電子部品を接続して使用します。基盤上方にある0〜13番ピンについては、デジタル入出力の際に、使用するピンを出力用に使うのか、入力用に使うのかをプログラム上のpinMode()で設定する必要があります。基盤の下方にある5Vピンからは、5V電圧をとることができます。GNDピン(0V)は、上方13番ピンの隣と、下方5Vピンの隣に2つ、合計3箇所あります。
Arduino基盤では、基本的に、0〜5Vの電圧を扱います。

デジタル出力:
デジタル出力/digitalWrite()では、LOWかHIGHの二段階の出力方法しかありません。LOWは0Vに、HIGHは5Vに対応します。あるいは、二進法ではLOWが0、HIGHが1、またboolean型変数におけるfalse/trueに対応します。
例えば、LEDの点灯/消灯させるときに使います。

デジタル入力:
デジタル入力/digitalRead()も同様にLOW/HIGHの二段階です。
例えば、接続したセンサ/スイッチを通してオンになっているのかオフになっているのかを読み取るときに使います。

アナログ出力(PWM):
アナログ出力/analogWrite()は、上方の3、5、6、9、10、11番ピンの6箇所に接続でき、0〜255の256段階の出力が可能です(0V〜5Vを256段階に分けています)。
例えば、LEDの明暗を調節して光らせるときに使います。モーターならスピード調節になります。

アナログ入力:
アナログ入力/analogRead()は、センサなどから0〜1023の1024段階の読み取りが可能です(0V〜5Vを1024段階に分けています)。
例えば音量調節、照度調節、スピード調節などするために接続したセンサの度合いを読み取ります。

アナログ入出力においては、pinMode()を設定する必要はありません。

電源(外部電源):
通常は、USB接続によってパソコンから5V電源がArduino基盤に供給されます。外部電源から供給したい場合には、外部電源端子にバッテリやACアダプタ(6~20V/推奨は7~12V)などを接続します。例えば、DC12V/1AのACアダプター
差し込むプラグは内径2.1mm、外形5.5mmで、中心軸がプラス極になります。
*Arduino Decimilaなどの旧型の場合は、USB/外部電源のジャンパピンを差し替える必要があります(基盤上に明記されている文字:USBからEXT側へ)。パソコンからプログラムをアップロードする際には、再度USBケーブルを接続し、USB側へジャンパピンを差し替えます。

Arduinoのセッティング



ソフトのダウンロードとインストール:
・Arduinoサイトへアクセス→http://www.arduino.cc
・サイト内Downloadページから開発環境ソフト「Arduino 0018」(最新版)をダウンロード(Win用/Mac用あり)。
(注意)初めて使う場合は、「Arduino開発環境ソフト」だけでなく「USBドライバソフト」もインストールする必要があります。

Windows:
・ダウンロードした「arduino-0018.zip」を展開する。
・「arduino-0018」ファイルを「C:¥Program Files」へ移動しインストール。
・ArduinoボードをUSB接続する。
・「USBドライバソフト」のアップデート自動検索画面が出るので(初回のみ)、
 「Program Files>arduino-0018>drivers>FTDI USB Drivers」フォルダを指定しインストールする。
 (Vistaの場合は自動的に探してインストールされる)。
・「arduino-0018」フォルダ内の「arduino.exe」を開く。
・Arduinoソフトのメニューバー「Tools>Board」から接続しているArduinoボードの種類を選択。
「Arduino Duemilanove 328」なら「Arduino Duemilanove or Nano w/ATmega 328」を選択。
・メニューバー「Tools>Serial Port」から「COM*」を選択(COM3などと表示)。
・以上でセットアップ完了。
*「USBドライバ」がインストールされたか確認するには:
ArduinoボードをUSB接続したまま「コントロールパネル>システム」を開き、「システムのプロパティ」画面内「ハードウェア」タブを選択、「デバイスマネージャ」ボタンをクリック、「デバイスマネージャ」内のリストから「ポート(COMとLPT)」を選択、「ポート(COMとLPT)」内に「USB Serial Port(COM3)」(COM4やCOM5の場合あり)があるか確認。Arduinoソフトのメニューバー「Tools>Serial Port」で上記のPort(COM3など)を選択する。

Macintosh:
・ダウンロードした「arduino-0018.dmg」を開く。
・「Arduino.app」を「Applications」フォルダに移動。
・「FTDIUSBSerialDriver_10_4_10_5_10_6.mpkg」をダブルクリックし、ドライバを画面上の指示に従いインストール。
・ArduinoボードをUSB接続する。
・ダウンロードしたArduino.appを開く。
・Arduinoソフトのメニューバー「Tools>Board」からArduinoボードの種類を選択。
「Arduino Duemilanove 328なら」「Arduino Duemilanove or Nano w/ATmega 328」を選択。
・メニューバー「Tools>Serial Port」から「/dev/tty.usbserial-********」を選択。
 上記「********」はボードによって異なります。
・以上でセットアップ完了。
*「USBドライバ」がインストールされたか確認するには:
ArduinoボードをUSB接続したまま、メニューバー左上アップルマーク>このMacについて」を選択、画面内で「詳しい情報...」ボタンをクリック、次の画面上左側のリストから「ハードウェア>USB」を選択、「USBバス」内に「FT232R USB UART」があるか確認する。「FT232R USB UART」を選択し、画面内「シリアル番号」欄の番号が上記「/dev/tty.usbserial-********」の「********」になります。

動作確認:
無事ソフトとUSBドライバのインストールが済んだら、動作確認として以下のサンプルプログラムを試してみて下さい。
Arduino画面メニューバーのFile>Sketchbook>Examples>Digital>Blinkを選択すると、「Blink(LEDの点滅)」のサンプルプログラムが現れます(Arduinoサイト内にも同じサンプルがあります)。

「Upload to I/O Board」ボタンかFile>Upload to I/O Boardを選択すると、Arduino基盤にプログラムのアップロードが開始されます。画面の下の方に「Done uploading.」と表示されれば、アップロード完了です。

Arduino DuemilanoveやDiecimilaの場合は、基盤上のリセットボタンを押す必要はありませんが、Arduino NG基盤(旧型)の場合は、リセットボタンを押した直後に「Upload to I/O Board」ボタンを押して下さい。

問題なければ、Arduino基盤上のLED(13番ピン用内蔵LED/13番ピンの真下あたりにある基盤上の小さいLED)が一秒ごとに点滅します。Arduino NG基盤(旧型)の場合は、LEDが内蔵されていないので、13番ピンとGNDピンにLEDを差し込む必要があります(LEDについてはブログ内の「Arduino LEDの点滅」を参照)。
Arduinoサイト上のLearning(上画像/赤印)は、学習用のサンプルプログラムが記載されているページです。Reference(上画像/赤印)は、プログラムの各言語について説明してあるページです。それぞれ参照してみて下さい。
尚、四谷工作研究所(2007年度)のブログでもセッティングや使用法について記載されているので参考にしてください。

5/14/2008

電子工作 5/17(土)



5/17(土)から電子工作を始めます。パソコン、Arduino基盤、USBケーブル(Arduino-パソコン間)、ブレッドボード(上画像/上)、ジャンプワイヤ(上画像/下)を各自用意して来て下さい。もし用意できない場合は、学校に幾つかありますので、それを使うことになります。できれば、ArduinoのサイトからArduinoのソフトをダウンロード、インストールして来て下さい。
Processingは、今後もArduinoと連動して使いますので、各自プログラムの練習をしておいて下さい。
「Wooden Stick」については、スケールや身体についてどのような表現ができるかアイデア段階でもいいので考えておいてください。コンピュータプログラムで出来ること、電子工作で出来ること、素材加工で出来ることを最終的に組み合わせたいと思います。

Processing 文字と画像

文字の表示についてはPFontというクラスを用います。文字を使う場合、Processingを開いたあと、メニューバーにあるTools>Create Font...をクリックします。そうするとCreate Fontという別のウィンドウが現れ、使用したいフォントとそのサイズ選択します。視覚的に滑らかなフォントを使いたいのであればSmoothにチェックを入れます。基本的な記号、数字、アルファベットを使うのであればAll Charactersのチェックを外したままで大丈夫です。
日本語などを使う場合はチェックを入れて使いますがデータはその分大きくなります。All Charactersにチェックを入れると、全てのフォントデータを取り込むためにやや時間がかかるときがあります。日本語の大きなサイズのフォントを取り込む際にエラーが出る場合は、上記の方法のかわりにcreateFont()をつかった方法を用いてみてください(サンプルは以下にあります)。
ここでは、Monacoというフォント、サイズは12、Smoothにチェックを入れることにします。Filename欄にはMonaco-12が表示され、その拡張子.vlwがあることが確認できます。OKボタンを押してウィンドウを閉じると指定したフォントの準備が整います。現在開いているsketchファイル(例えば「sketch_08513a」という名前)を一旦保存(File>save)すると、Macintoshであれば、/User/username/Documents/Processing/sketch_08513a/data内にフォントのファイル(例えばMonaco-12.vlw) が入ってます。WindowsならC:¥Documents and Setting¥username¥My Documents¥Processing¥sketch_08513a¥data内に入っています。文字を使用する場合、必要なフォントがsketchフォルダ内のdataフォルダに入っていないとエラーがでます。同様に、jpegなどの画像や音源などを使用する際も、dataフォルダに入れておく必要があります。
以下では、クリックによって文字が切り替わるプログラムをします。一文字ごとの変数にはchar、そして単語などの連なった文字(文字列)にはString型の変数を用います。尚、文字列は「"文字"」のようにダブルクオーテーションマークで文字列の両端を括ります。一文字だけのcharなら「'A'」のようにシングルクオーテーションマークで括ります。

PFont font; //フォントの使用
String tx; //文字列の変数を用意

void setup(){
size(400,200);
//指定フォントのロード
font = loadFont("Monaco-12.vlw");
//フォントを使用開始、サイズ:12
textFont(font,12);
//初期の表示文字を"CLICK"に設定
tx="CLICK";
}

void draw(){
text(tx,200,100);
}

void mousePressed(){
tx="HELLO";
}
void mouseReleased(){
tx="CLICK";
}

日本語フォントを使う場合は、createFont()を使用します。その際「Tools>Create Font...」でフォントを選択する必要はありません。

PFont myFont;

void setup() {
size(400, 200);
myFont = createFont("Osaka", 32);
textFont(myFont);
}

void draw(){
background(0);
text("建築発明工作ゼミ", 10, height/2);
}

画像の取り込みについては、PImageというクラスを使います。Processingでは、gif、jpeg、tga、pngの画像フォーマットに対応しています。予め用意した画像をdataフォルダ(前述)に入れておく必要があります(dataフォルダがない場合は、sketchフォルダ内に「data」という名前をつけてフォルダを作成しておきます)。
以下のサンプルでは画像を二種類(start.jpgとstop.jpg)用意し、最初に画像Aが表示されており、マウスボタンを押したら画像Bに切り替わり、放したら画像Aに戻るというプログラムをします。切り替えには前回用いたflagというboolean型の変数を用いて、現在画像Aが表示されているか画像Bが表示されているか記憶させておきます。

PImage imgA;//画像A用にimgAを用意
PImage imgB;//画像B用にimgBを用意
boolean flag;//切り替えのフラグを用意

void setup(){
size(400,200);
//imgAには"start.jpg"という画像をロード
imgA=loadImage("start.jpg");
//imgBには"stop.jpg"という画像をロード
imgB=loadImage("stop.jpg");
//最初にimgAを100,50の位置に表示しておく
image(imgA,100,50);
//フラグはfalse(imgA表示)に設定
flag=false;
}

void draw(){
background(0);
if(flag==false){//falseの場合imgA表示
image(imgA,100,50);
}else{//それ以外(true)の場合imgB表示
image(imgB,100,50);
}
}
void mousePressed(){
//押すとtrue(imgB表示)
flag=true;
}
void mouseReleased(){
//放すとfalse(imgA表示)
flag=false;
}


[目次:Processing関係]  [HOMEへ戻る]  [目次:Arduino関係]