チュートリアル08:analogRead()とシリアルポート通信

analogRead()とシリアルポート通信

何かがオンかオフかを知ることは非常に便利ですが、多くの場合、より多くを知りたいと思うでしょう。 光はどのように明るいですか?

衛星はどのくらい速く動いていますか? これらのタイプの回答は、多くの場合、アナログです–彼らは、オンまたはオフだけでなく、値の広い範囲をカバーしています。

Arduinoは、a0からA5というラベルの付いた6つの専用ピンを持つアナログ入力を処理します。 これらのピンは、入力値の範囲を取り、小さな断片に範囲を切断することにより、デジタルバージョンを作成するアナログ-デジタルコンバータへのアクセ これはすべて舞台裏で処理されます–あなたがしなければならないのは、いくつかの非常に単純な機能を使用することだけであり、必要なものを手

あなたは

  1. ポテンショメータが必要になります(任意の抵抗範囲が動作します)
  2. ジャンパー線–少なくとも3
  3. 自転車のタイヤ

ステップバイステップの指示

  1. ポテンショメータを配置しますあなたのブレッドボードに。
  2. Arduinoの5ボルトピンからポテンショメータの外側ピンのいずれかにジャンパワイヤを実行します。
  3. Arduinoのグラウンドピン(GNDと表示されている)の一方からポテンショメータのもう一方の外側ピンに別のジャンパワイヤを実行します。
  4. ArduinoのピンA0からポテンショメータの中央ピンまで、最終的なジャンパー線を実行します。
  5. Arduinoをコンピュータに接続します。
  6. Arduino IDEを開きます。
  7. このセクションのスケッチを開きます。
  8. 画面左上の確認ボタンをクリックします。 それが終了すると、オレンジ色に変わり、青に戻ります。
  9. アップロードボタン(確認ボタンの横)をクリックします。 それが終了すると、オレンジ色に変わり、青に戻ります。
  10. メニューバーで、ツール>シリアルモニター–シリアルモニターウィンドウが開きます–この画面には数字が表示されます。
  11. ポテンショメータのノブを調整し、シリアルモニターウィンドウを見てください。 数字は0から1023の間で調整する必要があります。

ピンA0

のポテンショメータでArduino analogreadとmap機能を使用すると、この画像はフリッツイングで構成されました。

Arduinoのコード

/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Graphical representation is available using serial plotter (Tools > Serial Plotter menu) Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain.*/// the setup routine runs once when you press reset:void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600);}// the loop routine runs over and over again forever:void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability}

スケッチを議論

このスケッチは、スケッチと回路を説明する複数行のコメントから始まります。 おそらく、コードの最初のブロックがsetup()関数であることに気付くでしょう–このスケッチの冒頭で変数を宣言または初期化しません–代わりに、最後の例 Setup()の中括弧の中では、シリアルライブラリを再訪し、関数Serialを使用します。開始()。

void setup() {// initialize serial communication at 9600 bits per second:Serial.begin(9600);}

前回のレッスンから思い出したら、シリアル。begin()はボーレートを引数として取ります(これはほとんど常に9600になります)。 この機能を使用すると、コンピュータとArduinoの間の通信チャネルを設定することができます。 ご存知のように、setup()は一度だけ実行され、次のコードブロックに進みます。

しかし、待って! 使用するピンのモードを設定する必要はありませんか? 素晴らしいポイント!

Arduinoが行うことは、デフォルトでは、特に指示しない限り、ボード上のすべてのピンを入力として設定します。 そのため、多くの場合、pinMode()関数を使用してピンを入力として明示的に設定する必要はありません。 それは言われています–私はとにかくこれを行うことを習慣にしています–それは私に物事を明確にするので–そしてそれはスペースと努力の価値があ

だから私はあなたをあえて、使用してピンのモードを設定しますpinmode(A0,INPUT)の中括弧の中に関数setup()–あなたはそれを後悔しません。

loop()関数に移り、変数の宣言と初期化から始めます。

int sensorValue = analogRead(A0);

sensorValueという変数を宣言し、それを新しい関数の出力に初期化します。 この新しい関数は魅力的なanalogRead()です。 だから、この新しい関数analogRead()が何をするのか野生の推測をしてください。 選択したアナログピンの値を読み取ります–この場合、ポテンショメータのセンターピンが接続されているアナログピンA0です。 ピンA0の電圧は0~1023の間の数値にマッピングされ、この値は変数sensorValueに割り当てられます。

上から思い出すと、ピンA0の実際の電圧は、ポテンショメータが調整されている場所に応じて0–5ボルトの間になります–この値は、アナログ-デジタルコンバータの助けを借りて0-1023の範囲にマッピングされます。 だから私たちは私たちのポテンショメータで値を記録した変数を持っています–次は何ですか? さて、値を見てみましょう。 これを行うには、Arduinoからコンピュータに印刷する必要があります–そしてあなたはそれを推測しました、私たちはシリアルライブラリ関数println()を使って…

Serial.println(sensorValue);

ここでは大きな驚きはありません–sensorValue変数を引数として関数Serialに送信します。println()とシリアルモニタウィンドウには、結果の値が表示されます。

スケッチを終了するには、次の読み取りが安定していることを確認するために、delay()関数をミリ秒単位で呼び出し、loop()の先頭から再度開始します。 AnalogRead()を使用して新しい値を記録し、変数sensorValueに保存してからコンピュータに出力します。

これはすべて良いことですが、あなたは考えているかもしれませんが、ポテンショメータはセンサーと何が関係していますか? ポテンショメータは何も感知しません! あなたは正しいです–しかし、興味深いことに、多くのセンサは、ポテンショメータが行うのと同じ原理を適用することによって動作します–抵抗を調 写真を撮る-レジスター例えば–それは光を感知するために使用することができます–それが露出している光の明るさに基づいて抵抗が変化するので-この抵抗の変化は、受信端のピンが受け取る電圧の量を調整します。 だから今、ボールはあなたの裁判所にあります–あなたは何のためにanalogRead()を使うことができますか?

自分で試してみてください

  • アナログピンをA2に変更します。 コードと回路を調整します。
  • 回路内で別のポテンショメータを試してみてください。

さらに読む

  • analogRead()
  • アナログ入力ピン
  • ポテンショメータチュートリアル–これは良いです

コメントを残す

メールアドレスが公開されることはありません。