第七章——模数转换 ADC
AVR 芯片内部自带有 10 位的模数转换器,能够读取输入的模拟电压值,将其转换为数字值。
你可以通过analogRead()
函数读取输入电压的数字值。
语法:
analogRead(pin);
pin 参数:在 Arduno Uno 开发板上,你可以使用A0-A5当作模拟输入的引脚,而在 Arudino Nano 开发板上你可以使用A0-A7这 8 个引脚。
在 Arduino 中,默认的分辨率为 10 位,也就是可以将 0-5V 分割 1024 份。而某些单片机芯片支持 12 位的分辨率,你可以使用analogReadResolution()
调整这个分辨率。更多相关详细信息可以参考以下内容:analogReadResolution。
下面是一个使用 ADC 调整板载 LED 闪烁频率的程序:
int led = 13;
int potentiometer = A0;
int delayTime = 100;
void setup() {
pinMode(led, OUTPUT);
pinMode(potentiometer, INPUT);
}
void loop() {
int value = analogRead(potentiometer);
// 将读取的值映射在10-1000之间,也就是10ms-1000ms
delayTime = map(value, 0, 1023, 10, 1000);
digitalWrite(led, HIGH);
delay(delayTime);
digitalWrite(led, LOW);
delay(delayTime);
}