注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!

アナログ-デジタルコンバータ (ADC) (最大14ビット)

現代の電子プロジェクトでは、アナログ信号を正確に読み取り処理することが重要です。アナログ-デジタルコンバータ (ADC) は、アナログ信号をマイクロコントローラが処理できるデジタル信号に変換します。Arduino Uno R4 は、より強力なプロセッサを搭載しており、この点で大きな進歩を遂げています。前世代の Arduino Uno R3 の最大解像度は10ビットでしたが、Arduino Uno R4 のADC解像度は14ビットに向上しました。この改良により、アナログ信号からより精密な値を取得できるようになり、データ収集と処理の精度が向上します。

ADC解像度の設定

Arduinoボードの標準解像度は10ビット (0-1023) に設定されています。UNO R4 WiFi は最大14ビット (0-16383) の解像度をサポートしており、アナログ信号からより精密な値を提供します。解像度を更新するには、 analogReadResolution() コマンドを使用するだけです。

void setup() {
  // シリアル接続を開く
  Serial.begin(9600);
}

void loop() {
  // デフォルトの解像度 (10ビット) でA0を読み取り
  // シリアル接続に出力
  analogReadResolution(10);
  Serial.print("ADC 10ビット (デフォルト): ");
  Serial.print(analogRead(A0));

  // 解像度を12ビットに変更しA0を読み取り
  analogReadResolution(12);
  Serial.print(", 12ビット: ");
  Serial.print(analogRead(A0));

  // 解像度を14ビットに変更しA0を読み取り
  analogReadResolution(14);
  Serial.print(", 14ビット: ");
  Serial.print(analogRead(A0));

  // 解像度を8ビットに変更しA0を読み取り
  analogReadResolution(8);
  Serial.print(", 8ビット: ");
  Serial.println(analogRead(A0));

  // シリアルモニタを占有しないように少し待つ
  delay(100);
}

注意点と警告

ADC解像度を設定する際には、以下の点を考慮してください:

  1. ハードウェアの制限: analogReadResolution() の値をボードの能力以上に設定すると、Arduinoは最大解像度でのみ報告し、余分なビットをゼロで埋めます。例えば、Uno R4で analogReadResolution(16) を使用すると、最初の14ビットが実際のADC読み取り値で、最後の2ビットがゼロで埋められたおおよその16ビットの数値が得られます。

  2. 低解像度設定: analogReadResolution() の値をボードの能力以下に設定すると、ADCから読み取られる余分な最下位ビットが破棄されます。これは、アプリケーションが全解像度を必要としない場合に簡略化された範囲で作業することを可能にします。

これらの考慮事項を理解することで、Arduino Uno R4 のADC機能を効果的に利用し、特定のアプリケーションに対して最適なパフォーマンスと精度を確保できます。

参考文献