【Arduino】ボリューム使ってみた
ボリュームでLEDをコントロール
ボリュームをひねってLEDを点けたり消したりする処理をやってみました。
本当はちょうど手元にボリュームがあったので、せっかく前回スピーカーで音を出すことに成功したし、音量調整できたら面白いんじゃないかと思ってやりはじめたものです。
しかしボリュームの調整の幅が思ったより狭く、というか、もはやタクトスイッチの機能と同じだったため、ボリュームでもLEDを操作できるのではと考えて今回のネタになりました。
ボリュームはこんな感じ
左が横から見た図 右が上から見た図
脚が3つもあるんですね。
タクトスイッチと機能が一緒だと上で書きましたがそれは、シリアルモニタ上で確認すると、ボリュームをひねって表示される数字が0と1のふたつしかなく、これによって反映されるLEDなどの変化の仕方が2種類しかなかったためです。
プログラム
//ボリュームを接続するピン const int volPin = A0; //LEDを接続するピン const int ledPin = 13; void setup() { //アナログ0番ピンを入力用として設定 pinMode(volPin, INPUT); //デジタル13番ピンを出力用として設定 pinMode(ledPin, OUTPUT); //一応シリアルモニタも用意 Serial.begin(9600); } void loop() { //ボリュームの状態を取得 int volValue = digitalRead(volPin); //ボリュームの状態をLEDに反映 digitalWrite(ledPin, volValue); //シリアルモニタにボリュームの状況を反映 Serial.println(volValue); }
ボリュームはA0ピン、LEDはデジタルの13番ピンへつなぐ設定です。
setup()関数では、ボリュームをつなぐA0ピンは入力、LEDは出力という処理をするよう書きます。
またボリュームをひねったときの数字の変化が見たかったので、シリアルモニタを付け加えておきました。
あとは、loop()関数でボリュームの状態を取得して変数に格納、その変数を使ってLEDへ反映させるための処理も書き記しておきます。
ボリュームの状態をシリアルモニタへ反映させるためのプログラムも忘れずに。
回路図
ボリュームは脚が3つあるのでそれぞれ、電源の5V、A0ピン、ブレッドボードのGNDへジャンパワイヤでつなぎます。
LEDはデジタル13番ピンとブレッドボードのGNDをジャンパワイヤでつないでおきます。
ブレッドボードのGND部分は忘れずにArduinoのGNDピンへつないでおく!
あとブレッドボードのGNDは、ボリュームもLEDも、Arduinoへつなぐのにも、列は同じところを使う!!
あ、そうそう。
この記事の一番上の写真にはLEDの前に抵抗が挟まれていますが、それ無しでもできるので回路図にはつけませんでした。
実際のようす
①まず、ボリュームをひねっていない状態
LEDは点灯していません。
その時のシリアルモニタのようすはこちら↓
数値は0のままです。
②次に、ボリュームをマックスまでひねった状態
LEDはぺかーっと点灯しています。
その時のシリアルモニタのようす↓
数字は0から1になっていました。
③おまけですが、真ん中の状態ならば…
LED、きれいに点灯していますね。
もうこの状態を見たらシリアルモニタのようすなんてどうなっているのかわかりますが一応こちらです↓
はい、見事に1がずらーっと表示されています。
消えているときの信号は0、点いているときの信号は1って風に考えればいいんですかね。
感想
最初のほうにも書きましたが、当初思い描いていた使い方ができなくてつまらん!と思いました。
ですが、タクトスイッチのように扱えることが分かったし、なんだかこれまでやってきたことたくさんつまっている感じがして満足だったりはします( ^ω^ )