nanoのADCを確認します。4.88mVの分解能があるようです。前回のLEDプログラムに組み込めば可変抵抗器で点滅や明るさをコントロールできますね。nanoはV3.0です。別バージョンとは少し異なる点があります。アナログ入力A0~A7が入れ替わっているのが分かります。シルクに記載されていますが間違えないように。220Ω←途中で追加ブレッドボードジャンパー線アナログ入力回路を考える簡易的な接続図も用意しました。4.88mVの分解能をもっています。A2は10KΩの固定抵抗で約1.65V、A0は可変抵抗10kΩを操作して3.3~1.65Vを読み取る構成となっています。3.3V-A0間が0Ωの時A0が読み取る値は1023、10kΩの時はA0は511になります。A2は固定ですので511のままです。プログラミングするプログラムはArduino.ccのリファレンスを参考に作り上げます。https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/analogRead(Pin)を使いA0とA2を読み取る。Pinに入れる数値は前回のデジタルピンと同じくA0なら0、A2なら2。簡単に取得した値を表示するように作り出来上がったプログラムを書きこんで実行!1秒ごとにA0とA2の階調と計算より求められた電圧が表示される。1s辺りはA0=A2=1.65Vを示すはずだが取得値が434となっている。2.12V全然違いますね...。それにボリュームを最小にしても3.3V付近とはならず。10sは848とあり4.14Vとなっています。初めはプログラムミスかと思ったんですが問題なさそうでした。電圧周りを調べることに。すると、3.3Vは正常だったんですがUSB電源に問題がありました。USB電源は4.4V程度で内部5V電源は4.13Vとなっていました。SELECTORのD1、Vfが0.38Vmaxだからかな)動かすだけであればATmega328/Pは動作電圧1.8V~5.5Vで範囲内なので問題ないのですが、供給している電源が5Vに安定する安定化電源を使わない限りアナログ入力を取得したところで正確な電圧値を求めるのは無理そうです。(マイコン自体に電源電圧値を取得できるならいいのですが)回路の見直し仕方なくレギュレーターで安定している3.3V電源を使用することに。変更点を回路図に赤線で記載。可変抵抗が接続されている3.3VをAREFへ繋げる。プログラムのsetupにanalogReference(EXTERNAL)を追加する。https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/これでアナログの基準電圧はAREFに印加された電圧になる。AREFが3.3Vとなったことで1023がおおよそ3.3V、511辺りが1.65V一見良さそうなんですが、実際の測定値だと誤差1.7%。こんなものですかね(多分でも、VREFを使うと5V読みたい時どうするのか。基準3.3Vだからそれ以上は測れない。回路の再見直し(多分完成)回路はこんな感じ。AREFは未接続で電源電圧を基準に出来ます。アナログA0はそのまま分圧で3.3V~0Vを測定する構成です。左側の分圧回路は5Vを1/10にしてA7で測定出来るようにしてます。基準電圧1.1Vにして測定するのか。1.1Vが他電源より正確であることを期待し、デフォルトの基準電圧である電源5Vが実際にいくつか測定するのです。それに抵抗、電圧誤差で結果はバラツキがありますが)方法としては、Arduino起動時のsetup中にアナログ基準電圧を内部電源1.1Vに設定します。A7の値(実際の電圧の1/10になっている)を取得後、値を10倍して大体の電源電圧を求めます。再度アナログ基準電圧をデフォルトに戻してA0を測定するというもの。やってみたらそれらしく出来た。VCCはVINのこと。実際にテスターで測っても4.05Vとなってていい感じ。何度も起動してもVCCは4.00Vと出る...おかしい。float使ってなかったのと基準電圧1.1V周りの計算式を見直したらミスがあった。(基準電圧1.1Vで取得した値じゃなく測定からの”4′′Vを入れてた....ぅゎぁ)けれど、うまくいかないという現実。長いこと悩んだ結果分かったのが基準電圧を決めるanalogReference();がsetup内で正常に動作せずINTERNALへ変わらなかった。(その影響で上の電源測定値”4′′Vで計算して測定値に近い値が出ていた。)最終的にINTERNAL(内部電圧基準)を設定後、1秒ディレイを入れてから電圧値を取得した後にDEFAULT(電源電圧基準)に戻すことで解決。内部のセレクタが切り替わるタイミングが悪かったのかな?更に、周りの影響か静電容量関係か分かりませんが、アナログ入力を1回読み取りだと若干低い値になるのでfor文で3回繰り返して測定値に近い値を出しています。1.8%それっぽく動いているので大丈夫そう。頑張ってやってみたけどどうなんだろうね。面倒なことやってますな~って上級者から言われそう。言うか、ご指摘待ってます~。今回のプログラムはここ。(3)通信テスト前回の続きです。Arduinoのプログラムは一応形にはなったので経過報告。...書いてる人おがP猫に包囲された居住空間で飼育されています。