このページの本文へ

前へ 1 2 3 次へ

秋の夜長に楽しむ電子工作 “Lチカ”から1歩先へ

40代、Arduinoをイチから始めてみる【Arduinoいまさら超入門】

2016年09月09日 09時00分更新

文● 宮里圭介 編集●北島幹雄/ASCII STARTUP

  • この記事をはてなブックマークに追加
  • 本文印刷

ステップ3:3分経ったらブザーで通知するよう改造

 ステップ2でかなりタイマーらしいものになってきましたが、LEDを見ていないと、いつカウントダウンが終わったのかわからないというのは不便です。そこでもう少し改造して、カウントダウンが終わったらブザーを鳴らすようにしてみましょう。今回使うブザーは、電圧をかけると「ビー」と鳴るだけのシンプルなものです。

 まずはハードの改造です。ステップ2のスイッチとほぼ同じで、ブザーを7番ピンとGNDとに接続します。

 続いてソフトの改造です。今回はブザー「BZ」を出力として追加しました。

// 使用するピンを設定
int LED_1 = 13;
int LED_2 = 12;
int LED_3 = 8;
int SW = 2;
int BZ = 7;

void setup() {
  // ピンのモードを設定
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(SW, INPUT_PULLUP);
  pinMode(BZ, OUTPUT);
}

void loop() {
  while (digitalRead(SW) == HIGH){}
                             //スイッチが押されるのを待つ
  digitalWrite(LED_1, HIGH);  //LED_1を光らせる
  digitalWrite(LED_2, HIGH);  //LED_2を光らせる
  digitalWrite(LED_3, HIGH);  //LED_3を光らせる

  delay(60000);              //1分待つ
  digitalWrite(LED_1, LOW);   //LED_1を消灯

  delay(60000);              //1分待つ
  digitalWrite(LED_2, LOW);   //LED_2を消灯

  delay(60000);              //1分待つ
  digitalWrite(LED_3, LOW);   //LED_3を消灯

  digitalWrite(BZ, HIGH);     //ブザーを鳴らす
  delay(3000);               //3秒待つ
  digitalWrite(BZ, LOW);      //ブザーを消す

  delay(3000);              //終了後、3秒待つ
}

 BZはブザーを接続している7番ピン、ピンのモードは「OUTPUT」に設定。あとは3分のカウントダウンが終わった後でブザーを鳴らすという、簡単な改造です。ブザーを鳴らすのはLEDを光らせる場合と同じなので、詳しく解説するまでもないでしょう。

 1分経つごとに短時間ブザーを鳴らすといった改造も簡単にできますので、試してみると面白いと思います。

ステップ4:ブザー音ではなくメロディーを流す

 これでほぼ3分タイマーとしては十分な動作になったかと思いますが、ブザーで知らせるだけではあまりにもシンプル過ぎて、ちょっとつまらないですよね。ということで、最後の改造として、ブザーではなくメロディを鳴らすようにしてみましょう。

 まずはハードの改造ですが、これはブザーを圧電スピーカーに変更しているだけです。

 続いてソフトを改造しましょう。ブザーとは違い、ドやレ、ミといった音の高さまで指定できるのがポイントとなります。

// 使用するピンを設定
int LED_1 = 13;
int LED_2 = 12;
int LED_3 = 8;
int SW = 2;
int SPK = 7;

void setup() {
  // ピンのモードを設定
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(SW, INPUT_PULLUP);
  pinMode(SPK, OUTPUT);
}

void loop() {
  while (digitalRead(SW) == HIGH){}
                               //スイッチが押されるのを待つ
  digitalWrite(LED_1, HIGH);    //LED_1を光らせる
  digitalWrite(LED_2, HIGH);    //LED_2を光らせる
  digitalWrite(LED_3, HIGH);    //LED_3を光らせる

  delay(60000);                //1分待つ
  digitalWrite(LED_1, LOW);     //LED_1を消灯

  delay(60000);                //1分待つ
  digitalWrite(LED_2, LOW);     //LED_2を消灯

  delay(60000);                //1分待つ
  digitalWrite(LED_3, LOW);     //LED_3を消灯

  while (digitalRead(SW) == HIGH){
                               //スイッチがオンになるまでメロディーをループ
    tone(SPK, 784, 250);          //メロディーを流す
    delay(250);
    tone(SPK, 698, 250);
    delay(250);
    tone(SPK, 784, 250);
    delay(500);
  }

  delay(3000);              //終了後、3秒待つ
}

 改造した部分はブザー(BZ)をスピーカー(SPK)にしたことと、最後のブザーを鳴らすところです。ステップ3ではブザーを鳴らして終わりでしたが、今回はスイッチが押されるまでメロディーを流し続ける、というものに変更しました。

 音の高さは「tone()」で指定できます。例えば「tone(SPK, 784, 250)」では、スピーカーの接続されたピンに対し、785Hzの音(ソ)を250ミリ秒出力する、というものになります。

 続くdelay()は、音が鳴っている間待つためのものです。これがないとスピーカーから次々音が再生されてしまい、何の音か聞き取れません。LEDを点滅させるときの間と同じようなものですね。

 これを動かすと、某店アルバイト経験者なら心をかき乱されるメロディが流れるはずです。

改造を繰り返すことで楽しく続けられる!

 単純にLEDを光らせるだけというLチカですが、これを元に改造していくだけで3分タイマーのような実用的なものが作れるのですから、バカにできません。ここからさらに改造して、たとえばGenuino 101であれば搭載されている加速度センサーを利用し、スイッチのかわりに本体を振ることでタイマーをスタートさせるとか、入力を強化して3分以外の時間も設定できるキッチンタイマーにするとか、表示を7セグメントLEDにするとか、目覚まし時計にするとか、夢はどんどん広がっていきます。

 Arduinoのいいところは、ハード・ソフトともに多くの情報が公開されていることです。今回の3分タイマーもそうですが、まず簡単なものを真似して作り、そこから自分好みに改造していくというのが再入門に最適な方法といえるでしょう。イチから作るのは難しくても、改造ならハードルが低くなりますからね!

Image from Amazon.co.jp
intel Genuino 101 Bluetooth開発ボード、Arduinoの互換性 6軸センサ

■関連サイト
Arduino.org

提供:インテル

前へ 1 2 3 次へ

カテゴリートップへ

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン