Arduino勉強会

2014/02/15からのアクセス回数 6474

私たちのArduino勉強会は、小学生、ご婦人から目の見えない方まで幅広い人が参加されています。

できるだけ、初心者でも分かるように、またArduino経験者にも楽しいでもらえるように進めています。

LEDチカチカ

Arduino勉強会/01-Arduinoのセットアップの最後に使ったBlinkを使ってArduinoの動作について 説明します。小学生もいるので、Blinkのコメントを日本語にして、説明します

Arduinoではプログラムをスケッチと呼びます。 *1

Arduinoでは、//から行末までと/* から */までがコメントとして扱われます。コメントには、スケッチの説明を書いておくとよいでしょう。

Blinkのスケッチ(行番号を追加)を見ながら、簡単に動作を説明します。

    1     /*
    2       Blink
    3       1秒LEDを点灯し、次の1秒は消灯、これを繰り返します.
    4     
    5       この例題はパブリックドメイン(自由に使ってよいプログラムのこと)
    6      */
    7     
    8     // ほとんどのArduinoボードでは、13ピンにLEDが接続されています.
    9     // 13番ピンにledという名前を付けます.
   10     int led = 13;
   11    
   12     // Arduinoに電源を入れたり、リセットボタンを押すと最初に1回だけsetup関数が実行されます.
   13     void setup() {               
   14       // ledのデジタルピンを出力用に初期化します.
   15       pinMode(led, OUTPUT);    
   16     }
   17    
   18     // loop関数は無限に繰り返します.
   19     void loop() {
   20       digitalWrite(led, HIGH);   // LEDを点灯する(HIGHは電圧レベル)
   21       delay(1000);               // 1秒間待つ
   22       digitalWrite(led, LOW);    //電圧をLOWにして、LEDを消灯する
   23       delay(1000);               // 1秒間待つ
   24     }

たったこれだけのスケッチでLEDチカチカができるのがArduinoの魅力です。

困ったときの対処

上手く動かないと困ったときには、日本語のマニュアルが役に立ちます。

Arduinoの日本語のマニュアルが武蔵野電波のホームページ Arduinoマニュアル に公開されていますので、分からない場合は参照して下さい。

ProtoSnap Pro Miniボードの特徴

どんなArduinoを用意したら、初心者にも使ってもらえるか色々悩んだ結果、ブレッドボードを使わなくても いくつかの実験ができ、後でブレッドボードを使った実験にスムーズに移行できることからsparkfunの ProtoSnap Pro Mini QUickstart Guide を使うことにしました。

ProtoSnap_Pro_Mini.png

ProtoSnap Pro Miniには、Arduinoを試すために必要な以下のものが一つにパッケージされています。

部品とArduino Pro Miniのピンの接続は以下のようになっています。

部品のピンArduino Pro Miniのピン
ボタン7
光センサーA0
緑のLED5
青のLED6
赤のLED3
ブザー2

スイッチとLEDを連動させる

ProtoSnap Pro Miniボードの部品を使って色々な実験をしましょう。最初にボタンスイッチ(Button)を使ってLEDのオン・オフを制御するスケッチを描いてみます。

Arduino IDEからファイル→新規ファイルを選択し、以下のスケッチをコピーし、新しいスケッチに貼り付けてください。

int buttonPin = 7;  // ボタンは 7番ピンにつながっています
int ledPin = 13;  // LEDは 13番ピンにつながっています

int buttonStatus; // ボタンの状態を保持するための変数

void setup() {
  pinMode(buttonPin, INPUT);  // ボタンピンを入力として初期設定
  pinMode(ledPin, OUTPUT);  // LEDピンを出力として初期設定
}

void loop() {
  /* 最初にボタンの状態を読み込みます
  HIGH = ボタンが押されていない状態
  LOW = ボタンが押されている状態 */
  buttonStatus = digitalRead(buttonPin);
 
  if (buttonStatus == LOW) {
    digitalWrite(ledPin, HIGH);  // ボタンが押されていたらLEDを点灯する
  }
  else {
    digitalWrite(ledPin, LOW);  // そうでなければLEDを消す
  }
}

Blinkと同様に書き込みボタンをクリックしてスケッチをArduinoに書き込みます。 ボタンを押すとLEDが点灯することを確認してください。

Blinkスケッチとの違いを見ながら、スケッチの説明をします。

if文の使い方が分かったところで、どうしてbuttonStatusがLOWの時にLEDを点灯するのか、 その理由を簡単に説明します。

以下の図がボタンの回路です。ボタンを押していないときには、7番ピンには抵抗を通じて少量の電流が流れ7番ピンの電圧がHIGHのレベルになっています。これに対してスイッチを押すとGNDにつながるので、7番ピンの電圧はGND=LOWになります。 そのため、buttonStatusがLOWの時にLEDを点灯しているのです。

Button_sch.png

光センサーの電圧を測ってみる

これまでは、デジタルピンを使ってきましたが、電圧を読み込む場合にはアナログピンを使用します。 アナログピンの電圧を読み込むときには、analogRead関数を使います。analogReadは読み込んだ電圧を0-1023の値に変えて教えてくれます。Arduino Pro Miniの電圧が5Vなので、1023で5V、512で2.5Vを相当します。 光センサーは、A0のアナログピンにつながっていますので、光センサーの電圧を読み込むスケッチではlightPinとしてA0を使います。 どのように光センサーの電圧を読み込んでいるのか説明するよりも動かしてみた方が何をしているか感覚が掴めるのではないかと思います。 まず、以下のスケッチをArduinoに書き込んで下さい(CTRL-U)。ファイルメニューから新規ファイルを選択し、以下のスケッチをコピー&ペーストしてください。

int lightPin = A0;  // 光センサーはA0につながっている

int lightReading;  // 光センサーからの値を保持する変数

void setup() {
  /* シリアル通信の速度を9600ボーにセットし、最初にHello…のメッセージを表示する */
  Serial.begin(9600);
  Serial.println("Hello world, let's read some light sensors!");
}

void loop() {
  lightReading = analogRead(lightPin);  // 光センサーから値を読み込む
  Serial.println(lightReading, DEC);  // 読み込んだ値をシリアル通信を使ってシリアルモニターに送る
  delay(250);  // 次の読み込みまで待つ
}

光センサーの測定結果をパソコンに送る

光センサーの測定結果をみるために、光センサーの値をシリアル通信を使ってパソコンに送ります。

Arduino IDEのツールメニューからシリアルモニターを選択(CTRL-Shift-M)すると以下の様なシリアルモニターが表示されます。 ここで、右下の転送速度が9600 baud(ボーと呼びます)になっていることを確認してください。

次々にArduinoの光センサーから読み取られた値がパソコンに送られてくるのが分かります。

Serial_monitor.png

スケッチの説明

スケッチの動きが分かったところで、スケッチの中身を見ていきましょう。

今回はこれまで、次回をお楽しみに!

補足

光センサーのパソコンに返す値とセンサーの電圧との関係を分かってもらえるように、テスターでセンサーの電圧を測ってみました。*2

以下がテスターの値です。

Light_Volt.png

シリアルモニターに返された値は、160近辺の値です。

Light_Value.png

Arduinoは、4.78Vで動いていましたので、予想される値149と大体同じ程度の値になっています。 *3

コメント

選択肢 投票
おもしろかった 3  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。

スパム防止に画像の文字列も入力してください。


(Input image string)

*1 Arduinoの兄弟プロジェクトProcessingでも同様にスケッチと呼びます。こちらの方がスケッチらしいです。
*2 第3回Arduino勉強会にて
*3 光センサーの値は結構振れ幅があるのと、測定タイミングずれているので大まかな比較とみてください

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc