原文地址:https://www.jianshu.com/p/839e8f58335c

    最近接触到一款入门级嵌入式产品------ Arduino,非常容易上手且很有趣,可以很方便的搭建出想要的一些自动化小玩意儿,但是想要用来做工业化产品还是差得远。首先讲解Arduino的面板构成,下面这张图就是Arduino UNO(读音:阿杜伊诺 乌诺),这是意大利人的产品所以发音也就不那么像英语发音了。其实Arduino是一个系列产品,包含很多种不同样式的板子,但是其中的标准版就是这款UNO,也就是说它的配置什么的不高不低刚刚好。其他版本有的计算能力更强,有的尺寸更小,各个款式不一而同看你需要选择了。

     1)14个数字接口:数字接口从图上可以看到总共有14个(0~13号),0号和1号口属于串口通信用的,一般我们不去占用;从2号口到13号口是我们可随意使用的数字接口数字接口可以读取数字信号,也可以输出数字信号,而在2到13号口中带有“~”符号的接口代表它不仅可以输出高电平和低电平信号,也可以输出调制的模拟信号,不带“~”符号的接口就只能输出5V高电平或者0V低电平(这里不深究高低电平的细节,因为事实上对于TTL型的接口高低电平并不严格等于5V和0V,而CMOS型的高低电平则是5V和0V,Arduino上的数字引脚属于TTL型所以严格的讲它们输出的高低电平是有一个误差范围的只要在这个误差范围之内Arduino都认可而不会误判)。输出高电平和低电平很好理解,你可以理解为只能输出5V和0V。这里需要讲解一下的是什么叫“调制模拟信号”,调制模拟信号就是通过在一段时间内来回切换高低电平从而控制这段时间内高低电平出现的时间比例,高电平出现的时间比例越多那么输出电压就越接近5V高电平,低电平出现的时间比例越多输出电压就越接近0V低电平。而这个所谓的时间比例就是所谓的“占空比”。如图2所示,0%的占空比就意味着在一段时间内全是低电平输出,这个时候输出当然就是0V;而100%的占空比就是说这段时间内全是高电平输出,输出当然就是5V;而50%占空比意味着这段时间内一半时间是高电平一半时间是低电平,由于高电平的出现时间占到了50%,所以叫50%占空比。那么这个时候输出是多少V呢?我们高中学过一个概念叫等效值,我们说占空比50%的时候输出的电压就是它的等效电压,没记错的话应该是二分之一,为2.5V(不明白的同学回顾一下等效电压或者等效电流,这里就不讲了,属于基本数学问题,不过其实你忘了也不影响你理解Arduino,所以无所谓了)。也就是说占空比50%的一段信号包含的能量等于在同样时间段内不间断输出2.5V电压所包含的能量,所以你看多妙,通过这种方法我们只通过输出5V和0V就可以得到其他值的电压了。

     有的同学会问:那是不是意味着用Arduino可以得到0V到5V之间任意一个电压值呢?其实答案是对于Arduino UNO而言是不能的,你只能获得0V到5V之间255个等分点上的电压值。为啥?看图2,我们可以看到图2中把0~100%分成了6份,分别是0%,10%,25%,50%,80%,100%,那我们当然可以比图2分的更细,50份都行,也就是每隔2%我设置一份,这样为了方便点名我就需要一个计数器来计数,目的是给不同占空比命名,如果分了50份那就需要一个能存储50个数字的计数器,然后计数器记1代表2%占空比,计数器记2代表4%占空比,以此类推一直到计数器记50代表100%占空比,这里的1,2,50其实就是占空比2%,4%和100% 的名字,以后只要你告诉单片机说给我运行1号占空比,那么就会自动设置2%的占空比。So far so good, 不过现实中Arduino用了一个8位的二进制空间来充当这个计数器,见图3(8位就是8个bit,计算机最小计数单位,8个bit是一个byte,一个汉字占用两个byte),这个计数器最多可以记多少数呢?00000001,00000010,00000011…如此下去总共27+26+…2^0=255个,于是乎0%到100%占空比之间可以分出总共255份,所以理论上Arduino可以模拟0V到5V之间的255等份的电压值。所以你看到,要想约精确地得到0V到5V之间的值,就需要用越大的空间来计数。好了,数字输入输出讲完了,接下来讲模拟接口。


     2)6个模拟接口:Arduino下方A0,A1…,A5这几个带A的接口就是模拟接口。需要点出一下的是模拟接口只能读取不能输出模拟量(其实也可以输出,不过只能输出5V和0V,并且模拟接口输出的是CMOS信号而非数字接口那种TTL信号),总之呢我们基本上是用模拟接口接收传感器信号就对了,模拟接口是否有其余的功能目前我也还没用到。好,大家肯定会问一个模拟信号是怎么通过模拟接口传入单片机的呢?单片机只认0和1这种数字信号,它怎么认得模拟信号?其实这里面用的是一个“映射”的方式来实现模数转换的。具体的模数转换电路我也不懂不过这不妨碍我们去理解它的工作方式。记住一句话:在学习过程中不要过于计较背后的硬件原理,而要把理解力专注在硬件的工作方式上,这一点很重要不然会学的很痛苦且进入死胡同。这个模数转换的工作方式其实就和前面的数字接口里讲到的“计数器”差不多,不同的是模拟接口里面的模数转换器用的是一个10位二进制空间,如图4所示。所以按照二进制的计算方法我们可以知道这个10位二进制空间总共可以计量29+28+…+21+20=1023个数字.按照十进制的表述就是说我们总共可以用这个计数器获得0,1,2…,1023这些个数字标签,接下来需要做的就是把这些数字标签一一对应上外部传入的模拟信号值,这就叫映射了。例如,我们输入一个5V的电平,那么模数转换器会自动把0对应0V,1023对应5V,然后我们可以算出5V/1023=0.0048V=4.8mV,所以1对应4.8mV,2对应9.6mV,以此类推一直到5V。可见这里面的分辨率是4.8mV,也就是说我们通过这种方法可以辨认出0V到5V之间的电平,例如2.5V就会对应到512这个数字上,然后将512这个数字传入单片机,单片机就知道原来输入了一个2.5V电压。此外还需要讲一点,Arduino模拟接口可输入的电平最高就是5V,再高就会烧坏板子,所以在开发过程中需要确认传感器传入的电平高低,太高了就要降压。

    好了,模拟引脚和数字引脚全讲完了,第一部分最重要的内容也结束了,有人问我看了半天大概也明白了说的内容,可有啥用呢?为啥模拟引脚和数字引脚最重要?因为理论上你已经可以搭建系统了。比如你可以做一个可控亮度的LED小灯。如图5图6,你可以通过调节电位器来变换LED灯的亮度。下一期我会以此为例更进一步讲解,不过在此之前第一部分还没结束,剩下的几个Arduino UNO的结构我会快速介绍一下。

    3)USB接口:有两个功能 a. 用来给Arduino供电 b. 和电脑串口通信。串口通信是一个非常重要的内容后面会介绍。

    4)外部电源接口:也是用来给Arduino供电的,和USB的区别在于你可以把电池通过这个接口插上供电。不过记得电压得是5V。

    5)工作状态灯:如果L和On两个灯亮,则说明Arduino在工作。

    6)TX,RX灯:这两个灯和串口通信有关,TX闪说明Arduino正通过串口通信发送信息,RX闪说明Arduino正通过串口通信接受信息。

