このArduinoの基本では、外部アナログ信号がArduinoアナログ入力に供給され、対応する比例したデジタル読み出しに変換または変換されるコード実装手順を理解しようとします。ここでは、アナログ信号源としてポットの形で可変抵抗を採用しています。
アナログ読み取りシリアル
この例では、ポテンショメータなどの外部デバイスからアナログ入力を読み取る方法を学習します。これは、手動操作によって回路にさまざまな抵抗を実装するために設計された電気機械デバイスです。
Arduinoは、ポテンショメータから出てくる電圧の大きさを測定して、それに対応して変化する抵抗を読み取り、識別するために使用できます。これは、Arduinoアナログ入力ポートにアナログ値として電圧を供給することで実行できます。
ここでは、Arduinoとリンクされたコンピューター間でシリアル通信を確立した後、上記がどのように実施されるかを見ていきます。
必要なハードウェア
Arduinoボード
10キロオームのポテンショメータ
回路動作
上の図に示されているように、ポットから出ている3本のワイヤーをArduinoポートに接続します。
ポットの外側のリード線の1つからのワイヤは、ボードのアース線またはマイナス線に割り当てられます。
もう一方のフリーエクストリームアウターエンドリードは、ボードの+ 5Vに接続されます。
残っているのはポットのセンターリードで、Arduinoボードのアナログ入力で終端されています。
ポットシャフトを回転させると、スライダーアームがどちら側に近づくかによって、センターリードと外側端子の抵抗が高い方から低い方へ、またはその逆にシフトします。
たとえば、スライダーアームを+ 5Vリードに向けて回転させると、中央のリードは5Vに近づき、5Vに割り当てられたリードに触れると全体の値を取得する傾向があります。同様に、スライダーシャフトがグラウンドポットリードに向かって移動すると、センターリードはゼロ電位に達する傾向があります。
ポットのセンターリード上の上記の線形に変化する供給電圧は、それに対応して変化するポットの抵抗に解釈するために、arduinoアナログ入力によって読み取られます。
Arduinoは、上記のポットの動きを効果的に解釈し、それを0から1023までの数値に変換する内部アナログ-デジタルコンバータ回路を内蔵しています。
ポットシャフト上の特定の位置では、Arduinoによって0から1023までの比例数が変換され、5Vと0ボルトの最終値の場合、解釈は明らかに0と1023になります。
参照されているプログラムでは、Arduinoボードとコンピューター全体で、シリアル通信を開始するためにセットアップ機能をトリガーする必要があります。レートは1秒あたり9600ビットのデータです。
期待されるコマンドは次の形式です。
Serial.begin(9600)
続いて、コードのメインループで、ポットリードから受信した抵抗値(0から1023の間で説明されているように、intデータ型にちょうど適しています)を修正するために変数を適用します。
int sensorValue = analogRead(A0)
結論として、この情報を10進数(DEC)値としてシリアルウィンドウに出力します。コマンドSerial.println()を使用して、コードの最後の行でこれを実装できます。
Serial.println(sensorValue、DEC)
この後、Arduino開発ドメインでシリアルモニターが開始されるたびに(これは、プログラムのヘッダーにある[アップロード]ボタンのすぐ右側にあるボタンをクリックすることによって行われます)。
ポットシャフトのさまざまな回転位置に対応する、0〜1023の一貫した数字のチェーンが表示されます。
ポットシャフトの回転を一時停止すると、対応する瞬間番号がArduinoの画面に表示されます。これは、ポットシャフトの位置を変更すると、それに比例して再び変化します。
コード
/ *
AnalogReadSerial
ピン0のアナログ入力を読み取り、結果をシリアルモニターに出力します。
ポテンショメータの中央のピンをピンA0に接続し、外側のピンを+ 5Vとアースに接続します。
このサンプルコードはパブリックドメインです。
* /
//リセットを押すと、セットアップルーチンが1回実行されます。
void setup(){
//シリアル通信を9600ビット/秒で初期化します。
Serial.begin(9600)
}
//ループルーチンは永遠に何度も何度も実行されます:
void loop(){
//アナログピン0の入力を読み取ります:
int sensorValue = analogRead(A0)
//読み取った値を出力します:
Serial.println(sensorValue)
delay(1)//安定性のための読み取り間の遅延
}
前:スイッチの状態の監視(デジタル読み取りシリアル)–Arduinoの基本 次へ:1.25Vから120Vの主電源調整可能電圧レギュレータ回路