用户工具

站点工具


learing:examples:analogreadserial

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
zh:learing:examples:analogreadserial [2015/12/28 04:29] 弘毅learing:examples:analogreadserial [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== Analog Read Serial(读取模拟口输入) ======
  
 +<WRAP left round info 65%>
 +这个例子用电位器演示怎样读取物理世界的模拟输入。
 +</WRAP>
 +
 +<WRAP left round box 100%>
 +===== ALPHA MEGA328-U核心 =====
 +==== 硬件 ====
 +  * [[ocrobot:alpha:parallelexpansion:index|ALPHA 并行扩展板]]
 +  * [[ocrobot:alpha:mega328-u:main|ALPHA MEGA328-U]]
 +  * [[ocrobot:alpha:potentiometer:main|ALPHA 电位器模块]]
 +==== 搭建电路 ====
 +
 +  - ALPHA MEGA328-U模块插入并行扩展版1号槽位。
 +  - ALPHA 微动开关模块插入并行扩展板2号槽位。
 +  - USB线连接计算机与ALPHA MEGA328-U。
 +<WRAP left round important 100%>
 +
 +
 +<WRAP group>
 +<WRAP half column 100px>
 +{{:learing:examples:dio-switch-x04-1-100.png?nolink|}}
 +</WRAP>
 +
 +<WRAP half column 200px>
 +\\ ALPHA 电位器模块中的拨码开关,请确保1处于ON位置。
 +</WRAP>
 +</WRAP>
 +
 +</WRAP>
 +
 +==== 代码 ====
 +<code cpp>
 +/*
 +  AnalogReadSerial
 +  读取A0口的模拟输入,并显示在串口监视器
 + */
 +
 +void setup() {
 +  // 初始化串口通信速率为9600 :
 +  Serial.begin(9600);
 +}
 +
 +void loop() {
 +  // 读取A0口输入:
 +  int sensorValue = analogRead(A0);
 +  // 打印:
 +  Serial.println(sensorValue,DEC);
 +  delay(1);        // 延时1毫秒
 +}
 +
 +</code>
 +
 +<WRAP left round tip 100%>
 +这个例子中我们使用了一个新函数:[[reference:language:analogread|analogRead()]]该函数用来从指定的模拟引脚读取数据,我们把这种功能称作ADC或者模数转换。
 +
 +通过调节电位器的旋钮,你可以改变任意一端到中间脚的阻值,这样就改变了中间脚的电压,当中间脚和连接5V脚的阻值为零的时候,中间脚的电压近似于5V,反过来,电压为0,这些电压就是输入到模拟口的电压。
 +
 +ALPHA MEGA328-U自带的ADC(模数转换器)可以读取电压的改变,将它转换为0-1023的数字(10位精度)。当旋钮一直往一个方向拧,引脚上电压就是0,也就是输入值为0。当旋钮一直往另外一个方向拧,引脚上电压就是5v,也就是输入值为1023。在这之间有相应的电压输入到模拟口,analogRead() 返回一个介于0和1023之间的数值。
 +</WRAP>
 +
 +
 +</WRAP>
 +
 +<WRAP left round box 100%>
 +===== ALPHA 8F328D-U核心 =====
 +==== 硬件 ====
 +
 +==== 搭建电路 ====
 +
 +==== 代码 ====
 +</WRAP>
 +
 +
 +
 +<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);
 +</code>
 +
 +
 +然后在主循环中,设置一个变量来储存电位计的阻值(0-1023,最好为整型)
 +
 +<code cpp>
 +int sensorValue = analogRead(A0);
 +</code>
 +
 +
 +最后打印这个十进制数值到串口监视器中
 +
 +<code cpp>
 +Serial.println(sensorValue, DEC)
 +</code>
 +
 +
 +现在,当你打开串口监视器后,你可以看到稳定的0-1023的数据,每当转动旋钮,数据会立刻变动。
 +
 +<code cpp>
 +/*
 +  AnalogReadSerial
 + 读取0口的模拟输入,并显示在串口监视器
 +  
 + 连接电位器中间的线到arduino的A0,外面的两个脚接到arduino的+5v电源和gnd
 +  
 + */
 +
 +void setup() {
 +  // 初始化串口通信9600 :
 +  Serial.begin(9600);
 +}
 +
 +
 +void loop() {
 +  // 读取A0口输入:
 +  int sensorValue = analogRead(A0);
 +  // 打印:
 +  Serial.println(sensorValue,DEC);
 +  delay(1);        // 延时1毫秒
 +}
 +
 +</code>
 +</WRAP>