learing:examples:readanalogvoltage
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
learing:examples:readanalogvoltage [2017/04/07 10:03] – 外部编辑 127.0.0.1 | learing:examples:readanalogvoltage [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== ReadAnalogVoltage (读取模拟口电压)====== | ||
+ | <WRAP left round info 60%> | ||
+ | 这个例子会告诉你如何读取A0号脚上的模拟输入信号,并将信号转换为电压值显示到串口监视器上。 | ||
+ | </ | ||
+ | |||
+ | <WRAP left round box 100%> | ||
+ | ===== ALPHA MEGA328-U核心 ===== | ||
+ | ==== 硬件 ==== | ||
+ | * [[ocrobot: | ||
+ | * [[ocrobot: | ||
+ | * [[ocrobot: | ||
+ | ==== 搭建电路 ==== | ||
+ | |||
+ | - ALPHA MEGA328-U模块插入并行扩展版1号槽位。 | ||
+ | - ALPHA 微动开关模块插入并行扩展板2号槽位。 | ||
+ | - USB线连接计算机与ALPHA MEGA328-U。 | ||
+ | <WRAP left round important 100%> | ||
+ | <WRAP group> | ||
+ | <WRAP half column 100px> | ||
+ | {{: | ||
+ | </ | ||
+ | |||
+ | <WRAP half column 200px> | ||
+ | \\ ALPHA 电位器模块中的拨码开关,请确保1处于ON位置。 | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 代码 ==== | ||
+ | <code cpp>/* | ||
+ | 读取A0口的模拟输入,转换为电压,显示在串口监视器上 | ||
+ | */ | ||
+ | void setup() { | ||
+ | // | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // | ||
+ | |||
+ | int sensorValue = analogRead(A0); | ||
+ | // 转换为电压 | ||
+ | float voltage = sensorValue * (5.0 / 1024.0); | ||
+ | // 串口显示 | ||
+ | Serial.println(voltage); | ||
+ | }</ | ||
+ | |||
+ | <WRAP left round tip 100%> | ||
+ | ALPHA MEGA328-U默认基准源为系统的供电电压,通过USB供电时基准源就是USB电压,一般为5V。MEGA328的ADC精度为10位,输出数值也就是0-1023。所以在5V基准源下ADC数据与对应的电压关系就为5.0V /1024。 | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP left round box 100%> | ||
+ | ===== ALPHA 8F328D-U核心 ===== | ||
+ | ==== 硬件 ==== | ||
+ | |||
+ | ==== 搭建电路 ==== | ||
+ | |||
+ | ==== 代码 ==== | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP left round box 100%> | ||
+ | ===== MangoII ===== | ||
+ | |||
+ | ==== 硬件要求 ==== | ||
+ | |||
+ | |OCROBOT控制器| | ||
+ | |可调电阻如电位计| | ||
+ | |导线| | ||
+ | |||
+ | 连接电位器的三线到你的控制器上,一条接5V,一条接GND,中间那根接A0口 | ||
+ | |||
+ | 调节电位器的旋钮之后,你就改变了连接在电位计中间脚的滑片两端的电阻值,也就改变了中间脚的电压,当中间脚和连接在控制器5V引脚的电阻接近于零的时候,中间脚的电压接近于5V,反过来的时候,电压接近0v。这个就是作为输入信号的模拟电压。 | ||
+ | |||
+ | MCU电路自带的模数转换器可以读取电压的变化,将它转换为0-1023的数字。当旋钮一直往一个方向拧,引脚上电压就是0,也就是输入值为0。当旋钮一直往另外一个方向拧,引脚上电压就是5V,也就是输入值为1023。在这之间,analogRead()返回一个介于0和1023的数值,相应的电压就加在了引脚。 | ||
+ | |||
+ | ==== 代码 ==== | ||
+ | |||
+ | 下面的程序中,先设置电脑和控制器的通讯速率为9600波特率 | ||
+ | |||
+ | <code cpp> | ||
+ | Serial.begin(9600); | ||
+ | </ | ||
+ | |||
+ | 设置变量存储电位器的输入值 | ||
+ | <code cpp> | ||
+ | int sensorValue = analogRead(A0); | ||
+ | </ | ||
+ | |||
+ | |||
+ | 为了让引脚读取的电压变化为0-1023,你需要设置另一个浮点型的数据变量来做数学运算,5除以1024的值再乘以sensorValue。 | ||
+ | |||
+ | <code cpp> | ||
+ | float voltage= sensorValue * (5.0 / 1024.0); | ||
+ | </ | ||
+ | |||
+ | |||
+ | 输出到串口监视器 | ||
+ | |||
+ | <code cpp> | ||
+ | Serial.println(voltage) | ||
+ | </ | ||
+ | |||
+ | |||
+ | 现在,打开串口监视器后你就可以看到一个稳定的、范围在0-5的数据,改变电位器,数据会跟着改变,对应的是A0口的电压。 | ||
+ | |||
+ | <code cpp>/* | ||
+ | 读取A0口的模拟输入,转换为电压,显示在串口监视器上 | ||
+ | */ | ||
+ | void setup() { | ||
+ | // | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // | ||
+ | |||
+ | int sensorValue = analogRead(A0); | ||
+ | // 转换为电压 | ||
+ | float voltage = sensorValue * (5.0 / 1024.0); | ||
+ | // 串口显示 | ||
+ | Serial.println(voltage); | ||
+ | }</ | ||
+ | </ |