这里会显示出您选择的修订版和当前版本之间的差别。
前一修订版 | |||
— | learing:examples:analogreadserial [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Analog Read Serial(读取模拟口输入) ====== | ||
+ | <WRAP left round info 65%> | ||
+ | 这个例子用电位器演示怎样读取物理世界的模拟输入。 | ||
+ | </ | ||
+ | |||
+ | <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> | ||
+ | /* | ||
+ | AnalogReadSerial | ||
+ | 读取A0口的模拟输入,并显示在串口监视器 | ||
+ | */ | ||
+ | |||
+ | void setup() { | ||
+ | // 初始化串口通信速率为9600 : | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // 读取A0口输入: | ||
+ | int sensorValue = analogRead(A0); | ||
+ | // 打印: | ||
+ | Serial.println(sensorValue, | ||
+ | delay(1); | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP left round tip 100%> | ||
+ | 这个例子中我们使用了一个新函数:[[reference: | ||
+ | |||
+ | 通过调节电位器的旋钮,你可以改变任意一端到中间脚的阻值,这样就改变了中间脚的电压,当中间脚和连接5V脚的阻值为零的时候,中间脚的电压近似于5V,反过来,电压为0,这些电压就是输入到模拟口的电压。 | ||
+ | |||
+ | ALPHA MEGA328-U自带的ADC(模数转换器)可以读取电压的改变,将它转换为0-1023的数字(10位精度)。当旋钮一直往一个方向拧,引脚上电压就是0,也就是输入值为0。当旋钮一直往另外一个方向拧,引脚上电压就是5v,也就是输入值为1023。在这之间有相应的电压输入到模拟口,analogRead() 返回一个介于0和1023之间的数值。 | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP left round box 100%> | ||
+ | ===== ALPHA 8F328D-U核心 ===== | ||
+ | ==== 硬件 ==== | ||
+ | |||
+ | ==== 搭建电路 ==== | ||
+ | |||
+ | ==== 代码 ==== | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | <WRAP left round box 100%> | ||
+ | ===== MangoII ===== | ||
+ | |||
+ | ==== 硬件要求 ==== | ||
+ | |||
+ | * OCROBOT控制器 | ||
+ | * 10K电阻 | ||
+ | * 电位器 | ||
+ | * 导线 | ||
+ | |||
+ | 连接电位器的三个脚到OCROBOT控制器,第一根连接到GND,第二根连接到+3V3或者+5V(要根据系统电压选择,不可以超过系统电压),中间的第三根线连接到A0口。 | ||
+ | |||
+ | 通过调节电位器的旋钮,你可以改变任意一端到中间脚的阻值,这样就改变了中间脚的电压,当中间脚和连接5V脚的阻值为零的时候,中间脚的电压近似于5V,反过来,电压为0,这些电压就是你读到的作为输入的模拟口的值。 | ||
+ | |||
+ | OCROBOT控制器自带的ADC(模数转换器)可以读取电压的改变,将它转换为0-1023的数字(10位精度)。当旋钮一直往一个方向拧,引脚上电压就是0,也就是输入值为0。当旋钮一直往另外一个方向拧,引脚上电压就是5v,也就是输入值为1023。在这之间,analogRead() 返回一个介于0和1023的数值,相应的电压就加在了引脚。 | ||
+ | |||
+ | |||
+ | |||
+ | ==== 代码 ==== | ||
+ | |||
+ | |||
+ | |||
+ | 下面这个程序中,你只需要设置串口通信为9600比特每秒,命令如下 | ||
+ | |||
+ | <code cpp> | ||
+ | Serial.begin(9600); | ||
+ | </ | ||
+ | |||
+ | |||
+ | 然后在主循环中,设置一个变量来储存电位计的阻值(0-1023,最好为整型) | ||
+ | |||
+ | <code cpp> | ||
+ | int sensorValue = analogRead(A0); | ||
+ | </ | ||
+ | |||
+ | |||
+ | 最后打印这个十进制数值到串口监视器中 | ||
+ | |||
+ | <code cpp> | ||
+ | Serial.println(sensorValue, | ||
+ | </ | ||
+ | |||
+ | |||
+ | 现在,当你打开串口监视器后,你可以看到稳定的0-1023的数据,每当转动旋钮,数据会立刻变动。 | ||
+ | |||
+ | <code cpp> | ||
+ | /* | ||
+ | AnalogReadSerial | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | */ | ||
+ | |||
+ | void setup() { | ||
+ | // 初始化串口通信9600 : | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | |||
+ | void loop() { | ||
+ | // 读取A0口输入: | ||
+ | int sensorValue = analogRead(A0); | ||
+ | // 打印: | ||
+ | Serial.println(sensorValue, | ||
+ | delay(1); | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | </ |