おとうさんといっしょに遊ぶ初めてのマイコン

〔マイコンのトップに戻る〕


Arduino写真 このページでは Arduinoアルデュイーノと言うマイコンボードを使って 初めてマイコンにふれる場合の記事を書きます。
小中学生の子供をたいしょうの記事にするなら、"マイコンとは"とか"プログラミングは"とかから書く方が良いように思いますが、 そのレベルから書くと大変なことになりそうなので、その当たりは他のホームページを参考にしてもらいたいと思います。
なので、ここでは初めてマイコンにふれる場合の、とっかかりやあしがかりとしてもらえれば良いかなと思います。
また、高校生とかなら自分で理解し出来るかもですが、小中学生では少しきびしいと思われますのでおとうさんといっしょに学びましょう。
(おとうさん、がんばぁp(*^-^*)q 、いげんとりもどせぇ!)

なお、Arduinoのきほん説明はこちらを参照して下さい。
また、ここでのパソコンはWindowsXP SP3での説明となっています。

少しだけマイコンとは、「とってもちいさいコンピュータ: micro computer マイクロコンピュータ」の略ですが、
最近ではこのマイコンは身の回りの色々な機器や家電製品のエアコンやテレビにすいはんき等に使われています、 だからせいぎょ装置としての「マイクロコントローラ:micro controller」の略としての意味あいも有ります。
いずれにしても小さなコンピュータと言うことなのです、なのでこのマイコンを動かすにはプログラムを入れないと動作しません。
PIC写真
マイコンはこの小さなICチップの中にCPU(計算する装置)とメモリ(プログラ
ムの保管)とタイマー機能に周辺回路(入力回路・出力回路・アナログ回路)
などが入っています、
だから直接簡単にいろいろな部品(スイッチ・センサー・LED・モータなど)
をつなぐことが出来ます、
たとえば、スイッチとLEDをつなぎ、スイッチが押されたらLEDを点けると言う
プログラムを書きこんでやれば動きます。
きみのアイデアしだいで色々なことが出来る魔法まほうの小箱なのですよ。

《1.まずはArduinoを手に入れる》

スイッチサイエンスの通信はんばいでこちらの「Arduinoをはじめようキット」が売られています、
これを買うことをおすすめします。
このキットには、ブレッドボードやスイッチ・抵抗ていこう・LED・CDSセンサーがついているのですぐに始めることが出来ます。
なお、このキットにはパソコンと接続するケーブルは付いていないので別に買うひつようがあります、
USBケーブルの内容はこちらを参照して下さい。
また、ブレッドボードの使い方説明は こちらの「謎解き.COM」さんを参照して下さい。

《2.パソコンにソフトウエアをインストールする》

プログラムを作りArduinoにプログラムを書きこむための無料ソフトウエアをインストールします。
Arduinoではプログラムのことをスケッチと呼んでいます、なので、これ以降の記述はスケッチと書きます。
 @こちらのページを参考にインストールを行います。
 Aインストールが終わったら動作のテストを行います。
  (「インストールしたらまず動作するか確認する」を行って下さい)

《3.インストールしたソフトウエアについて》

インストールしたソフト(ArduinoIDE 1.0.1)の簡単な使い方説明がこちらにあります読んでおきましょう。

 @ArduinoIDEにてマイコンに書きこむスケッチを作成します。
  (スケッチするプログラミング言語は C言語 シーげんごです)

 Aスケッチを作成したらArduinoIDEにてコンパイルを行います。
  コンパイルとはC言語(人が理解できる言語)プログラムをマイコンが理解できる言語(マシン語)
  に変換する作業です。
 Bコンパイルしてエラーがあれば訂正を行い、エラーがなくなるまで再コンパイルをくりかえします。
 CエラーがなければArduinoにスケッチプログラムの書きこみが自動で行われます。
  下記の赤わく部分をクリックします、コンパイルと書きこみが行われます。
  (あ、そうそうArduinoはUSBでパソコンに接続しておかないとエラーとなりますよ、ねんのため。)
 

動作確認2b

《4.Arduinoのスケッチ書き方》

こちらのページに簡単なスケッチの書き方を書いています参照して下さい。
詳しいスケッチの書き方はこちらのArduino 日本語リファレンスを参照して下さい。
また、C言語の詳しい内容は他のHPサイトを検索けんさくして下さい。

《5.デジタル入力(スイッチをつなぐ)》

回路図1 スイッチをつなぐには左図のようにします。

電気は5ボルト側(+)から GND グランド側(-)に流れるので、
スイッチを押していないときは、抵抗ていこうを通して電源のGND(-側)につながっているので Arduinoデジタル2番ピンには電気が流れないから0(LOW>ロー)と認識します。

