はじめに
本記事ではArduinoのアナログ読み取りを行っていきます。基礎中の基礎なので大部分の人は知っているかと思いますが、再確認という意味でやっていきますね。
ちょっと説明 ~アナログ読み取り~
今回はArduino_unoを例に挙げます。
仕様
・基準電圧:5V
・アナログ読み取り分解能:10ビット(0~1023)
・チャンネル数:A0~A5
Arduino_unoでは5Vの基準電圧を10ビットの分解能で読み取り可能です(つまり5/1023で4.89mV単位まで読み取りが可能)。逆を言うと4.89mV以下の電圧の変化は検出することができません。
例えばArduino_Zero_Proであれば12ビットの分解能を持っているために0~4095まで基準電圧を刻んで読み取ることができます。しかしこのZero_Proの場合は基準電圧が3.3Vであるために3.3/4095で0.8mVの変化まで読み取り可能です。
でも、なんで基準電圧に5Vと3.3Vがあるの??
もともとは5VのTTL/CMOS標準ロジックが主流だったけど低電圧系への移行の際に3.3Vが生き残ったみたいだよ。
その3.3Vに移行した理由の一つに既存の5V標準のTTL/CMOSとの接続を考慮した為とも言われていますね。
脱線してしまいましたが、マイコンのアナログ読み取りを行うときは基準電圧と分解能に注意しましょう。
準備
材料
- Arduino_uno
- LED
- 100Ω抵抗
- 500Ω可変抵抗
以上
今回は、抵抗と可変抵抗の分圧電圧をアナログ読み取りしていきます。そして、アナログ読み取りした値をPWMに変化させてLEDの明るさを変えていきたいと思いますね。
実装
以下回路図になります。
以下コードになります
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
int led=9; int pot=0; int val=0; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { val=analogRead(pot); Serial.print("analog");Serial.println(val); val=map(val,0,1023,0,255); Serial.print("PWM");Serial.print(val);Serial.println(""); delay(100); } |
今回はマップ関数を使用してアナログ値10ビット(0~1023)をPWMの8ビット(0~255)に変化させています。参考にマップ関数のリンクを載せておきますね。
実際の動作映像を以下のリンクに乗せておきました。
いかがでしたか?おそらく大半の人がそんなの知ってるよ。と思うかもしれませんが基本のおさらいということで本日の記事は終わります。
でわでわ~
コメント