hollywis's diary (はりうすブログ)

はりうすの活動日記です

ポテンションメーターを使う | 中華で始める Arduino入門日記11

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

中華で始める 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(明るさ)センサーを使います。