スイッチを押したときは、電源の5V(+側)から電気が流れて来てArduinoデジタル2番ピン側 に流れるので1(HIGHハイ)と認識します。
この接続をプルダウン接続といいます。

デジタル入力は電気が流れていれば1、流れていないなら0と認識するのです。

タクトスイッチの少しくわしいつなぎ方はこちらを参考にして下さい。


スケッチについて

Arduinoデジタル2番ピンはデジタル入力と出力の両方が行えます、 だからスイッチ入力をプログラムとして書くには、 まず、デジタル2番ピンを入力で使うのか出力で使うのかを指示しないとだめです。
これにはpinModeピンモードの命令文で指示します。

今回はデジタル2番ピンをスイッチの入力として使うので、
pinMode( 2 , INPUT インプット) ;     // INPUTインプットが入力指示です  OUTPUT アウトプットとすると出力指示です
とします。

次にスイッチが押されているのか調べるのにdigitalReadデジタルリードの命令文を使います。
デジタル2番ピンにスイッチがつながっているので、
digitalRead( 2 ) ;
とします。
---------------------------------------------------------------------------------
void setup() {
     pinMode(2,INPUT) ;             //2番ピンをデジタル入力に設定
}
void loop() {
     //スイッチの状態を調べる
     if (digitalRead(2) == HIGH) {  // スイッチは押されているか?
          // ここにスイッチが押されていた時の処理を書く
          // LEDを点灯させたり、ブザーをならしたり、モータをまわしたりなどなど
     }
}
---------------------------------------------------------------------------------
また、Arduinoは0番ピン〜13番ピンをデジタル入力か出力で使えます。

スイッチが押された時に、Arduinoに付いている13番内蔵LEDを点けるようにするサンプルスケッチは
こちらを参照して下さい。

《6.デジタル出力(LEDをつなぐ)》

回路図2 LED(発光ダイオード)をつなぐには左図のようにします。

LED
LEDにはつなぐ方向があります、LEDの足が長い方(+)をArduinoデジタル8番ピン側につなぎます。
(−側から+側に電気は流れないので光も点かない)

LEDはこれ以上電気を流すとこわれると言う限界があります、 なのでこわれない程度の電気を流すのに抵抗ていこうを使い電気の流れを少なくします。
抵抗は330Ωオームか1kΩキロオームをつなぎます。

抵抗の役目は電気の流れを調整する働きがあります、 だから、抵抗の数値を大きくするとLEDの光はだんだん暗くなっていき最後には点かないようになります。


スケッチについて

ArduinoからLEDに電気を流せばLEDは点灯するし、電気を止めればLEDは消灯するです。
スイッチはデジタル入力でしたが、LEDではデジタル出力なので電気を流したり止めたりします。
まず、デジタル8番ピンをpinModeピンモードの命令文でデジタル出力と指示します。
pinMode( 8 , OUTPUT アウトプット) ;   // 8番ピンをデジタル出力に設定する
とします。

次にLEDを点けたり消したりするのに digitalWrite デジタルライトの命令文を使います。
digitalWrite( 8 , HIGHハイ ) ;  // LEDを点ける
digitalWrite( 8 , LOWロー ) ;   // LEDを消す
とします。
HIGHとすると5V(電圧)の電気が流れて、LOWとすると0V(GND)になり電気は流れなくなります。
このスケッチは実行するとLEDは点灯しっぱなしとなります。
---------------------------------------------------------------------------------
void setup() {
     pinMode(8,OUTPUT) ;           //8番ピンをデジタル出力に設定
}
void loop() {
     digitalWrite( 8 , HIGH ) ;    // LEDを点ける
}
---------------------------------------------------------------------------------
上記述のスケッチで、数値の8を13に変えるとArduinoの13番内蔵LEDが点灯します。

《7.スイッチを押したらLEDを点けるスケッチ》

上記述の《5.》《6.》のようにスイッチとLEDをつないで、下のスケッチを実行させましょう、
スイッチを押すとLEDが点いて、はなすとLEDは消えると思います。
---------------------------------------------------------------------------------
void setup() {
     pinMode(2,INPUT) ;             //2番ピンをデジタル入力に設定
     pinMode(8,OUTPUT) ;            //8番ピンをデジタル出力に設定
}
void loop() {
     //スイッチの状態を調べる
     if (digitalRead(2) == HIGH) {  // スイッチは押されているか?
          digitalWrite(8,HIGH) ;    //スイッチが押されているならLEDを点灯
     } else {
          digitalWrite(8,LOW) ;     //スイッチが押されていないならLEDを消灯
     }
}
---------------------------------------------------------------------------------

