こんにちは、のすけです。
中華で始める Arduino入門日記の11回目になります。
この連載は、爆安の中華製のArduino互換機を入手し、色々と苦しみながらも安い互換機でArduinoを学習してしまおうというものです。 入手の話はこちらから。
今回のお題
前回は傾きを検出しました。
今回は、Potentiometerを利用して傾きを検出してみたいと思います。
チュートリアルのchapter9に対応しています。
早速始めましょう。
ポテンションメーターとは
調整つまみがついたデバイスで、回し具合に応じて様々な抵抗にすることができます。
可変抵抗器ですね。
3つの端子がありますが、両端の2つに基準電圧を掛けて、真ん中の端子で変更された電圧を受けることができます。
回路を作る
両端の端子に5Vの基準電圧をかけます。
そして、真ん中の端子にはアナログのA0ピンを接続します。
このつなぎ方でアナログ値を観測すれば5V(ボルト)で1023、0V(ボルト)で0を記録するはず。
実は付属のブレッドボードにはポテンションメーターの端子のサイズが微妙に合わなくて刺さりませんでした。
そこで、別途持っていたミニブレッドボード(中華キットには入ってません)を使うといい感じに刺さりました。
簡単なんで回路図は省略。
プログラム
ポテンションメータ(可変抵抗器)からアナログ値を取得し、シリアルモニタに出すだけです。
前回の傾きより、よほど楽ですね。
int potpin = 0 ; int val = 0 ; void setup() { Serial.begin(9600); } void loop() { delay(50); val = analogRead(potpin); Serial.println(val) ; }
つまみを動かすと、0~1023までの値がシリアルモニタに出ました。
応用してみる
前回のティルトスイッチのプログラムを応用して、512以上になったらLEDを光らせてみました。
int apin = 0; //アナログpin5を利用 int ledpin = 13; //LED pin int threshold = 512; //閾値 void setup() { pinMode(ledpin,OUTPUT); //デジタル pin13を出力設定 Serial.begin(9600); // シリアル通信設定 } void loop() { int pot_read; //変数pot_readを定義 while(1) { pot_read = analogRead(apin); //アナログpin0から電圧を読み取って変数に格納 Serial.println(pot_read); if(pot_read > threshold) { digitalWrite(ledpin,HIGH);//led点灯 } else //それ以外の場合 { digitalWrite(ledpin,LOW);//led消灯 } delay(60); } }
先ほどの回路にpin13と隣のGNDに跨ってLEDを刺しとけばOKです。
なお、ポテンションメーター用のGNDは別のところに移動させます。
こっちの方が、楽しいですね。
LEDをデジタル出力ではなく、アナログ出力を使えばLEDの明るさを変えたりもできそうですね。
今回はこれでお終いです。
次回は、Photoresistor(明るさ)センサーを使います。