こんにちは、のすけです。

中華で始める Arduino入門日記の11回目になります。

この連載は、爆安の中華製のArduino互換機を入手し、色々と苦しみながらも安い互換機でArduinoを学習してしまおうというものです。 入手の話はこちらから。

hollywis.hatenablog.com

今回のお題

前回は傾きを検出しました。

hollywis.hatenablog.com

今回は、Potentiometerを利用して傾きを検出してみたいと思います。

チュートリアルのchapter9に対応しています。

早速始めましょう。

ポテンションメーターとは

調整つまみがついたデバイスで、回し具合に応じて様々な抵抗にすることができます。

可変抵抗器ですね。

f:id:hollywis:20151209162606j:plain

3つの端子がありますが、両端の2つに基準電圧を掛けて、真ん中の端子で変更された電圧を受けることができます。

回路を作る

両端の端子に5Vの基準電圧をかけます。

そして、真ん中の端子にはアナログのA0ピンを接続します。

f:id:hollywis:20151209163009j:plain

このつなぎ方でアナログ値を観測すれば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は別のところに移動させます。

f:id:hollywis:20151209170139j:plain

こっちの方が、楽しいですね。

LEDをデジタル出力ではなく、アナログ出力を使えばLEDの明るさを変えたりもできそうですね。

今回はこれでお終いです。

次回は、Photoresistor(明るさ)センサーを使います。

Receive the latest news in your email
Table of content
Related articles