《8.アナログ入力(光センサー:CDSをつなぐ)》

回路図3 CDSをつなぐには左図のようにします。

CDSにはつなぐ方向は無いので足はどちら側につないでもOKです。
CDSは今度はアナログ入力につなぎます、ここではアナログ0番ピンにつないでいます。

スイッチではデジタル入力で、電気が流れて来た(5V:HIGH)か、来なかった(0V:LOW)かの判断でしたが、 CDSはアナログ入力で、 0V〜5V のはんいを 0〜1023 の数値はんいに変換して判断します。
すなわち、アナログ0番ピンの値を読み取った時に、もし 614 であった場合は 3V の電圧が流れていると言うことです。

だから、デジタルは0Vか5Vの2パターンしかないけど、 0V〜5Vの間で変化する値を読み取ることが出来るのがアナログです。

CDSは光の明るさを0V〜5Vの電圧にしてArduinoに入力することが出来ます、 CDSは光が暗いと感じるほどに電圧が高くなって行きます。
なので、Arduinoは0V〜5V のはんいを 0〜1023 のはんいに変換するので、 数値を読みこんだ時に数値が大きくなっていくほど君の周りは暗いと言うことです。

スケッチについて

デジタルピンの場合はpinModeの命令文で入力か出力を指示する必要が有りましたが、 アナログピンの場合は指示する必要はないです。

アナログ0番ピンから数値を読み取るには analogRead アナログリードの命令文を使います。
analogRead( 0 ) ;
とします。
アナログピンの0番〜5番ピンをアナログ入力の端子として利用出来ます。
下のスケッチは読みこんだCDSの値をArduinoIDEのシリアルモニタに表示させます
---------------------------------------------------------------------------------
void setup() {
     Serial.begin(9600) ;      // パソコンとシリアル通信の準備を行う
}
void loop() {
     int a ;

     a = analogRead( 0 ) ;     // CDSの数値を読み取る
     Serial.println(a) ;       // CDSの値をパソコン(IDE)に送る
     delay(500) ;              // 0.5秒後に繰り返す
}
---------------------------------------------------------------------------------
@上の回路を作りArduinoはパソコンに接続されているとします。
A上のスケッチをArduinoIDEにて作成またはコピーをしてコンパイルと書きこみを実行します。
B正常に終ったら、IDEのシリアルモニタを表示させます。
C部屋を明るくしたり、CDSの上に手を置いたりして見て下さい、モニタ画面の数値が色々変わると思います。

こんどのスケッチはCDSが暗く感じたら13番内蔵LEDを点灯させます。
---------------------------------------------------------------------------------
 void setup() {
     pinMode(13,OUTPUT) ;   // 内蔵LEDのピン(13番)をデジタル出力に設定
 }
 void loop() {
    int ans ;

     ans = analogRead(0) ;  // CDS接続のアナログピン0番を読み取る
     if (ans >= 950) {      // 950がしきい値です
          // 光がしきい値より大きく(暗く)なったなら処理
          digitalWrite(13, HIGH) ;  // LEDを点灯(HIGH:5V)で出力
     } else {
          // 光がしきい値より小さく(明るく)なったなら処理
          digitalWrite(13, LOW) ;   // LEDを消灯(LOW:0V)で出力
     }
 }
---------------------------------------------------------------------------------
@回路は同じです、スケッチのみ入れ替えてArduinoに書きこみます。
ACDSに手をかざして暗くすると13番内蔵LEDが点灯します。

手をかざさないのに点灯している時は950の数値を大きくしないとダメです。
お好みの暗さで点灯させたい時は、上に書いたようにシリアルモニタに数値を表示させて 数値をしらべて950の所を変更します。

また、こちらにもCDSの同じような記事を書いています、参考にして下さい。

delay ディレイ命令文

delayの命令文を使うとプログラムの実行を一時中断させることが出来ます。
例えば、
i = 5 ;
delay(1000) ; // この行でプログラムの実行を約1秒間停止させます
i = i + 1 ;
であれば、i = 5 ;を実行して、delay(1000) ;で1秒間停止後、i = i + 1 ;を実行します。
delay(数値) ;
数値は停止させる時間を ms ミリセックで指定します、1秒なら1000msで、10秒は10000msですね。

《その他》

「Arduinoをはじめようキット」 を利用したマイコンの初歩の記事を以上簡単に書きました。
もう少し色々やってみたい人はこちらの「Arduinoの動かせ方入門」を参考にしてみて下さい。







【きむ茶工房ガレージハウス】
Copyright (C) 2006-2012 Shigehiro Kimura All Rights Reserved.