【Arduino官方教程第一辑】示例程序 3-7 信号平滑
来源:互联网 发布:2014网络歌曲大全 编辑:程序博客网 时间:2024/05/29 19:22
信号平滑
本例中程序不断的读取模拟信号值,计算平均值,并且将平均值输出到电脑。本例所展示的方法能够平滑飘忽不定或忽上忽下的模拟信号。例子中也展示了使用数组存储数据的方法。
完成本例所需的硬件设备
- Arduino板或Genuino板
- 10kΩ电位器
- 连接线
电路搭建
将电位器两侧的引脚分别连接到5V和GND,将中间引脚连接到A0。
原理图
例程代码
下列代码按照次序存储10次读取值到数组,将这十个值求和,并且求取平均数,得到的平均数会起到平滑作用。由于计算平均值的时刻是每次添加新的传感器值时(每增加一个就计算一次)。因此,每次代码执行的时间都是相同的。
你可以增加数组的容量,来达到更好的平滑。
/* 信号平滑 不断读取模拟信号值、求取平均值后输出到电脑。将10次数据存储到数组并且不断计算平均数。 电路连接: * 模拟信号传感器(电位器即可)连接到A0 代码是公开的.*/// 保存的数据个数越多,平滑效果就越好,不过每次计算时间就越长。//注意:应该使用常量来定义数组容量,而非变量// 我们且将元素个数限制为10const int numReadings = 10;int readings[numReadings]; // 存储数组int readIndex = 0; // 当前读到的位置(数组下标)int total = 0; // 和int average = 0; // 平均值int inputPin = A0;void setup() { // 初始化和电脑的串口连接: Serial.begin(9600); // 初始化数组,用0填充: for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; }}void loop() { // 总和扣除上次的值: total = total - readings[readIndex]; // 从传感器读新值: readings[readIndex] = analogRead(inputPin); // 将新值加到总和: total = total + readings[readIndex]; // 下表加一: readIndex = readIndex + 1; // 如果在数组的最后 if (readIndex >= numReadings) { // 从头开始: readIndex = 0; } // 计算平均值: average = total / numReadings; // 作为ASCII字符传到电脑 Serial.println(average); delay(1); // 为稳定,延迟1毫秒。}
相关资料
array
if
for
serial
模拟信号与串口: 从模拟信号输入引脚读取一个值,然后用这个值控制LED小灯
模拟信号输入: 使用电位器来控制LED的闪烁。
模拟信号输出[Mega]: 使用Arduino Mega板让12个LED一个接一个亮度逐渐减弱。
模拟信号的校准: 设置传感器输出模拟信号的最大、最小值来达到预期效果。
LED亮度渐隐:使用脉宽引脚(PWM pin)来让一个LED的亮度渐弱。
信号平滑:让多个模拟引脚的输入值变得更加均匀平滑。
更新进程
日期 日志 译者 2016年5月11日 创建并翻译文档 唐家勋
译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
0 0
- 【Arduino官方教程第一辑】示例程序 3-7 信号平滑
- 【Arduino官方教程第一辑】示例程序 3-3 模拟信号输出[Mega]
- 【Arduino官方教程第一辑】示例程序 3-1 模拟信号与串口
- 【Arduino官方教程第一辑】示例程序 3-2 模拟信号输入
- 【Arduino官方教程第一辑】示例程序 3-5 模拟信号的校准
- 【Arduino官方教程第一辑】示例程序 1-1 读取模拟信号、串口操作
- 【Arduino官方教程第一辑】示例程序-目录
- 【Arduino官方教程第一辑】示例程序 2-2 按键
- 【Arduino官方教程第一辑】示例程序 4-2 调光器
- 【Arduino官方教程第一辑】示例程序 5-1 数组
- 【Arduino官方教程第一辑】示例程序 2-7 使用tone()函数弹奏一段小曲
- 【Arduino官方教程第一辑】示例程序 4-7 读取ASCII字符串
- 【Arduino官方教程第一辑】示例程序 1-3 点亮LED
- 【Arduino官方教程第一辑】示例程序 2-3 按键去抖
- 【Arduino官方教程第一辑】示例程序 3-6 LED亮度渐隐
- 【Arduino官方教程第一辑】示例程序 4-3 数据图表
- 【Arduino官方教程第一辑】示例程序 5-3 If条件判断
- 【Arduino官方教程第一辑】示例程序 6-3 Memsic2125加速度计
- 猜数游戏,产生一个随机数
- Java中的:Date类、Math类
- html5-Adidas图标绘制
- 连续子数组的最大和
- 求n的阶乘以及前n个数的阶乘和
- 【Arduino官方教程第一辑】示例程序 3-7 信号平滑
- 将visio的图片插入latex(png格式转换成eps格式图片)
- SQL基础知识
- relocation R_X86_64_32 against XXXXX can not be used when making a shared object;recompile with -fPI
- 蓝桥杯 BEGIN_01 入门训练 A+B问题
- 关于Android studio打包发布,以及Android签名的获取
- static extern volatile
- ubuntu 安装adb和fastboot
- Linux C下链队列的实现