用户工具

站点工具


learing:examples:analoginoutserial

Analog In, Out Serial(模拟输入输出)

这个例子展示了读取模拟脚输入,映射结果到0-255的范围,把读取结果以PWM输出来点亮LED。

ALPHA MEGA328-U核心

硬件

搭建电路

  1. ALPHA MEGA328-U模块插入并行扩展板1号槽位。
  2. ALPHA 11 LED模块插入并行扩展版1号槽位,堆叠于MEGA328-U上。
  3. ALPHA 电位器模块插入并行扩展版2号槽位。
  4. USB线连接计算机与ALPHA MEGA328-U。

代码

/*
 读取模拟输入,映射结果到0-255,用映射值通过PWM点亮LED,显示结果到串口监视器上。
 */
 
 
// 设置引脚:
const int analogInPin = A0;  
const int analogOutPin = 9; 
 
int sensorValue = 0;        // 电位器值
int outputValue = 0;        // PWM模拟输出值
 
void setup() {
  // 初始化串口通讯为9600波特率
  Serial.begin(9600); 
}
 
void loop() {
  // 读取模拟输入
  sensorValue = analogRead(analogInPin);            
  // 映射
  outputValue = map(sensorValue, 0, 1023, 0, 255);  
  // 输出:
  analogWrite(analogOutPin, outputValue);           
 
  // 显示到串口
  Serial.print("sensor = " );                       
  Serial.print(sensorValue);      
  Serial.print("\t output = ");      
  Serial.println(outputValue);   
 
  // 等待两毫秒秒让模数转换器稳定
  delay(2);                     
}

ALPHA 8F328D-U核心

硬件

搭建电路

代码

MangoII

硬件要求

OCROBOT控制器
电位器
LED
220欧姆电阻

连接电位器到控制器的5V,电位器中间脚接到A0口,电位器剩下的一个引脚连接到GND。连接220欧姆限流电阻到数字脚9,串联一个LED。LED的长脚应该从电阻连接到输出引脚,短的那一个引脚连接到GND。

原理图

代码

下面的程序中,声明引脚号的分配,变量,模拟值,输出值,然后就是串口通信了。

接下来,在主循环代码中,sensorvalue用来存储电位器的模拟值,因为模拟值是0-1023之间,analogWrite值只能为0-255,电位器出来的数据要来点亮LED就必须按比例缩小。

为了缩小这个值,我们用到map()函数来映射

outputValue = map(sensorValue, 0, 1023, 0, 255);

outputValue是分配来存储映射后的电位器出来的值。map()函数有五个量,需要映射的值,数据上限和下限,映射之后的最大值和最小值。这里,传感器的值被从原始的0-1023映射到0-255

映射出来的值就被用来输出成PWM来点亮LED,这个值随电位器的旋钮而改变。最后,原始值和映射值都以稳定的数据流被发到串口监视器。

/*
 读取模拟输入,映射结果到0-255,用映射值通过PWM点亮LED,显示结果到串口监视器上。
 */
 
 
// 设置引脚:
const int analogInPin = A0;  
const int analogOutPin = 9; 
 
int sensorValue = 0;        // 电位器值
int outputValue = 0;        // PWM模拟输出值
 
void setup() {
  // 初始化串口通讯为9600波特率
  Serial.begin(9600); 
}
 
void loop() {
  // 读取模拟输入
  sensorValue = analogRead(analogInPin);            
  // 映射
  outputValue = map(sensorValue, 0, 1023, 0, 255);  
  // 输出:
  analogWrite(analogOutPin, outputValue);           
 
  // 显示到串口
  Serial.print("sensor = " );                       
  Serial.print(sensorValue);      
  Serial.print("\t output = ");      
  Serial.println(outputValue);   
 
  // 等待两毫秒秒让模数转换器稳定
  delay(2);                     
}
learing/examples/analoginoutserial.txt · 最后更改: 2017/10/05 03:36 由 弘毅