このページの本文へ

前へ 1 2 3 次へ

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

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

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

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

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

IoTやMakerムーブメントで興味を持って電子工作を始めてはみたけど、Lチカから先に進まなかったという人は多いのではないでしょうか。「キットを買ったきり」である筆者含め、次のステップに進むための、秋の夜長にオススメしたい電子工作超入門記事をお届けします。

Arduinoを引っ張り出して
もう一度チャレンジしてみませんか?

 電子工作の難しさは、見た目で分かりにくいことが挙げられます。よくわからない黒いゲジゲジを言われるがままに組み合わせると、よくわからないけど動作する……。もちろん詳しい人には当たり前のことなのでしょうけど、知らない人にとってみれば魔法みたいなもので、説明を聞いたところでチンプンカンプン。そもそも、説明に使われている単語すら分からないことも少なくありません。

 しかし、この状況はワンチップマイコンが流行したあたりから大きく変わり、複雑な電子回路を作らなくても、多くの動作が実現できるようになりました。とくにArduinoはマイコンと開発環境がセットになっていて、ハードもソフトもすぐに使い始められるのが強みです。

今回は最新のGenuino 101を使って解説。IOが使いやすいマイコンボード。難しいハード制御を簡単なソフトで実現できる、スゴイ奴です。最新モデルといえるGenuino 101では、BLE(Bluetooth Low Energy)に対応し、3軸加速度センサー・3軸ジャイロセンサーを搭載して、よりできることの幅が広がっています。

Arduino用のソフト開発が可能な統合環境「Arduino IDE」。作成からボードへの転送まで、これひとつでできます。

 すでにArduinoを購入し、基板上のLEDを光らせたことがある(Lチカ)という人も多いかと思います。自分でLEDを制御できるのは想像以上に楽しいものですが、このLEDを光らせるという最初のステップから、次のステップにどう行けばいいのかわからず、「LEDが光ったからってナニ?」と考えてしまい、結局、Arduinoを触らなくなってしまう……ということも少なくありません。

 筆者も知人が開催してくれた体験教室でArduinoを触り始めたものの、家に持ち帰ってからは箱の中へ……。いつか使おう、いつか使おうと思いながら、随分と時間が経ってしまいました。

 この記事は、そんな「始めてはみたけど、Lチカから先に進めなかった組」(筆者含む)でもできるArduino再入門です!

再入門を始める前に
用意したいアイテムを確認

 再入門だと意気込んだところで、まったく何もないところからは始められません。ということで、まずは必要なアイテムなどを確認してみましょう。この記事ではLチカから始め、3分タイマーの作成まで行いますので、以下のパーツを使っています。

Arduino本体(最新版でなくても今回は大丈夫)、ブレッドボード、ジャンプワイヤー、抵抗、LED、タクトスイッチ、ブザー、圧電スピーカーなどです。すべてが必要というわけではありませんが、あると記事と一緒に試していけます。

 また、ソフトの開発環境としてArduino IDEをインストールしておきましょう。Arduino.orgから最新バージョンをダウンロードできます。

http://www.arduino.org/downloads

基板上のLEDで「Lチカ」の復習から始めよう!

 まずはLチカからおさらいしてみましょう。といっても、スケッチ例として登録されている「Blink」を書き込むだけですので、何も難しいことはありません。これは、「ファイル」-「スケッチの例」-「01.Basics」-「Blink」で呼び出せます。

さて、さっそく内容を見てみます。

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

 メイン部分を抜き出すと、このようになっています。起動後1度だけ実行される「setup()」と、繰り返し実行される「loop()」の大きく2つの部分からなり、setup()ではピンの入出力モード設定、loop()ではLEDのオン/オフ動作が書かれています。さらに内容を細かく見てみましょう。

>  pinMode(13, OUTPUT);

 「pinMode()」は、ピンを入出力どのようなモードで使うのかを設定するものです。この例では、「13番ピンを出力モードとして設定する」という設定になります。このスケッチはLEDを点滅させるものなので出力として使い、「OUTPUT」となるわけです。これをスイッチなどの入力として使うのであれば、「INPUT」などと変わってきます。

 続いてloop()を見てみましょう。

>  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)

 「digitalWrite()」は、指定したピンに対し出力を設定するものです。この例では、13番ピンの状態が「HIGH」(5V)になり、接続されているLEDに電流が流れ、点灯するわけです。

>  delay(1000);              // wait for a second

 「delay()」は待ち時間をミリ秒単位で指定するものです。この例では1000と設定されているので、この1行で1秒間待つことになります。なぜわざわざ待ち時間を入れているかといえば、次の行を見ればわかります。

>  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW

 ここで13番ピンを「LOW」に設定して、LEDを消灯しています。つまり前の行の待ち時間がなければ、点灯した直後に消灯することになり、肉眼ではわからないほど短時間しか光らないことになります。LEDの点滅がしっかりとわかるための待ち時間だったわけですね。

>  delay(1000);              // wait for a second

 最後の待ち時間も、同じ理由です。Arduinoではloop()で書かれた内容が繰り返されるので、この次に実行されるのは「digitalWrite(13, HIGH)」。この待ち時間がなければ、消灯した直後に点灯することになってしまいます。

 実際にBlinkを書き込んでみた例を見てみましょう。基板上のLEDが点滅しているのが分かると思います。

基板上の「L」が点滅しました。

 いわゆる「Lチカ」(基板上の)ができましたが、せっかくなので次は自分で用意したLEDを光らせてみましょう。

前へ 1 2 3 次へ

カテゴリートップへ

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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