オリジナルの作成: 2014/02/15
私たちのArduino勉強会は、小学生、ご婦人から目の見えない方まで幅広い人が参加されています。
できるだけ、初心者でも分かるように、またArduino経験者にも楽しいでもらえるように進めています。
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マニュアル に公開されていますので、分からない場合は参照して下さい。
どんなArduinoを用意したら、初心者にも使ってもらえるか色々悩んだ結果、ブレッドボードを使わなくても いくつかの実験ができ、後でブレッドボードを使った実験にスムーズに移行できることからsparkfunの ProtoSnap Pro Mini QUickstart Guide を使うことにしました。
ProtoSnap Pro Miniには、Arduinoを試すために必要な以下のものが一つにパッケージされています。
部品とArduino Pro Miniのピンの接続は以下のようになっています。
部品のピン | Arduino Pro Miniのピン |
---|---|
ボタン | 7 |
光センサー | A0 |
緑のLED | 5 |
青のLED | 6 |
赤のLED | 3 |
ブザー | 2 |
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(条件)
条件が真の時に処理するブロック
else
条件が偽の時に処理するブロック
if文の使い方が分かったところで、どうしてbuttonStatusがLOWの時にLEDを点灯するのか、 その理由を簡単に説明します。
以下の図がボタンの回路です。ボタンを押していないときには、7番ピンには抵抗を通じて少量の電流が流れ7番ピンの電圧がHIGHのレベルになっています。これに対してスイッチを押すとGNDにつながるので、7番ピンの電圧はGND=LOWになります。 そのため、buttonStatusがLOWの時にLEDを点灯しているのです。
これまでは、デジタルピンを使ってきましたが、電圧を読み込む場合にはアナログピンを使用します。 アナログピンの電圧を読み込むときには、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の光センサーから読み取られた値がパソコンに送られてくるのが分かります。
スケッチの動きが分かったところで、スケッチの中身を見ていきましょう。
今回はこれまで、次回をお楽しみに!