①主控芯片:ATmega328P
②数字输入输出引脚:14个
③PWM引脚:6个
④储存(存放代码的空间)32KB
⑤运存(运行时的存储)2KB;EEPROM(掉电保存空间)1KB
⑥晶振16MHz
在线仿真:https://wokwi.com/
(一)简介
Arduino UNO有5个模拟引脚,A0-A5
ADC的工作原理
电压范围:Arduino Uno的ADC可以读取0到5V范围内的电压。
分辨率:Arduino Uno的ADC具有10位的分辨率,这意味着它可以将0到5V的电压范围分成1024(2^10)个等份。因此,每个等份代表的电压值为5V/1024。
转换过程:当模拟电压施加到Arduino Uno的模拟引脚上时,ADC会读取该电压值,并将其转换为最接近的等分值。例如,如果电压为3V,则ADC会将其转换为最接近的整数值,即614(3V/5V×1024≈614.4,取整为614)。
串联电阻
Arduino Uno的模拟输入引脚具有固定的参考电压(通常为5V或3.3V,取决于开发板的供电电压),并且其ADC(模数转换器)具有固定的分辨率(通常为10位,即能够区分0到1023之间的值)。
如果待测电压超过了Arduino模拟输入的参考电压,或者待测电压范围过大,直接使用可能会导致测量不准确或损坏开发板。此时,通过串联一个或多个电阻来分压,可以将待测电压降低到适合Arduino测量的范围内。
(二) 程序
5/1024=0.0048875855327468
#define BV 0.0048875855327468
②定义变量
int v; //定义analog所测得的数字(1~1023)
double lv; //定义所测电阻的电压
int RR = 2; //电阻数量
③初始化函数
启用串口,波特率为9600
将A0端口设置为输入模式
void setup() {
Serial.begin(9600);
pinMode(A0,INPUT);
}
④循环函数
读取A0端口的模拟量,保存到变量v内
变量v再乘上每份ADC的电压BV,将结果保存到lv内
串口打印变量lv的值
voidloop() {
v = analogRead(A0);
lv = v * BV*2;
Serial.println(lv);
}
⑤程序
#defineBV0.0048875855327468 //analog将5V分成了1023个单位——5/1023
int v; //定义analog所测得的数字(1~1023)
double lv; //定义所测电阻的电压
int RR = 2; //电阻数量
voidsetup() {
Serial.begin(9600);
pinMode(A0,INPUT);
}
voidloop() {
v = analogRead(A0);
lv = v * BV*2;
Serial.println(lv);
}
⑥实验现象