03 ポテンショメータでLEDの点滅間隔をアナログ入力する
ポテンショメータ
ポテンショメータは可変抵抗器です。5Vの電圧がかかると、真ん中のピンがつまみの位置に応じて抵抗値が変わり、0Vから5Vまでの間で出力します。
準備物
・LED
・ポテンショメータ
・300Ω抵抗
・ジャンパワイヤ x7
デジタルとアナログ
デジタル信号は0と1(または、ONとOFF)の2つの状態のみを持ちます。一方でアナログ信号は連続的に変化し無限の状態を持ちます。ポテンショメータのつまみの位置は0か1のどちらかではなく、さまざまな位置を取ります。ポテンショメータの位置をアナログ信号としてRedBoardに入力します。
RedBoard側ではポテンショメータのつまみ位置を、0(0V)から1023(5V)までの数値に変換して読み取ることができます。この仕組みを使ってポテンショメータでLEDの点滅間隔を調節できるようにします。
シリアルポート
シリアルポートはデータを1度に1ビットずつ送受信するインタフェースです。ArduinoやRedBoardではシリアルポートを使って、PCとボード間でデータをやり取りすることが可能です。シリアルポートには、ボーレートと呼ばれる通信速度を送信元、受信元で一致させる必要があります。この数値が一致しない場合は、データが文字化けして表示されます。
このタスクにおいてもシリアルポートを使用して、RedBoardから文字列をPC側に出力をします。これは、デバイスの挙動をログから確認する際に便利です。
接続
配線はやや複雑です。ブレッドボードの(+)と(-)の列を複数の部品で共有します。
LEDは抵抗と直列接続します。LEDの(+)側が13番のピンにつながるようにします。LEDの(-)側はブレッドボードの(-)の列に接続します。
ポテンショメータは3つのピンがあります。真ん中のピンがアナログ入力を行います。そのため、RedBoardのA0に接続します。左右のピンはそれぞれブレッドボードの(+)と(-)に接続します。
プログラムの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
int potPosition; // ポテンショメータの値を保持する変数を定義します void setup() { Serial.begin(9600); //シリアル通信を開始します。ボーレートは9600です。 pinMode(13, OUTPUT); //13番のPINを出力モードに設定します } void loop() { //ポテンショメータの位置を読み取ります potPosition = analogRead(A0); //A0のピンから0-1023までの数値のアナログ入力を読み取ります Serial.println(potPosition); //potPositionの値をシリアルポートに出力します //LEDの点滅間隔を変化させます digitalWrite(13, HIGH); // LEDをオンにします delay(potPosition); // potPosition の秒数(milliseconds)だけ待機します digitalWrite(13, LOW); // LEDをオフにします delay(potPosition); // potPosition の秒数(milliseconds)だけ待機します } |
結果
ポテンショメータの位置を変更するとLEDの点滅間隔が変化します。
Arduino IDE上で右上の”Serial Monitor”をクリックすると、シリアルポートからの出力(ポテンショメータからの入力値)が表示されます。
まとめ
ポテンショメータ(可変抵抗器)を使って、アナログ入力を読み取りました。その値を使ってLEDの点滅間隔を動的に変化させました。外部からの人間の入力を、システムで使用することができました。
応用
- ポテンショメータからの入力値を操作してみましょう。例えば、2倍にしてみたり、500を引いてみたりなど。