音に反応してLEDを光らせる
どれだけ簡単かをお伝えするために、音に反応してLEDがつくという仕組みを、Gravityシリーズを使って作りたいと思います。今回使うのはこの4つ。
- DFRduino UNO R3(DFRobot版Arduino UNO)
- IO Expansion Shield for Arduino(Arduino互換)
- 音センサー(Gravity)
- LED赤(Gravity)
1のDFRduinoはArduino UNOでも代用できます。2のIO Expansion Shieldとは、たくさんのセンサーを取り付けられるようにDFRduinoを拡張するものです。
準備
まずはUSB A-BケーブルでDFRduinoとパソコンをつなぎます。電力が供給されるとDFRduinoの「ON」と書かれているLEDが赤く光ります。
「Tools」メニューから「Board: “Arduino/Genuino UNO”」「Port: “/dev/cu.usbmodem◯◯◯◯ (Arduino/Genuino Uno)”」を選択。
僕の環境はMac OS 10.11.6、Arduino IDE 1.6.12となっています。
組み立て
IO EXpansion Shield for ArduinoをDFRduinoの上に設置。向きに気をつけてください。
IO Expansion Shield上にも、その他の基盤同様に「A」「D」マークがあります。また、つなぐピンの部分もコネクタと同じ色になっているので、直感的に正しい配線をすることができると思います。今回の場合、人感センサーをマイコンボード「A」側の0に、LEDを「D」側の13に、ケーブルの色とピンの色が合うようにそれぞれ挿してください。
完成するとこんな感じになっています。
プログラムを書き込み
Arduino IDEを起動して、以下のコードを入力もしくはコピーします。
int ledPin = 13; int soundPin = A0; void setup() { pinMode(ledPin,OUTPUT); Serial.begin(9600); } void loop(){ int sensorValue = analogRead(soundPin); Serial.println(sensorValue); // Serial Monitorに数値を出力 int output = map(sensorValue, 0, 50, 0, 255); // 0-50を0-225に引き伸ばし analogWrite(ledPin, output); delay(2); }
「Verify」で検証した後「Upload」すればボードに書き込まれます。
Arduino IDEの右上にある「Serial Monitor」(虫眼鏡のアイコン)をクリックすると、音センサーが拾っている音の大きさの数値を見ることができます。
LEDに光の明るさを伝えるanlogWrite()
には、0~255までの値を渡すことができます。しかし僕の環境では音センサーが拾った音の大きさはマックス40程度しか出せなかったので、map()
を使い0~50を0~255に引き伸ばしています。
これでまわりの環境音の大きさによってLEDを点灯し、また音の大きさをLEDの明るさで表すことができました。
おわりに
今回のプログラムや仕組み自体はかなり初歩的でしたが、個人的に組み立て部分がとてもスムーズにいきました。
基盤上の「A」「D」のプリントとコネクタの色分けにより、他の開発ボードにくらべてかなり障壁が低くなったのではないかと思います。この二つのデザインの工夫によって、例えデジタル・アナログなどの知識がなくても組み立てることができるため、そもそもはじめ方が分からずに挫折してしまうケースはかなり減ると思っています。
最近海外では小学生にArduinoなどを使って簡単な電子工作を教えるケースもちらほら耳にします。マークや色でつなぎ方を直感的に伝えてあげることで、電子工作のレベルがどんどん下がっていき、子供でもブロック遊び感覚で興味を持つことができるのではないでしょうか。
それではまた!
購入はこちら
参考
より詳細な使い方を解説した記事「ハードウェア知識ゼロでも大丈夫。「Gravity」で始める電子工作入門」をdotstudioにて公開しています。
「Gravityシリーズ」のハンズオンが2/23に開催!
筆者が講師を務める、Gravityシリーズのハンズオンが2月23日に開催されます。ArduinoやRaspberry Piに挫折した……! という方も、簡単に電子工作を体験できる内容となっています。