
磁石で電子工作できる「littleBits」のArduinoモジュールでLチカしてみた(Windows・Mac)
こんにちは、DevRelチャンネル外部ライターの田中正吾です。電子回路パーツを磁石でパチパチとつなげるだけで電子工作ができる「littleBits」の連載第3回目です。
前回の記事ではArduinoの開発環境のインストール方法、そしてモジュールにプログラミングを書き出しLEDライトをチカチカと点滅させる(通称:Lチカ)までの流れについて紹介しました。第3回目となる今回は、littleBitsのArduinoモジュールでON・OFFの入力値を受けてみようということで、littleBitsのINPUTモジュール(例:ボタンモジュール)からのON・OFFの入力を受け取る流れをお伝えします。
Arduinoプログラミングとプロトタイプ作成を同時に楽しみたい方におすすめです。
ARDUINO CODING KITを購入した前提で話を進めます。INPUTモジュール(ボタンモジュール)から動きを受け取りたいときは、上記のように3つのつなぎ方ができます。
図のカッコ内の数字「0,A0,A1」は、Arduino IDEでプログラムを書くときに重要なポートの名前です。頭の片隅でいいので覚えておきましょう。入力1、2、3番目とならないことに注意してください。
前回の記事で2番目の出力でLEDを反応させるために、ポート5に命令を出すのと同じことです。littleBitsでのつなぎ方が分かったので入力を取得してみます。
シンプルにON・OFFを取得してみます。今回は上から2番目のA0でつないでいきましょう。Arduino IDEプログラムは以下のように書きます。
void setup() {
Serial.begin(9600);
// A0ポートで入力値を取得するよと宣言
pinMode(A0, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// A0ポートからON/OFF取得
int sensorValue = digitalRead(A0);
// ON/OFF取得をシリアルモニタで表示
Serial.println(sensorValue);
// 1秒ごとにON/OFF取得の値を取得(1か0が出力)
delay(1000);
}
setupで「A0ポートで入力値を取得するよ」と宣言しておきます。loopは常に動いています。delay(1000)によって1秒ごとに動くようにしています。
loopでは「A0ポートからON/OFF取得」「ON/OFF取得をシリアルモニタで表示」「1秒ごとにON/OFF取得の値を取得(1か0が出力)」という動きをします。
Arduinoモジュールに書き込むプログラムを書き込みます。Arduino IDEの使い方やプログラムの書き込み方は前回の記事を参考にしてください。
磁石で電子工作できる「littleBits」のArduinoモジュールでLチカしてみた(Windows・Mac)
今回の動きはArduino IDEについているシリアルモニタというもので確認します。シリアルモニタは、USBケーブルを経由してArduinoからくる値を表示するものです。
// ON/OFF取得をシリアルモニタで表示
Serial.println(sensorValue);
こちらで書かれたカッコ内の値が出力されます。Arduino IDEを見てみましょう。
マイコンボードとシリアルポートがちゃんと設定されていることを確認して、シリアルモニタをクリックします。
いまはボタンモジュールが押されていないので1秒ごとに0が出力されています。下部のメニューの設定も注意です。自動スクロールがチェックされ、改行なし、9600 bpsになっていることも確認しておきます。
ボタンを押してみます。
ボタンを押すと1が出力されるようになります。
今回はボタンを押したときの状態を受け取る「入力」についてお伝えしました。シンプルな1と0を取得しましたが、これでPCとlittleBits(ハードウェア)が1と0という同じ言葉で会話できるようになります。
PCとlittleBits(ハードウェア)が共通の言葉で会話ができることで、この値の変化をきっかけに「1が来たらPCのほうで何かをソフトウェアを動作させる」「0が来たらWEBに何かを知らせる」といったことも可能になります。こちらについても、以後の連載でお伝えしていきます。
次回はボタンの入力とバーグラフモジュールLEDが連携する「入出力の連携」についてお伝えします。お楽しみに!