arduinoで組込み制御processing.web.fc2.com/arduino001.pdfarduinoとは?①...

37
Arduino で組込み制御

Upload: vukhuong

Post on 30-Apr-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Arduinoで組込み制御

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 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); // set the LED on

delay(1000); // wait for a second

digitalWrite(ledPin, LOW); // set the LED off

delay(1000); // 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); // 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の実行結果

・フルカラー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モータを制御した結果の感想①

・小型のDCモータを簡単なソースプログラムで制御することができました。ボリューム(可変抵抗)を右に回すと正回転、左に回すと逆回転、真ん中で停止させるプログラムです。ボリュームの回し加減で回転速度を変えることができます。また十分なパワーもあるので実用的な動作をさせるものに使用できると感じました。

小型DCモータを制御した結果の感想②

・応用によっては、ファンを回して制御させたり、ラジコンのようなものを走らせたりとさまざまなものが動かせるようになります。ただし今回使用したモータドライバ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で組込み制御を行った結果の感想

・組み込み制御は、これからもっと進歩して行く技術だと思っています。ソフト(プログラム)とハード(コンピュータ)が、より一体となって今までにないものを生み出し、人々の暮らしに役立つもの、環境にやさしいものなど、あらゆるものがプログラムによって制御され使われて行くのではないだろうかと感じました。また誰でも簡単にプログラムができる、そんな環境ができつつあるのではないかと思いました。

トップページへ

ホームへ