Arduino 解读系列(1)数字接口/模拟接口相关推荐

  1. Ariduino入门笔记——1. Arduino 默认函数(数字接口/模拟接口)

    说实话,对于我这种朝三暮四,动不动就要开新坑的人来说,肯定很多人都烦死了.没办法,因为脑袋里的猴子有点多,一直做一件事的话,我反而很容易就弃坑.也就是所谓新鲜感,隔一段时间回过头来看看草稿箱里有哪些稿 ...

  2. android蓝牙通信_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

  3. android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

  4. 计算机 显卡 淘汰,早该淘汰的VGA模拟接口:新显卡不再支持

    [PConline 新闻]科技改变生活,新的科学技术终会把旧的科学技术学代替掉.就好像哲学说的那样,新事物必然代替旧事物那样,如今陪伴我们多年的VGA模拟信号接口也到了它要被取代的时候了. 在上周的N ...

  5. 四针角oled屏连接arduino_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com通过构建实际应用程序来掌 ...

  6. 土微数字隔离器和接口类芯片可完美替代进口品牌TI和ADI

    国产品牌川土微电子专注于数字隔离器和接口类芯片,可以完美替代进口品牌TI和ADI 双通道隔离系列: 川土产品:CA-IS3720LS 替代进口型号:ISO7720FD   ISO7320FCD ISO ...

  7. 《C#零基础入门之百识百例》(五十八)接口 -- 模拟银行存储

    C#零基础入门 面向对象 -- 接口 -- 模拟银行存储 前言 一,接口 1.1 概念定义 1.2 遵守规则 二,接口的实现 2.1 接口的实现示例 2.2 接口的实现和继承 三,实例练习 -- 模拟 ...

  8. 【精华贴】数字音频接口详解-I2S接口PCM/TDM接口PDM接口

    一.概述 数字音频接口DAI,即Digital Audio Interfaces,顾名思义,DAI表示在板级或板间传输数字音频信号的方式.相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DA ...

  9. Java开发中使用模拟接口moco响应中文时乱码

    场景 在开发中需要依赖一些接口,比如需要请求一个返回Json数据的接口,但是返回Json数据的接口要么是没搭建,要么是交互比较复杂. 此时,就可以使用moco来模拟接口返回接口数据,以便开发和测试工作 ...

