arduinoで組込み制御processing.web.fc2.com/arduino001.pdfarduinoとは?①...
TRANSCRIPT
Arduinoで組込み制御、目次
1、Arduinoとは?
2、Arduinoをダウンロードしよう
3、Arduinoのサンプルを使ってみよう
4、フルカラーLEDを点灯させるプログラムを書いてみよう
5、LCDディスプレイで文字を表示してみよう
6、小型DCモータを制御してみよう
7、マトリクスLEDで文字を点灯させよう
Arduinoとは?①
・Arduinoは、Processingをベースにしたソフトウェアの開発環境でプログラミングをし、ハードウェアを制御することができる、フィジカルコンピューティングのプラットフォームです。
・フィジカルコンピューティングとは、既存のディスプレイやキーボードやマウスだけではなく必要に応じてハードウェアを使い、コンピュータと人間とのコミュニケーションを実現させるもの、新しいデザインや使い勝手の良いものを生み出す、といったことです。
Arduinoとは?②
・Arduinoをもっとわかりやすく言えば、今までよりも簡単なプログラムでマイコンを制御できてさらに電子部品なども、今までより自由な考え方で回路を作ることができます。
・Arduinoは、オープンソースで、Processingはもちろん「Adobe Flash」、「Max/Msp」でも制御することができます。
・Arduino IEDとはソフトウェア開発環境です。
Arduinoとは?③
・Arduino IDEを使ってプログラムを書き、Arduino本体にアップロードして実行させます。
・Arduino IEDは無料でダウンロードできます。
・Arduino IDEではプログラムをスケッチと呼びますが、今回はそのままプログラムと書いています。
・今回の実験はごく一部のプログラムのみの結果でプログラムはまだまだ沢山あります。
Arduino IDEをダウンロードしよう
・Arduinoのファイルを下のWebアドレスからダウンロードしよう。
・Webアドレス
http://arduino.cc/en/Main/Software
ダウンロードしたファイル
・ダウンロードしたファイルを解凍し、ファイルを開こう。
・すると右のようなファイルが格納されています。
・arduino.exeというファイルのショートカットを製作して、ディスクトップに貼り付けましょう。
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); // set the LED on
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(1000); // wait for a second
}
フルカラー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); // anode common
digitalWrite(4, HIGH); // 4番は常時オン
led_off();
}
void loop()
{
// 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に光拡散キャップを付けた方が、色の変化がわかりやすいです。
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ディスプレイで文字を表示させた結果の感想
・Arduinoを使って、LCDディスプレイで文字を表示させた結果、とても簡単なプログラムソースで文字が表示できることが確認できました。応用でいろいろな計測結果の表示や情報を表示させることもできるので、さまざまな用途で使用できると感じました。また今回はバックライトなしで、1行のみの表示でしたが、時間があるときに2行の表示や応用を試してみたいです。
小型DCモータを制御してみよう
・小型のDCモータを使って正回転、逆回転の制御してみました。
・今回使用した部品は
・小型DCモータ
・モータドライバIC「TA7291P」
・可変抵抗10KB
・電池スナップ
を使用しました。
小型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モータを制御した結果の感想②
・応用によっては、ファンを回して制御させたり、ラジコンのようなものを走らせたりとさまざまなものが動かせるようになります。ただし今回使用したモータドライバIC「TA7291P」は、外部の電源が必要です。データーシートにある外部電源は5V以上となっていますが、今回の回路では6Vでも動かず、7V以上の電源でないと動きません。そのため今回9Vのアルカリ電池を外部電源に使用しました。
マトリクスLEDで文字を点灯させよう
・マトリクスLEDを使って文字を点灯させてみました。
・今回使用したマトリクスLEDは8×8の64ドットの赤色マトリクスLDEです。抵抗は1kΩを7個使用しました。
マトリクス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で文字を点灯させた結果の感想
・これまでの実験よりも配線図がやや複雑で今回の実験の中で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/arduino-dcta7291p.html
http://kousaku-kousaku.blogspot.com/2008/07/arduinoled.html