Groveで広がるArduinoの世界-Senser Kit-⑦ Grove Rotary Angle Sensor

 Rotary Angle Sensorは、そのもの自体はテレビやオーディオ機器のボリュームそのものです。回すと抵抗値が変化するので、0~300度を0~5Vに対応させたセンサです。角度をディジタル値で出力するセンサをRotary Encoderと呼びます。

 ボリュームには、1k、5k、10k、20k、50k、100k、1MΩなどの種類があります。そして、回す角度と抵抗値の変化で、次の3種類があります。オーディオ用ではAカーブが使われます。ここで使われているのはBカーブだと思われます。

接続

 10kΩのボリュームがつながっています。

Groveピン番号 ボリュームのピン
4 GND 3番
3 Vcc 1番
2 NC NC 
1 SIG 2番

プログラム

 用語「ポテンショメータ」は、日本では半固定抵抗もしくは、多回転半固定抵抗を指していることが多いです。

 THE POTENTIOMETERのページに掲載されているスケッチです。

int potentiometer = A0; //Assign to pin A0
 
void setup()
{
    Serial.begin(9600); //Begin serial communication
    pinMode(potentiometer, INPUT); //Sets the pinmode to input
}
 
void loop()
{   
    int sensor_value = analogRead(potentiometer); //Read the value from the potentiometer connected to the A0 pin
    int value = map(sensor_value, 0, 1023, 0, 100); //Map the value from 0, 1023 to 0, 100
    Serial.print("Potentiometer value: ");
    Serial.println(value); //Print the value in the serial monitor
    delay(500); //Add a delay to see the value every 1/2 second
}
 

 実行している様子です。

 Map関数はArduino独自のもので、整数が返されます。アナログ入力は、0~5Vを0~1023の数値で得られます。

  int value = map(sensor_value, 0, 1023, 0, 100);

 0~100というのは何を目的にしているのか不明です。角度センサといっているので、0~300に変換します。また、左端が最大になるのは不自然なので、左に回し切ったら0になるように変更しました。

  int value = map(sensor_value, 0, 1023, 300, 0);

前へ

Groveで広がるArduinoの世界-Senser Kit-⑥ Grove Red LED

次へ

Groveで広がるArduinoの世界-Senser Kit-⑧ Grove 3-Axis Digital Accelerometer