• 模拟信号:Arduino中的模拟信号就是0v~5v的连续的电压值
  • 数字信号:Arduino中的数字信号就是高电平(5V)或者低电平(0V),是两个离散的值

模拟信号->数字信号:ADC(模数转换器)

  ADC是用于将模拟信号转换为数字信号的电路。将输入的模拟信号通过ADC转换为数字信号,处理器才能对其进行处理。

  这里讲的模拟输入是指0~5v的电压值。在Arduino上,ADC具有10位分辨率,这意味着它可以通过1,024个数字表示模拟电压。相当于将连续的电压值0~5v映射到离散的数值0~1023。将0 ~ 5V的电压分成1024份(2^10),算出来约为4.882mV的测量精度。即:0~4.882mV之间的电压值映射到数字0,4.883mV~9.764mV之间的电压值映射到数字1......

  这里的转换关系如下:

  数字i对应的模拟电压区间为:

  

  如果用区间的中位数来代表数字i对应的模拟电压:

  

模拟输入:analogRead(pin)

- 用analogRead()读取到的输入值就是0~1023之间的数值

- pin = 0~5 / A0~A5

模拟输出:analogWrite(pin, outputVal)

- pin = 3,5,6,9,10,11(PWM引脚)

- outputVal的取值范围:0~255(对应0V~5V)

  这里的映射关系比较多,用一个图示说明一下:

  

  这种映射关系可以方便地借助map()函数实现:

map(value, fromLow, fromHigh, toLow, toHigh):

  - value : 要处理的数值,在这里就是指模拟输入端读的数值

- fromLow, fromHigh : 输入的上下限

- toLow, toHigh : 想要映射到的数值范围的上下限

- 这里的fromLow和fromHigh,toLow和toHigh没有明确的大小关系。map函数做的只是得到一个把fromLow映射到toLow,fromHigh映射到toHigh的线性映射关系,不在乎toLow和toHigh哪个大哪个小。

- 返回值:根据得到的线性映射关系将value映射到的那个值

  值得注意的是:map()函数并没有限制value的大小必须在fromLow和fromHigh之间,它只是根据得到的线性映射关系来输出一个相对应的值。因此使用map()的时候可能会借助constrain()函数来限制输出值的范围:

constrain(value, min, max) :

- value < min : return min

- value > max : return max

- min <= value <= max : return value

【Arduino学习笔记07】模拟信号的输入与输出 analogRead() analogWrite() map() constrain()的更多相关文章

  1. Spring MVC 学习笔记 json格式的输入和输出

    Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用 <!-- json --> <dep ...

  2. Python学习笔记(一)——输入与输出

    输出:——print() Python中的输出使用print()完成 >>> 在屏幕中输出Hello World >>> print('Hello World') ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析

    机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析 关键字:Apriori.关联规则挖掘.频繁项集作者:米仓山下时间:2018 ...

  4. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  5. Windows phone 8 学习笔记(1) 触控输入

    原文:Windows phone 8 学习笔记(1) 触控输入 Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此 ...

  6. 【Visual C++】游戏编程学习笔记之八:鼠标输入消息(小demo)

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...

  7. 学习笔记 07 --- JUC集合

    学习笔记 07 --- JUC集合 在讲JUC集合之前我们先总结一下Java的集合框架,主要包含Collection集合和Map类.Collection集合又能够划分为LIst和Set. 1. Lis ...

  8. matlab学习笔记5--低级文件输入输出函数

    一起来学matlab-matlab学习笔记5 低级文件输入输出函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...

  9. Arduino学习笔记⑤ 模拟IO实验

    1.前言     还记得前几个我们都是在讲解数字IO,而其实我们生活中大多数信号都是模拟信号,如声音以及温度变化.在Arduino中,常用0~5v的电压来表示模拟信号. 1.1 模拟输入功能      ...

随机推荐

  1. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) B. Repainting Street (枚举)

    题意:有\(n\)栋房子,每栋房子都有自己的颜色\(c_i\),你每次可以对连续的长度为\(k\)的区间改变任何房子的颜色,问最少多少次可以使得所有房子颜色相同. 题解:因为只有\(100\)中颜色, ...

  2. 卸载vue2.9.6版本,安装新版本

    1.检查vue安装目录(cmd中输入) where vue 2.删除目录中的关于vue的文件(可以将文件按时间排序,找到vue相关的文件删除) 3.检查vue是否还能找到 4.安装新版本的vue np ...

  3. 模板 Dijkstra+链式前向星+堆优化(非原创)

    我们首先来看一下什么是前向星.   前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和 ...

  4. Leetcode(23)-合并K个排序链表

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: 1-&g ...

  5. 2019牛客多校第二场E MAZE(线段树 + 矩阵)题解

    题意: n * m的矩阵,为0表示可以走,1不可以走.规定每走一步只能向下.向左.向右走.现给定两种操作: 一.1 x y表示翻转坐标(x,y)的0.1. 二.2 x y表示从(1,x)走到(n,y) ...

  6. 洛谷p2216 多次单调队列,扫描矩阵中的最大值减去最小值最的固定大小子矩阵

    #include <iostream> #include <cstdio> #include <cstring> using namespace std; int ...

  7. React & Special Props Warning

    React & Special Props Warning key & ref demo index.js:1 Warning: Comment: key is not a prop. ...

  8. 1+X 证书制度

    1+X 证书制度 教育部职业技术教育 http://www.cvae.com.cn/zgzcw/tzgg/202001/c0ddd6c87e6c42839f8cc3e09a2dce89.shtml 2 ...

  9. WiFi 测速

    WiFi 测速 shit 联通 20M => 电信 20M ? https://zhuanlan.zhihu.com/p/86140645 shit 房东 中国电信网络测速 50M http:/ ...

  10. write a node cli tools, step by step

    write a node cli tools, step by step how to write a node cli tools node cli tools, step by step, nod ...