查看: 15211|回复: 13

[教程] 模拟I/O的使用

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2018-3-3 22:52 | 显示全部楼层 |阅读模式
    本文节选自《Arduino程序设计基础》

    在Arduino控制器中,编号前带有“A”的引脚是模拟输入引脚。Arduino可以读取这些引脚上输入的模拟值,即读取引脚上输入的电压大小。
    a.jpg


    模拟信号
    生活中,接触到的大多数信号都是模拟信号,如声音、温度的变化等。如图2-31所示,模拟信号是用连续变化的物理量表示的信息,信号随时间作连续变化。在Arduino UNO上,可以接受0~5V的模拟信号。
    111.jpg

    模拟输入引脚是带有ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。它可以将外部输入的模拟信号转换为芯片运算时可以识别的数字信号,从而实现读入模拟值的功能。
    Arduino 模拟输入功能有10位精度,即可以将0~5V的电压信号转换为0~1023的整数形式表示。
    模拟输入功能需要使用analogRead() 函数。

    参数pin是指定要读取模拟值的引脚,被指定的引脚必须是模拟输入引脚。如analogRead(A0)即是读取A0引脚上的模拟值。

    与模拟输入功能对应的是模拟输出功能,我们使用analogWrite() 函数实现这个功能。但该函数并不是输出真正意义上的模拟值,而是以一种特殊的方式来达到输出近似模拟值的效果,这种方式叫做脉冲宽度调制(PWM,Pulse Width Modulation)。
    在Arduino UNO中,提供PWM功能的引脚为3、5、6、9、10、11。

    当使用analogWrite() 函数时,指定引脚会通过高低电平的不断转换输出一个周期固定的方波,通过改变高低电平在每个周期中所占的比例(占空比),而得到近似输出不同的电压的效果(如图2-33所示)。


    需要注意的是,这里仅仅是得到了近似模拟值输出的效果,如果要输出真正的模拟值,还需要加上外围滤波电路。



    参数pin是指定要输出PWM波的引脚,参数value指定是PWM的脉冲宽度,范围为0~255。
    在analogWrite() 和analogRead() 函数内部,已经完成了引脚的初始化,因此不用在Setup() 函数中进行初始化操作。





    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2018-6-6 20:38
  • 签到天数: 104 天

    [LV.6]常住居民II

    发表于 2018-3-4 18:07 | 显示全部楼层
    没有新的东西
  • TA的每日心情
    开心
    2018-4-3 11:56
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2018-3-21 09:49 | 显示全部楼层

    人家这是基础教程
    打赏作者鼓励一下!
  • TA的每日心情

    2018-5-15 11:29
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2018-4-21 12:49 | 显示全部楼层
    学到了~~ 谢谢
  • TA的每日心情
    开心
    2019-4-2 21:37
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2018-4-22 11:21 | 显示全部楼层
    模拟IO也可以当数字IO使用吧?

    点评

    是的,DIP版的UNO R3上可以,也有例外情况,如贴片版的UNO,A6\A7只能用作模拟通信 记忆中是这样的,也可能记错,有兴趣可以看原理图  详情 回复 发表于 2018-4-22 12:14
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2018-4-22 12:14 | 显示全部楼层
    rwd330 发表于 2018-4-22 11:21
    模拟IO也可以当数字IO使用吧?

    是的,DIP版的UNO R3上可以,也有例外情况,如贴片版的UNO,A6\A7只能用作模拟通信
    记忆中是这样的,也可能记错,有兴趣可以看原理图
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    奋斗
    2018-9-11 12:50
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2018-8-27 14:24 | 显示全部楼层
    弱弱的问一句,“在Arduino UNO中,提供PWM功能的引脚为3、5、6、9、10、11。”这几个引脚到底是模拟口还是数字口·········

    点评

    带PWM功能的数字口  详情 回复 发表于 2018-8-27 20:31
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2018-8-27 20:31 | 显示全部楼层
    笨鱼还慢游 发表于 2018-8-27 14:24
    弱弱的问一句,“在Arduino UNO中,提供PWM功能的引脚为3、5、6、9、10、11。”这几个引脚到底是模拟口还是 ...

    带PWM功能的数字口
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2018-8-27 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2018-8-27 21:04 | 显示全部楼层
    那是不是说a1--a5只是作为模拟输入使用的?

    点评

    是的,教程中都有写  详情 回复 发表于 2018-8-27 21:13
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【项目】基于Arduino Nano的多功能桌面感应垃圾桶
    【项目】基于Arduino Nano
    基于Arduino Nano的多功能桌面感应垃圾桶随着大学生活不断往前迈进,宿舍桌面上的杂物
    智能物联网花盆
    智能物联网花盆
    打坏了一个费时5小时 3D打印的花盆,耗时22小时 下载:Kittenblock软件,安装、运
    呼吸灯实验
    呼吸灯实验
    本文节选自《Arduino程序设计基础》 之前的章节已经介绍了多种方法控制LED,但单是开
    为开发板 Generic ESP8266 Module 编译时出错
    为开发板 Generic ESP8266
    第一次尝试Arduino UNO软串口通信,编译一直通不过,错误信息 “开发板 generic (平
    Arduino Uno 无法上传程序
    Arduino Uno 无法上传程序
    原来可以正常使用的Arduino Uno 板子突然不能上传程序了,硬件驱动正常,TX和RX指示灯
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表