最新文章

  1. P2216 理想的正方形 单调队列 (二维)
  2. 紫书搜索 习题7-8 UVA - 12107 Digit Puzzle IDA*迭代加深搜索
  3. spring入门:beans.xml不提示、别名、创建对象的三种方式
  4. [集训队作业2018] 复读机(生成函数,单位根反演)
  5. 机器学习常见基本概念笔记
  6. python爬虫反爬对抗_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...
  7. 30款顶级CSS工具及应用-CSDN.NET
  8. php mysql 查询缓存_mysql 查询缓存使用详解
  9. L2-008 最长对称字串 以下标i展开
  10. 在Windows 10上安装TensorFlow 2.2.0 RC4版
  11. 计算机组成原理期末考试题目及答案,计算机组成原理期末考试试题附标准答案.doc...
  12. python 数组排序索引_python对数组进行排序,并输出排序后对应的索引值方式
  13. 11G新特性 -- ASM Fast Mirror Resync
  14. python数据爬虫代码_python如何示例爬虫代码
  15. 计算机安装软件没有管理员权限设置,实用技巧:如何在win10中安装没有管理员权限的软件...
  16. 基于javaweb+springboot的学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
  17. 7 在使用计算机时要注意防 .,Windows7系统使用移动硬盘的七大注意事项
  18. 深入理解计算机系统03——程序的机器级表示
  19. [Luogu] 贪婪大陆
  20. ubuntu 拨号上网(PPPOE)

热门文章

  1. 我的Ubuntu装机配置
  2. 多视图CAD检测系统乳腺X线摄影基于案例的检测性能优化
  3. Java == equals() hashCoed()的区别
  4. Spring 纯注解定时任务
  5. STM32硬件看门狗的使用
  6. View类的setVisibility()
  7. Android ImageView.setVisibility(GONE)不生效
  8. 【2021-09-15】封装、继承、多态(作业)
  9. NeurIPS 2022 | Stable Diffusion采样速度翻倍!清华提出扩散模型高效求解器
  10. w ndows10u盘发售,745元起!Windows10 U盘版提前上架 想要的来了