Arduino で組込み制御
Arduino で組込み制御 目次 1 Arduino とは? 2 Arduino をダウンロードしよう 3 Arduino のサンプルを使ってみよう 4 フルカラー LED を点灯させるプログラムを書いてみよう 5 LCD ディスプレイで文字を表示してみよう 6 小型 DC モータを制御してみよう 7 マトリクス LED で文字を点灯させよう
Arduino とは?1 Arduino は Processing をベースにしたソフトウェアの開発環境でプログラミングをし ハードウェアを制御することができる フィジカルコンピューティングのプラットフォームです フィジカルコンピューティングとは 既存のディスプレイやキーボードやマウスだけではなく必要に応じてハードウェアを使い コンピュータと人間とのコミュニケーションを実現させるもの 新しいデザインや使い勝手の良いものを生み出す といったことです
Arduino とは?2 Arduino をもっとわかりやすく言えば 今までよりも簡単なプログラムでマイコンを制御できてさらに電子部品なども 今までより自由な考え方で回路を作ることができます Arduino は オープンソースで Processing はもちろん Adobe Flash Max/Msp でも制御することができます Arduino IED とはソフトウェア開発環境です
Arduino とは?3 Arduino IDE を使ってプログラムを書き Arduino 本体にアップロードして実行させます Arduino IED は無料でダウンロードできます Arduino IDE ではプログラムをスケッチと呼びますが 今回はそのままプログラムと書いています 今回の実験はごく一部のプログラムのみの結果でプログラムはまだまだ沢山あります
Arduino IDE をダウンロードしよう Arduino のファイルを下の Web アドレスからダウンロードしよう Web アドレス http://arduino.cc/e n/main/software
ダウンロードしたファイル ダウンロードしたファイルを解凍し ファイルを開こう すると右のようなファイルが格納されています arduino.exe というファイルのショートカットを製作して ディスクトップに貼り付けましょう
Arduino IDE を起動させよう プログラムを書いたり 表示する画面 各ボタンの動作
Arduino IDE の中にあるサンプルを 使ってみよう
Arduino 本体の LED を点灯させる サンプルプログラム File Examples Digital Blink でファイルを開いてみよう プログラムを確認し 実行してみよう 実行結果に問題がなければ アップロードしてみよう
Arduino 本体の LED を点灯させる プログラムソース int ledpin = 13; // LED connected to digital pin 13 // The setup() method runs once, when the sketch starts void setup() { // initialize the digital pin as an output: pinmode(ledpin, OUTPUT); } // the loop() method runs over and over again, // as long as the Arduino has power void loop() { digitalwrite(ledpin, HIGH); delay(1000); digitalwrite(ledpin, LOW); delay(1000); } // set the LED on // wait for a second // set the LED off // wait for a second
Arduino 本体の LED が点灯する プログラムの実行結果
フルカラー LED を点灯させる プログラムを書いてみよう 新規 (New) でファイルを開き プログラムを書いてみよう 先ほどの LED の点灯と同じくフルカラー LED のプログラムを確認ボタンを押して間違えがなければアップロードする
フルカラー LED のプログラムソース int i; int n_ms = 30; void led_off () { } analogwrite(3, 255); analogwrite(6, 255); analogwrite(5, 255); void setup() { pinmode(4, OUTPUT); digitalwrite(4, HIGH); オン led_off(); } void loop() { // 赤を消す // 緑を消す // 青を消す // anode common // 4 番は常時 // i の値が小さくなるにつれ明るく光る } for (i = 255; i > 210; i--) { analogwrite(6, i); delay(n_ms); } led_off(); for(i = 255; i > 150; i-=2) { analogwrite(5, i); delay(n_ms); } led_off(); for(i = 255; i > 200; i--) { analogwrite(3, i); delay(n_ms); } led_off();
フルカラー LED の実行結果 フルカラー LED フルカラー LED の赤色点灯
フルカラー LED の実行結果 フルカラー LED の青色点灯 フルカラー LED の緑色点灯
フルカラー LED の結果の感想 フルカラー LED が赤色 青色 緑色へと順番に点灯したら成功です 光る速度を変えてみたり 色の順番を変えてみたりと プログラムを変更してみるのもよいと思います 実際にはフルカラー LED の色の変化が 目視ではわかりづらいので LED に光拡散キャップを付けた方が 色の変化がわかりやすいです
LCD ディスプレイで文字を 表示してみよう 16 文字 2 行のキャラクタ LDC を使って文字を表示してみました 今回使用した LCD はバックライトなしのものです 可変抵抗は 10KB を使用しました
LCD の実体配線図
LCD ディスプレイで文字を 表示するプログラムを書く プログラムソース 確認してアップロード #include <LiquidCrystal.h> // LiquidCrystal display with: // rs on pin 12 // enable on pin 11 // d0, d1, d2, d3 on pins 5, 4, 3, 2 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // Print a message to the LCD. lcd.print("hello world"); } void loop() { }
LCD ディスプレイで文字を 表示させた実行結果
LCD ディスプレイで文字を 表示させた結果の感想 Arduino を使って LCD ディスプレイで文字を表示させた結果 とても簡単なプログラムソースで文字が表示できることが確認できました 応用でいろいろな計測結果の表示や情報を表示させることもできるので さまざまな用途で使用できると感じました また今回はバックライトなしで 1 行のみの表示でしたが 時間があるときに 2 行の表示や応用を試してみたいです
小型 DC モータを制御してみよう 小型の DC モータを使って正回転 逆回転の制御してみました 今回使用した部品は 小型 DC モータ モータドライバ IC TA7291P 可変抵抗 10KB 電池スナップを使用しました
DC モータの実体配線図
小型 DC モータを制御する プログラムを書く プログラムソース 確認してアップロード void setup(){ pinmode(1,output); pinmode(2,output); } // 信号用ピン // 信号用ピン void loop(){ // アナログ入力 :0 番ピンの値を2で割 る int val=analogread(0)/2; //0~511 if(val>=255 && val<=256){ // 静止 //LOW,LOWでデジタル出力 digitalwrite(1,low); digitalwrite(2,low); } else if(val>256){ // 正転 //HIGH,LOWでデジタル出 力 digitalwrite(1,high); digitalwrite(2,low); //valが大きいほど出力値も大きくな る analogwrite(3,val-256); // 出力値 :1~255 }else{ // 逆転 (val<255) //LOW,HIGH でデジタル出力 digitalwrite(1,low); digitalwrite(2,high); //valが小さいほど出力値は大きくな る analogwrite(3,255-val); // 出力値 :1~255 } }
小型 DC モータを制御した 実行結果 停止状態 ( ボリューム真ん中 ) 正回転 ( ボリュームを右に回す )
小型 DC モータを制御した実行結果 逆回転 ( ボリューム左に回す )
小型 DC モータを制御した 結果の感想 1 小型の DC モータを簡単なソースプログラムで制御することができました ボリューム ( 可変抵抗 ) を右に回すと正回転 左に回すと逆回転 真ん中で停止させるプログラムです ボリュームの回し加減で回転速度を変えることができます また十分なパワーもあるので実用的な動作をさせるものに使用できると感じました
小型 DC モータを制御した 結果の感想 2 応用によっては ファンを回して制御させたり ラジコンのようなものを走らせたりとさまざまなものが動かせるようになります ただし今回使用したモータドライバ IC TA7291P は 外部の電源が必要です データーシートにある外部電源は 5V 以上となっていますが 今回の回路では 6V でも動かず 7V 以上の電源でないと動きません そのため今回 9V のアルカリ電池を外部電源に使用しました
マトリクス LED で文字を 点灯させよう マトリクス LED を使って文字を点灯させてみました 今回使用したマトリクス LED は 8 8 の 64 ドットの赤色マトリクス LDE です 抵抗は 1kΩ を 7 個使用しました
マトリクス LED の実体配線図
マトリクス LED で文字を点灯させる プログラムを書く プログラムソース 確認してアップロード boolean matrix[8][8]={ {0,0,0,1,1,0,0,0}, {0,0,1,0,0,1,0,0}, {0,1,0,0,0,0,1,0}, {0,1,0,0,0,0,1,0}, {0,1,0,0,0,0,1,0}, {0,1,1,1,1,1,1,0}, {0,1,0,0,0,0,1,0}, {0,1,0,0,0,0,1,0} }; void setup(){ for(int i=2;i<=17;i++){ pinmode(i,output); digitalwrite(i,low); } }void loop(){ for(int i=2;i<=9;i++){ digitalwrite(i,high); // 行 :HIGH で点灯 for(int j=10;j<=17;j++){ if(matrix[i-2][j-10]==1){// 点灯条件 digitalwrite(j,low); // 列 :LOW で点灯 } // 上の if 文のかわりに以下でも可 // digitalwrite(j,!matrix[i-2][j-10]); delaymicroseconds(300);//0.03 秒点灯 digitalwrite(j,high);// オフにする } digitalwrite(i,low);// オフにする } }
マトリクス LED で文字を点灯させた 実行結果
マトリクス LED で文字を点灯させた 結果の感想 これまでの実験よりも配線図がやや複雑で今回の実験の中で 1 番大変でした プログラムソースはシンプルで 文字の他にも絵なども点灯させることができます 使用した抵抗は 1kΩ ですが 値を変えることによって LED の明るさを変えることができます また応用などで流れる文字や動きのある絵なども点灯できます
Arduino で組込み制御を行った 結果の感想 組み込み制御は これからもっと進歩して行く技術だと思っています ソフト ( プログラム ) とハード ( コンピュータ ) が より一体となって今までにないものを生み出し 人々の暮らしに役立つもの 環境にやさしいものなど あらゆるものがプログラムによって制御され使われて行くのではないだろうかと感じました また誰でも簡単にプログラムができる そんな環境ができつつあるのではないかと思いました
今回使用した部品を購入したお店 と参考にした Web サイト 秋月電子通商 千石電商 デバイスの接続 http://www.geocities.jp/arduino_diecimila/use/index.html#_lcd 建築発明工作ゼミ 2008 http://kousaku-kousaku.blogspot.com/2008/07/arduinoled.html http://kousaku-kousaku.blogspot.com/2008/06/arduinodcta7291p.html http://kousaku-kousaku.blogspot.com/2008/07/arduinoled.html
トップページへ ホームへ