# Mixly ## Keyes Uno Plus 开发板 ### 第1小节 简单介绍Keyes Uno Plus 开发板 我们先看一下它的特写:  在我们进行DIY电子产品实验时,我们经常会用到arduino系列单片机在Arduino IDE开发环境上编程设置。Keyes Uno Plus 开发板是一款完全兼容Arduino IDE开发环境的控制板。它包含官网的 UNO R3板的所有功能,并且在 UNO R3板的基础上,我们做了一些改进,使它的功能更加强大。具体改进如下图。为了方便接线,我们还配了1根长度为1米的type-c接口的USB线。  我们再通过下面的图来了解一下这个开发板的各个接口和主要元器件。  规格参数 微控制器:ATMEGA328P-AU USB转串口芯片:CP2102 工作电压:DC 5V 外接电源: DC 6-15V(建议9V) 数字I/O引脚: 14 (D0-D13) PWM通道:6 (D3 D5 D6 D9 D10 D11) 模拟输入通道(ADC): 8(A0-A7) 每个I/O直流输出能力: 20 mA 3.3V端口输出能力: 50 mA Flash Memory: 32 KB(其中引导程序使用0.5 KB) SRAM:2 KB (ATMEGA328P-AU) EEPROM: 1 KB (ATMEGA328P-AU) 时钟速度:16MHz 板载LED引脚:D13 ### 第2小节 Keyes Uno Plus 开发板的驱动安装方法 接下来是开发板驱动的安装,这次我们安装的是Keyes Uno Plus 开发板的驱动,这个开发板的USB转串口芯片是CP2102。在ARDUINO 开发软件1.8以上的版本里就已经包含了这个芯片的驱动程序,这样我们使用起来会非常方便。一般插上USB,电脑就会识别到硬件,WINDOWS就会自动安装CP2102的驱动。  如果驱动安装不成功,或者你想手动安装驱动,请打开电脑的设备管理器 显示CP2102的驱动没有安装成功,有一个黄色的感叹号。我们双击硬件更新驱动  浏览计算机查找驱动程序,先找到我们安装或者下载的ARDUINO开发软件,  里面有个DIRVERS文件夹,打开文件夹就能看到CP210X系列芯片的驱动,  我们选择这个文件夹,然后点击确定,驱动安装成功。  这个时候再打开设备管理器,我就可以看到CP2102的驱动程序已经安装成功了,刚刚的那个黄色的感叹号不见了。  ### 第3小节 Keyes brick shield 传感器扩展板 1.概述 当我们在做DIY实验时,我们经常会利用UNO R3控制板和其他传感器/模块搭配使用。为了方便接线,我们的最新一版传感器/模块使用了间距为2.54mm防反接口。为了兼容最新一版传感器/模块接口,我们特别设计了这一款扩展板。使用时,我们只需要将扩展板堆叠在UNO R3控制板上,利用一个特定接线连接传感器/模块。接线简单方便,由于是防反接口,线序固定,将不会再出现控制板连接传感器/模块时,因线序接反,导致烧坏传感器/模块现象。 为方便接线,扩展板上接口都带有丝印。3pin接口丝印一般为G V S,其中扩展板上所有的G代表GND,V代表VCC(5V)接口,S代表接口上方的数字口/模拟口。4pin/5pin接口左面都有对应接口丝印。扩展板上两边还自带间距为2.54mm的排母接口,接线顺序和UNO Plus板的排母接口的线序一致。同时扩展板上自带一个复位按键,1个电源指示灯PWR。 为了方便将扩展板固定在其他设备,扩展板自带3个直径为3mm的定位孔大小。 2.接口说明  3.使用方法 堆叠在Keyes Uno Plus 开发板上即可使用,如下图  ### 第4小节 了解米思奇 上一节我们学习了Keyes Uno Plus 开发板的驱动安装方法,这节课我们开始学习米思奇图形化编程软件 1.Mixly简介 Mixly是一款由北京师范大学教育学部创客教育实验室傅骞教授团队基于Google的Blockly图形化编程框架开发的免费开源的图形化Arduino编程软件, Mixly中文名为米思齐,是一个非常适合创客开发的平台软件,完全支持原生态Arduino控制器的程序编辑,QDProbot二次开发了库程序,让其完美支持平台,并简化了连线加入了语音控制等有趣的控制模块,让编程更得心应手。 可以说Mixly是目前功能最丰富,操作最流畅的Arduino图形化编程软件,几乎可以替代Arduino IDE编程工具。 米思齐软件下载地址 https://pan.baidu.com/s/1Mn7TDF2QDLJYgV7oH0z2ig?pwd=keye 2.Mixly的设计理念及适合人群 2.1设计理念 (1)易用性 Mixly在设计上做到了完全绿色使用。目前Mixly支持win、ubuntu、mac。Windows用户直接从网上下载Mixly软件包,解压后即可在Windows XP及以上版本的操作系统运行(下文附有下载链接)。 (2)简单性 Mixly采用了Blockly图形化编程引擎,使用图形化的积木块代替了复杂的文本操作,为初学者的快速入门奠定了良好的基础。①用不同颜色的示意图标代表不同类型的功能块,方便用户归类区分。②在复合功能块中提供默认选项,有效减少用户的拖动次数。③在同一个界面整合软件的所有功能。④提供参考教程及代码示例。 (3)功能性 功能多样,arduino IDE能实现的功能和函数,Mixly也几乎都可以实现。支持arduino所有的官方开发板。 (4)延续性 图形化编程系统的目标绝对不是替换原有的文本编程方式,而是希望通过图形化编程更好更快地理解编程的原理和程序的思维,并为未来的文本编程打好基础。Mixly的设计理念也是如此。在软件的设计上加入了更多的可延续性内容,从而保护了用户的学习成果。具体来说,包括引入变量类型、在模块的设计上尽量保持和文本编程的一致、支持图形编程和文本编程的对照等。 (5)生态性 生态性是Mixly最重要的设计理念,也是它区别于其他Arduino图形化编程的最重要特征。为了实现可持续发展,Mixly在设计上既允许厂商开发自己的特有模块,用户需要有JavaScript编程基础才能制作这部分模块,也允许用户直接利用Mixly的图形化编程功能生成通用模块(如数码管显示、蜂鸣音播报等,用户只需会使用Mixly即可制作这部分模块)。以上两类模块均可通过“导入库”功能导入Mixly系统,从而在Mixly软件的普及中实现用户自身的价值。 2.2合适人群 从以上的设计理念,可以看出,Mixly适合中小学生来学习编程思维。也适合创客制作作品时能快速编程。当然更适合一些不想学文本编程,却想做一些智能控制小作品的大朋友们。 3.Mixly界面功能介绍 介绍面总的分为四大功能区域块。 Mixly的主界面由基本功能块区、中上的程序构建区、右上的代码区(可隐藏)、中部的系统功能区和下部的信息提示区构成。 如下图所示:  以下区域为程序功能拼接区域。将功能块从左侧块区拖入程序建构区进行拼接。该区域的右下角有个垃圾桶,可以将不用的代码拖进去删除,也可以将不用的代码直接往最左方拖拽(模块选择区),同样可以删除代码。当然,点击不用的代码后点击键盘 Delete也可将代码删除,还可以右键点击块选择删除块.  视图缩放 在垃圾桶的上方有两个图形,一个是 ⊕一个是Θ 。该图形可放大或缩小程序构建区模块 的大小。 在⊕的上方有一个 按钮,这个按钮的功能是将模块的大小恢复至标准大小,并居中.  功能切换 语言切换:在该区域的右上角,还可以切换语言显示的种类。软件支持4种语言:English、Español、中文简体、中文繁体。 撤消/重做:撤销功能是当编写代码时误删模块后,便可以点击左箭头或者直接按 Ctrl+Z 来恢复误删代码;而重做则是和 Ctrl+Z 相反。 视图切换:普通视图和高级视图来进行视图之间的切换。 文件操作区 新建:新建项目文件 打开:打开项目文件 保存:保存项目文件 另存为:另存项目文件 导出库:导出当前项目为库文件 导入库:导入第三库文件 管理库:库的删除和重命名等操作 库文件是为了方便代码分享.将一个功能集成在函数中。之后导出库文件.就可以分享给他人使用  代码区 点击代码可以对当前模块自动生成的代码进行修改,修改后如不切换回图形区,进行编译和下载,将按照修改的代码进行编译或者下载.但如果切换回图形区.代码会恢复为图形区的代码.  程序下载及串口监视 编译:将程序编译为机器执行码.编译过程和结果会在信息显示区显示 上传:编译程序并上传至主板,上传信息会在信息显示区显示. 主板选择:选择主板类型及连接的端口 串口监视:用于监视主板从串口发来的信息或者给主板发送信息.需编程.主要用于调试程序或者显示信息用. 需要注意的是在上传程序时请关闭串口监视窗口.否则会导致程序上传失败  连接测试"hello word"程序 1. 将主控板与电脑用USB线连接 2. 编写‘helloword’程序 3. 上传程序,打开监视窗口观察结果  ### 第5小节 米思奇库文件添加 我们下面的实验课程中,几乎都是用到我们提供的keyes sensor库文件,这个库文件有各种传感器,方便我们使用,所以我们需要先了解怎么导入,导出和编辑,如下图所示。  我们选择本地导入,然后找到我们要导入的库文件的文件夹keyes sensor,选择文件Keyes_sensor.xml,点击打开就完成了导入 完成导入后我们可以看到库文件出现在左边工具栏的下方:  ## 单个传感器/模块实验课程 拿到套件后,我们可以看到套件中有37款传感器/模块,有对应的Keyes Uno Plus 开发板、传感器扩展板和连接线。这里,我们将37款传感器/模块利用自带连接线,单独连接在Keyes Uno Plus 开发板和传感器扩展板。然后上传对应的测试代码,单独测试各个传感器/模块的功能。我们下面的课程是先从简单到复杂学习单个模块/传感器的原理,后面再学习一些模块/传感器的扩展应用以巩固加深我们对该套件的理解。 特别注意:实验时,模块/传感器连接线材时,必须按照资料里的接线方法及位置,电源与信息脚不能错接,否则会损坏模块/传感器。 ### 实验一 点亮LED  实验说明 在这个套件中,我们有一个Keyes DIY电子积木 白色LED模块。它的控制方法非常简单,要想点亮LED,只要让它两端有一定的电压就可以。 实验中,我们通过编程控制信号端S的高低电平,从而控制LED的亮灭。我们提供两个测试代码,分别控制LED模块上实现点亮和闪烁的效果。 实验原理 下面附了两个电路原理图,左边我们直接把LED串联一个电阻,负极接地,正极接到单片机的IO口,理论上来说当我们把信号端S输出高电平(5V),LED两端就会有电压,LED就会被点亮,那么我们为什么说这么接不合理呢?原因就是我们单片机IO口输出电流的能力有限(最大20mA),虽然输出了高电平,但是可能达不到控制LED的电流,此时LED可能比较暗。 右边的接法:控制时,GND和VCC上电后,如果信号端S为高电平,那么三极管Q1就会导通,则LED有电流流过,LED即会亮起(注意:此时电流是由VCC电源端流经LED和电阻R3到GND,而不是直接从单片机IO口输出,此时输出电流的能力就比较强),S端为低电平时三极管Q1截止,那么就没有电流流过LED,那么LED就会熄灭。也就是说,我们这里的三极管Q1相当于一个开关作用,而电阻R1,R3都是一个限流电阻,顾名思义就是限制电流的大小,以免烧坏电子元器件。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 白色LED模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码 代码1:  代码2:  代码说明 代码1说明: 1. 在米思齐软件中,只要没有单元和变量设置,就代表代码中所有设置都是循环的。 2. 我们先找到keyes sensor库下的“数字输出”模块,找到并拖出白色LED灯:,将管脚下拉选择3(当然这里我们可任意选择管脚),后面电平设置设为高不变:管脚是指模块信号端连接的接口,我们LED模块信号端连接在D3,我们可以将模块信号端S设置为高低电平。我们测试的过程中,当模块S端设为高电平(高)时,模块上LED亮起,设为低电平(低)时,模块上LED熄灭。 代码2说明: 1.代码1中我们从keyes sensor中找到并设置了。 2.从“控制”模块找到并拖出,1000为延时的毫秒数,默认1000毫秒,代表延迟1000毫秒,即1秒。 3.通过整合前面知识。我们再来看代码就清楚明了了,代码中第一条我们把模块信号端接到D3,设置为高电平,就是点亮模块上LED;第二条延迟1000毫秒,就是让模块上LED点亮1秒。同样第三条第四条代码表示让模块上LED熄灭1秒。代码默认循环,也就是控制模块上LED,循环亮1秒,灭1秒,实现闪烁效果。通过代码设置,我们可以更改模块上LED亮灭的延迟时间,从而使模块上LED实现不同的闪烁效果。 实验结果: 代码一:白色LED模块常亮 代码二:LED亮一秒,灭一秒,循环交替。  ### 实验二 交通灯模块  实验说明 我想大家都看见过交通灯,就是马路上十字路口的红绿灯。如果您开过车,我想您一定仔细观察过交通灯,如果您还没有驾驶过车,您是否仔细观察过交通灯呢?在我们这个套件中,就包含一个交通灯模块。我们经常会用红绿黄3个LED外接电路来模拟路边的红绿黄灯闪烁。因此我们特别设计了这款模块,模块上自带了红黄绿3个LED灯,我们这个实验就做一个模拟交通灯。 实验原理 前面第一课我们就学习了如何控制一个LED,由原理图容易得知,控制这个模块就好比分别控制3个独立的LED灯(我们这个灯可直接由单片机IO口驱动),给对应颜色灯高电平就亮起对应的颜色。比如,我们给信号“R”输出高电平,也就是5V,则红色LED点亮。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 交通灯模块*1|5P XH-2.54mm 黑红蓝黄绿硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 首先在keyes sensor库下的“数字输出”模块,找到并拖出红色LED灯、黄色LED灯和绿色LED灯:由接线图我们知道,绿色LED管脚接在D4,黄色LED管脚接在D3,红色LED管脚接在管脚2。,,在实验中,我们设置对应数字输出引脚高电平即点亮对应颜色的灯。 2\. 这里我们还用到了for()循环:,这个代码块位于“控制”模块下,,意思是i从1到3,(步长为1)即每次自加1,直到加到4,大于3了否则一直执行其代码块单元里面的代码,即一共执行3次里的代码。 3\. 我们还用到延时函数,分别有延时5000毫秒即5秒,和延时500毫秒,可参照实验一的代码说明。 实验结果 上传测试代码成功,上电后,模块上绿色LED亮5秒然后熄灭,黄色LED闪烁3秒然后熄灭,再然后红色LED亮5秒,然后熄灭,模块上3个LED自动模拟交通灯运行,前面我们介绍了,只要代码块不是在单元中还有除了变量声明,就会循环运行。我们可以点击“代码”就可以看到其实这部分代码是在一个循环函数“loop”中。更多详细可参照https://www.arduino.cc/reference/en/language/structure/sketch/loop/  ### 实验三 激光头传感器模块发出激光  实验说明 我们都应该经常又听说激光,激光与常见的光不同。 一方面是由于它的来源。当原子被激发,从而电子从低能级跃迁到高能级,再从高能级回落到低能级的时候,能量以特定频率的电磁波向外辐射。由于电子的能级是特定的,因而辐射出的电磁波频率是一致的。由此,一束激光只有一种特定频率的电磁波(光)。这使得激光比起普通光源,激光的单色性好。另一方面,激光发射器内部特定的结构,使得激光能够被聚集成单束光,朝着同一方向射出,亮度高,方向性好。 正是由于这些特性,激光被广泛用于对特定材料进行切割、焊接、表面处理等等。激光的能量非常高,玩具激光笔照射人眼可能导致眩光,长时间可能导致视网膜损害,我国也禁止用激光照射航行的飞机。因此,请注意不要用激光发射器对准人眼。 实验原理 激光头传感器模块主要由激光头组成,激光头由发光管芯、聚光透镜、铜可调套筒三部分组成。我们可以看到此模块电路原理图,可知该模块的控制方法与我们前面学习过的LED非常相似,都是用三极管驱动,在信号端直接输入一个高电平数字信号,传感器开始工作,输入低电平时停止工作。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 激光模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 首先在keyes sensor库下的“数字输出”模块,找到并拖出激光模块,在实验中,我们激光模块接D2,所以这里我们将管脚设置为2,设置为高时,模块上激光管发射出红色激光信号;设置为低时,模块上激光管不发射出红色激光信号。 2\. 延时函数2000毫秒,可参照实验一代码说明。 测试结果 上传测试代码成功,上电后,模块上激光管发射红色激光信号2秒,停止发射红色激光信号2秒,循环交替。  ### 实验四 按键传感器检测实验  实验说明 在这个套件中,有一个Keyes DIY电子积木 单路按键模块,它主要采用1个轻触开关,自带1个黄色按键帽。前面我们学习了怎么让我们单片机的引脚输出一个高电平或者低电平,这节实验我们就来学习怎么读取引脚是高电平(5V)还是低电平(0V)。 实验中,我们通过读取传感器上S端高低电平,判断传感器上按键是否按下;并且,我们在串口监视器上显示测试结果。 实验原理 附原理图,按键有四个引脚,其中1和3是相连的,2和4是相连的,在我们未按下按键时,13与24是断开的,信号端S读取的是被4.7K的上拉电阻R1所拉高的高电平,而当我们按下按键时,13和24连通。信号端S连接到了GND,此时读取到的电平为低电平,即按下按键,传感器信号端为低电平;松开按键时,信号端为高电平。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 单路按键模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在单元找到,将item变量名改为“button”,这里修改变量名是方便我们理解与记忆。设置button初始变量为整数,并赋值为0,。 2.初始化设置波特率为9600,波特率是串口通信传输的一个速度量,这里表示9600bit每秒。 3.同样,在我们导入的库keyes sensor下的数字输入单元找到按键模块我们这里接数字口2,所以我们将管脚设置为2。我们再将读取到D2读取到的按键值赋值给变量button。 4.找到并拉出串口模块下的打印代码块,然后将自动换行改为不换行,然后杂变量下找到我们定义的变量button,打印出来,因为前面我们将读取到的按键值赋值给了button变量。 5\. 在单元内,找到,点击进行设置,我们可以在里面任 意添加 如果否则 否则逻辑单元,如下图。  我们实验中,只需要添加一个 否则单元,设置完成后点击,完成设置。  5.代码逻辑是传感器感应到按键按下时,信号端为低电平,D2口为低电平,即button为 0。这时我们在串口监视器显示对应的数字值和字符;否则(传感器感应到按键松开时),button为1,窗口监视器显示1和另外的字符。  实验结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应数据和字符。实验中,当传感器按下按键时,button为0,串口监视器显示“Press the button”字符;松开按键时,button为1,串口监视器显示“Loosen the button”字符,如下图。   ### 实验五 电容触摸传感器检测实验  实验说明 在这个套件中,有一个Keyes DIY电子积木 电容触摸模块,它主要采用1个TTP223-BA6芯片。它是触摸检测芯片,提供一个触摸按键,功能是用可变面积的按键取代传统按键。当我们上电之后,传感器需要约0.5秒的稳定时间,此时间段内不要对键进行触摸,此时所有功能都被禁止,始终进行自校准,校准周期约为4秒。 我们在串口监视器上显示测试结果。 实验原理 当我们用手指触摸模块时,信号端S输出高电平,板载红色LED点亮,我们通过读取传感器上S端高低电平,判断传感器上按键是否按下(上一实验学习的单路按键模块刚好相反,按下为低电平)。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 电容触摸模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 我们前面学习了按键模块,知道了首先我们得先创建一个变量用来存储读取按键的值。 2\. 同样,在我们导入的库keyes sensor下的数字输入单元找到触摸传感器我们这里接数字口3,所以我们将管脚设置为3。其它设置方法和上一实验类似。在上一实验中,当检测到按键信号时,信号端为低电平,即button为0。在这一实验中,当检测到按键信号时,信号端为高电平,即button为1。  测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应数据和字符。实验中,当传感器按下按键时,板载红色LED点亮,button为1,串口监视器显示“Press the button”字符;松开按键时,板载红色LED熄灭,button为0,串口监视器显示“Loosen the button”字符,如下图。   ### 实验六 避障传感器检测障碍物  实验说明 在这个套件中,有一个Keyes DIY电子积木 避障传感器,它主要采用一对红外线发射与接收管元件。实验中,我们通过读取传感器上S端高低电平,判断是否存在障碍物;并且,我们在串口监视器上显示测试结果。 实验原理 原理就是NE555时基电路提供发射管TX发射出一定频率的红外信号,红外信号会随着传送距离的加大逐渐衰减,如果遇到障碍物,就会形成红外反射。当检测方向RX遇到反射回来的信号比较弱时,接收检测引脚输出高电平,说明障碍物比较远;当反射回来的信号比较强,接收检测引脚输出低电平,说明障碍物比较近了,接收检测引脚输出低电平,此时指示灯亮起。传感器上有两个电位器,一个用于调节发送功率,一个用于调节接收频率,通过调节2个电位器,我们可以调节它的有效距离。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 避障传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1. 首先我们还是想设置变量与初始化波特率,前面讲过我们这个实验中就不重复讲了。同理,在我们导入的库keyes sensor下的数字输入单元找到避障传感器我们这里接数字口3,所以我们将管脚设置为3。 2\. 其它设置方法和按键实验类似,这里就不多做介绍了。 特别注意 烧录好测试代码,按照接线图连接好线,上电后,我们开始调节两个电位器调节感应距 离。 1.调节发射功率调节电位器,先将电位器顺时针到尽头,然后回调一些,使传感器上 P LED介于不亮与亮之间的零界点。 2.调节接收频率调节电位器,顺时针调节时,频率增大。调节使它产生38KHz频率的方波,调节时,也观察传感器上S LED,使它介于不亮与亮之间的零界点。 实验结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应数据和字符。实验中,当传感器检测到障碍物时,item为0,串口监视器显示“There are obstacles”字符;没有检测到障碍物时,item为1,串口监视器显示“All going well”字符,如下图。   ### 实验七 巡线传感器检测黑白线  实验说明 在这个套件中,有一个Keyes DIY电子积木 单路循线传感器,它主要采用1个TCRT5000 反射型 黑白线识别传感器元件。 实验中,我们通过读取模块上S端高低电平,判断传感器检测到的物体颜色(黑白);并且,我们在串口监视器上显示测试结果。 实验原理 上个实验我们学习了避障传感器的原理,其实巡线传传感器的原理也是相同的。是利用红外线对颜色的反射率不一样,将反射信号的强弱转化成电流信号。上电时,发射二极管发射红外光,RP1 是一个电位器,我们通过调整电位器给 电压比较器LM393 的 2 脚提供一个阈值电压,这个电压值的大小可以根据实际情况来调试确定。而红外光敏二极管收到红外光的时候,会产生电流,并且随着红外光的从弱变强,电流会从小变大。当没有红外光或者说红外光很弱的时候,3 脚的电压就会接近 VCC,即信号R3电压接近VCC,如果 3 脚比 2 脚的电压高的话,通过 LM393 比较器后,接收检测引脚输出一个高电平。当随着光强变大,电流变大,3 脚的电压值等于 VCC-I\*R3,电压就会越来越小,当小到一定程度,比 2 脚的电压还小的时候,接收检测引脚就会变为低电平。当红外信号发送到黑色轨道时,黑色因为吸光能力比较强,红外信号发送出去后就会被吸收掉,反射部分很微弱。白色轨道就会把大部分红外信号反射回来。 也就是说检测到黑色或没检测到物体时,信号端为高电平;检测到白色物体时,信号端为低电平;它的检测高度为 0—3cm。我们可以通过旋转传感器上电位器,调节灵敏度,即调节检测高度。当旋转电位器,是传感器上红色 LED介于不亮与亮之间的临界点时,灵敏度最好。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 单路循线传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1. 在我们导入的库keyes sensor下的数字输入单元找到循迹传感器我们这里接数字口3,所以我们将管脚设置为3。 2\. 其它设置方法和上一实验基本相同,这里就不多做介绍了。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应数据和字符。实验中,当传感器没有检测到物体或者检测到黑色物体时,item为1,串口监视器显示“Black”字符;检测到白色物体(能够反光)时,板载红色LED亮起,item为0,串口监视器显示“White”字符,如下图。   ### 实验八 光折断计数  实验说明 这个套件中包含一个Keyes DIY电子积木 光折断模块,它主要采用1个ITR-9608光电开关。它属于对射遮断式光电开关光学开关传感器。 在这里,我们不仅与前面的课程一样只打印信号端的电平信号,而是通过代码设置,模拟出流水线上利用类似传感器,对产品进行计数。 实验原理 如原理图:当用纸片挡住传感器凹槽后,C与VCC导通,传感器信号端S为高电平,自带红色 LED熄灭;否则传感器信号端为被R2拉低为低电平,自带红色LED亮起。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 光折断模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在实验中,我们首先分别定义几个变量State,lastState和PushCounter,State用于存储当前传感器检测的信号,lastState用于保存传感器上次检测的信号,PushCounter为计数值。 实验结果 上传测试代码成功,按照接线图接好线,利用USB上电后,打开串口监视器,设置波特率为9600;串口监视器显示PushCounter数据,每次物体穿过传感器凹槽,PushCounter数据不断加1。   ### 实验九 倾斜模块的原理  实验说明 在这个套件中,有一个Keyes DIY电子积木 倾斜传感器,倾斜开关可以依据模块是否倾斜而输出不同电平信号。其内部带有一颗滚珠,因此可以监测倾斜情况。当开关高于水平位置倾斜时开关导通,低于水平位置时开关断开。倾斜模块可用于倾斜检测、报警器制作或者其他检测。 实验中我们用串口监视器打印出信号端检测到的数字电平信号。 实验原理 它的原理非常简单,附原理图,主要是利用滚珠在开关内随不同倾斜角度的发化使滚珠开关P1的引脚1和2导通或者不导通,当1和2导通时,因为1教接GND,所以信号端S为低电平,此时红色LED形成回路,将会点亮;当1和2不导通时,引脚2被4.7K的上拉电阻R1拉高而使信号端S为高电平,模块上的LED将熄灭。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 倾斜传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 前面我们已经学习了几个数字传感器了,使用方法大同小异,这里就不多说了。 在我们导入的库keyes sensor下的数字输入单元找到倾斜传感器我们这里接数字口3,所以我们将管脚设置为3。大家可能发现我们有好几个课程都是用的数字口3,其实这里用别的数字口都行,但是大家在用别的IO口时别忘了把线接上对应的位置哦! 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。将倾斜模块倾斜一边, 模块上的红色LED不亮,串口监视器打印数字电平信号“1”;将倾斜模块倾斜另一边, 模块上的红色LED点亮,串口监视器打印数字电平信号“0”。   ### 实验十 霍尔传感器检测南极磁场  实验说明 在这个套件中,有一个Keyes新款 DIY电子积木 霍尔传感器,它主要采用A3144线性霍尔元件。该元件P1是由电压调整器、霍尔电压发生器、差分放大器、史密特触发器,温度补偿电路和集电极开路的输出级组成的磁敏传感电路,其输入为磁感应强度,输出是一个数字电压讯号。它是单极开关型的霍尔传感器,只感应南极磁场。 实验中,我们利用霍尔传感器检测南极磁场,将测试结果在串口监视器上显示。 实验原理 传感器感应到无磁场或北极磁场时,信号端为高电平;感应到南极磁场时,信号端为低电平。当感应磁场强度越强时,感应距离越长。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes新款 DIY电子积木 霍尔传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1. 在我们导入的库keyes sensor下的数字输入单元找到霍尔传感器我们这里接数字口5,所以我们将管脚设置为5。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。当传感器感应到无磁场或北极磁场时,串口监视器显示“1 Just be all normal!”,传感器上的LED熄灭,当传感器感应到南极磁场时,传感器监视器显示“0 The magnetic field at the South Pole!”,传感器上的LED点亮。   ### 实验十一 干簧管检测附近磁场  实验说明 在这个套件中,有一个Keyes DIY电子积木 干簧管模块,它主要采用MKA10110 绿色磁簧元件元件。簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点。它的外壳是一根密封的玻璃管,管中装有两个铁质的弹性簧片电板,还灌有一种惰性气体。与前面我们学习到霍尔传感器不同,霍尔传感器检测南极磁场,而干簧管传感器检测附近有无磁场。 实验中,我们通过读取模块上S端高低电平,判断模块附近是否存在磁场;并且,我们在串口监视器上显示测试结果。 实验原理 平时状态下,玻璃管中的两个由特殊材料制成的簧片是分开的,此时信号端S被R2拉为高电平,LED熄灭。当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通,即信号端S连通GND,此时LED点亮。外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了。该传感器就是利用元件这一特性,搭建电路将磁场信号转换为高低电平变换信号。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 干簧管模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在我们导入的库keyes sensor下的数字输入单元找到干簧管传感器我们这里接数字口5,所以我们将管脚设置为5。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应数据和字符。实验中,当传感器检测到磁场时,item为0且模块红色LED点亮,串口监视器显示“A magnetic field”字符;没有检测到磁场时,item为1,模块上LED熄灭,串口监视器显示“There is no magnetic field”字符,如下图。   ### 实验十二 附近有人吗  实验说明 在这个套件中,有一个Keyes DIY电子积木 人体红外热释传感器,它主要采用RE200B-P传感器元件。它是一款基于热释电效应的人体热释运动传感器,能检测到人体或动物身上发出的红外线,配合菲涅尔透镜能使传感器探测范围更远更广。 实验中,我们通过读取模块上S端高低电平,判断附近是否有人在运动;并且,我们在串口监视器上显示测试结果。 实验原理 这个原理图可能较前面的模块稍复杂,我们一个个来看。左上角那部分是电压转换,5V转3.3V,因为我们模块上用到的传感器工作电压为3.3V,不能直接用5V供电,所以需要一个电压转换电路。当传感器附近没有检测到人即没有接收到红外信号时,传感器1脚输出低电平,此时模块上LED两端有电压就会点亮,此时MOS管Q1导通,信号端S检测到低电平。当传感器附近检测到人即接收到红外信号时,传感器1脚输出高电平,此时模块上LED两端没有电压就会熄灭,此时MOS管Q1不导通,信号端S则检测到被10K上拉电阻R5拉高的高电平。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 人体红外热释传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1. 实验中,先在我们导入的库keyes sensor下的数字输入单元找到人体红外热传感器我们这里接数字口8,所以我们将管脚设置为8。 2\. 其它设置方法和前面实验类似,这里就不多做介绍了。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。 串口监视器显示对应数据和字符。实验中,传感器检测到附近有人在运动时,item为1,模块上LED熄灭,串口监视器显示“Somebody is in this area!”字符;没有检测到人运动时,item为0,模块上LED点亮,串口监视器显示“No one!”字符,如下图。   ### 实验十三 有源蜂鸣器模块播放声音  实验说明 在这个套件中,包含一个有源蜂鸣器模块,一个无源蜂鸣器模块(功放模块)。这个实验中,我们控制有源蜂鸣器发出声音。有源蜂鸣器元件内部自带震荡电路,控制时,我们只需要给蜂鸣器元件足够的电压,蜂鸣器就自动响起。 实验中,我们只是控制这个模块上有源蜂鸣器的循环响起声音。 实验原理 从原理图中可以看出来在,蜂鸣器一端通过串联一个电阻R2连接到电压正极,另一端通过一个NPN三极管Q1连接到GND,所以只要导通这个三极管,让蜂鸣器一端连通GND,有缘蜂鸣器就会响起来。三极管控制端基极也就是连接到R1电阻一端为高电平,三极管Q1就导通了,三极管基极被下拉电阻R3拉低,所以常态为不导通,当我们用单片机IO口输出一个高电平到基极三极管就导通了。 即S信号端设置为高电平时,三极管导通,模块上蜂鸣器响起;设置为低电平时,三极管不导通,模块上蜂鸣器没有声音。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 有源蜂鸣器模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1.实验中,先在我们导入的库keyes sensor下的数字输出单元找到有缘蜂鸣器我们这里接数字口3,所以我们把管脚设置为3,设置为高时,模块上有源蜂鸣器响起;设置为低时,模块上有源蜂鸣器关闭声音。 测试结果 上传测试代码成功,上电后,模块上有源蜂鸣器响起1秒,关闭1秒,循环交替。  ### 实验十四 8002b功放 喇叭模块  实验说明 在这个套件中,有一个Keyes DIY电子积木 8002b功放 喇叭模块,这个模块主要的元件有一个可调电位器,一个喇叭,一个音频放大芯片;前面课程中我们介绍了套件中的有源蜂鸣器模块的使用方法。在这里我们介绍下套件中的8002b功放 喇叭模块,这个模块主要功能是:可以对输出的小音频信号进行放大,大概放大倍数为8.5倍,并且可以通过自带的小功率喇叭播放出来,也可以用来播放音乐,作为一些音乐播放设备的外接扩音设备。 实验中,我们利用8002b功放 喇叭模块上发出各种频率的声音。 实验原理 其实它就类似于于一个无源蜂鸣器,前面我们介绍过,有缘蜂鸣器自带振荡源,只要我们给它足够的电压就能响起来,而无源蜂鸣器元件内部不带震荡电路,控制时我们需要在元件正极输入不同频率的方波(电压5V),负极接地,从而控制蜂鸣器响起不同频率的声音。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 8002b功放 喇叭模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在keyes sensor库下的数字输出单元找到并拖出,其中管脚是代码模块信号端接口,我们连接的是D3,所以设置为3;音调设置对应的是模块上无源蜂鸣器发出的频率,我们可以点击米思齐软件上代码按键,看到对应频率;节拍对应的是各个频率延迟的时间,1个节拍就是延迟1秒。 2.在keyes sensor库下的数字输出单元找到并拖出,同样管脚设置为3,这个代码块用来停止播放。 测试结果 上传测试代码成功,上电后,8002b喇叭功放模块上循环播放对应频率即对应节拍的声音。请注意使用时先把音量逆时针调到最小,再慢慢顺时针增大,以防烧坏喇叭。  ### 实验十五 130电机模块  实验说明 在生活中,我们经常需要驱动一个风扇转动或者或者一个小水泵。为了方便接线,我们特别设计了这个130电机驱动模块。模块设计有两个定位孔,与伺服电机控制兼容。该模块效率高,风扇质量好。 该电机控制模块采用HR1124S电机控制芯片。HR1124S是应用于直流电机方案的单通道H桥驱动器芯片。HR1124S的H桥驱动部分采用低导通电阻的PMOS和NMOS功率管。低导通电阻保证芯片低的功率损耗,使得芯片安全工作更长时间。此外HR1124S拥有低待机电流,低静态工作电流,这些性能使HR1124S易用于玩具方案。 该模块兼容各种单片机控制板,如arduino系列单片机。模块上自带的防反插红色端子间距为2.54mm,实验中,我们可通过输出到两个信号端IN+和IN-的电压方向来控制电机的转动方向,让电机转动起来。 实验原理 芯片是助于驱动电机,电机所需电流较大,我们无法用三极管驱动更无法直接用IO口驱动,让电机转动起来很简单,给电机两端电压即可,不同电压方向电机转向也不相同,额度电压内,电压越大,电机转动得越快;反之电压越低,电机转动得越慢,甚至无法转动。所以我们可以用PWM口来控制电机的转速,我们这里还没有学到PWM,所以先用高低电平来控制电机。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 130电机模块*1|4P XH-2.54mm 黑红蓝黄硅胶线*1|USB线*1| 接线图  测试代码  代码说明 实验中,先在我们导入的库keyes sensor下的数字输出单元找到130电机即风扇模块我们这里电机IN+接模拟口A0,IN-接模拟口A1,所以我们把管脚INA设置为A0,INB设置为A1,INA设置为高且INB设置为低时(A0~A7模拟口也可做数字口用),模块上电机逆时针旋转;INA设置为低且INB设置为高时,模块上电机顺时针旋转;INA设置为低且INB设置为低时,模块上电机停止转动。 测试结果 烧录好测试代码,按照接线图连接好线;上电后,风扇逆时针转动2秒;停止2秒;顺时针转动2秒;停止2秒;循环交替。  ### 实验十六 插件RGB模块调节LED颜色  实验说明 在这个套件中,有一个Keyes DIY电子积木 共阴RGB模块,它采用F10-全彩RGB雾状共阴LED元件。控制时,我们需要将模块R G B连接单片机PWM口,剩下那个管脚接GND(共阳RGB的话剩下那个管脚接VCC)。那么什么是PWM呢?PWM是使用数字手段来控制模拟输出的一种手段。使用数字控制产生占空比不同的方波(一个不停在高电平与低电平之间切换的信号)来控制模拟输出。一般来说端口的输入电压只有两个0V与5V,也就是低电平和高电平。如果想要改变灯的亮度怎么办呢个?有同学说串联电阻,对,这个方法是正确的。但是,如果想要得到不同的亮度,且在不同亮度之间来回变动怎么办呢?不可能不停地切换电阻吧。这种情况下就需要使用PWM了,那它是怎么控制的呢? 对于Arduino的数字端口电压输出只有LOW与HIGH两个,对应的就是0V与5V的电压输出,可以把LOW定义为0,HIGH定义为1,1秒内让Arduino输出500个0或者1的信号。如果这500个全部为1,那就是完整的5V,如果全部为0,那就是0V。如果010101010101这样输出,刚好一半,端口输出的平均电压就为2.5V了。这个和放映电影是一个道理,咱们所看的电影并不是完全连续的,它其实是每秒输出25张图片。在这种情况下,人的肉眼是分辨不出来的,看上去就是连续的了。PWM也是同样的道理,如果想要不同的电压,就控制0与1的输出比例控制就可以了。当然这和真实的连续输出还是有差别的,单位时间内输出的0,1信号越多,控制的就越精确。 实验中,我们通过测试代码,控制模块上RGB LED显示几个常用颜色。 实验原理 那么我们这个实验就是要通过调节3个PWM值,控制LED元件显示红光、绿光和蓝光的比例,从而控制RGB模块上LED显示不同颜色灯光。当设置的PWM值越大,对应显示的颜色比例越重。理论上来说,通过调节这3中颜色光的混合比例,可以模拟出所有颜色的灯光。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 共阴RGB模块*1|4P XH-2.54mm 黑红蓝黄硅胶线*1|USB线*1| 接线图  测试代码 代码1:  代码2:  代码说明 代码1说明: 1. 在我们导入的库keyes sensor下的数字输出单元找到共阴RGB模块我们这里R接数字口9,G接数字口10,B接数字口11,所以我们将管脚设置为。 ,其中R G B代表控制模块上 LED对应的红绿蓝3种颜色对应的端口,根据接线图我们接到了D9 D10 D11,设置为9 10 11,后面设置对应高低,设置RGB LED中红绿蓝3个灯是否会亮,设置为高(共阴RGB对应数字口为高电平,共阳则相反),对应的颜色就亮。 2. 现在观察代码,这个代码非常简单,只是简单的控制模块上RGB LED显示红色1秒、 绿色1秒、蓝色1秒,循环交替。 代码2说明: 同样在我们导入的库keyes sensor下的数字输出单元找到共阴RGB模块我们这里R接数字口9,G接数字口10,B接数字口11,所以我们将管脚设置为。后面设置数据代表设置模块上LED 红绿蓝颜色的比例,设置的数据越大(对应的PWM值越大),设置该颜色的比例越大。 2.实验中我们通过参考下方常用RGB颜色表设置对应数值,调节RGB LED上红绿蓝颜色比例,从而控制RGB LED显示对应颜色。 常用RGB颜色表 | |R|G|B| |R|G|B| |R|G|B| |-|-|-|-|-|-|-|-|-|-|-|-| |黑色|0|0|0|黄色|255|255|0|浅灰蓝色|176|224|230| |象牙黑|41|36|33|香蕉色|227|207|87|品蓝|65|105|225| |灰色|192|192|192|镉黄|255|153|18|石板蓝|106|90|205| |冷灰|128|138|135|dougello|235|137|85|天蓝|135|206|235| |石板灰|112|128|105|forum gold|255|227|132|暖灰色|128|128|105| |金黄色|255|215|0|青色|0|255|255|黄花色|218|165|105| |绿土|56|94|15|白色|255|255|255|瓜色|227|168|105| |靛青|8|46|84|古董白|250|235|215|橙色|255|97|0| |碧绿色|127|255|212|天蓝色|240|255|255|镉橙|255|97|3| |青绿色|64|224|208|白烟|245|245|245|胡萝卜色|237|145|33| |绿色|0|255|0|白杏仁|255|235|205|桔黄|255|128|0| |黄绿色|127|255|0|cornsilk|255|248|220|淡黄色|245|222|179| |钴绿色|61|145|64|蛋壳色|252|230|201|翠绿色|0|201|87| |花白|255|250|240|棕色|128|37|37|森林绿|34|139|34| |gainsboro|220|220|220|米色|163|148|128|草地绿|124|252|0| |ghostWhite|248|248|255|锻浓黄土色|138|54|15|酸橙绿|50|205|50| |蜜露橙|240|255|240|锻棕土色|135|51|36|薄荷色|189|252|201| |象牙白|250|255|240|巧克力色|210|105|30|草绿色|107|137|35| |亚麻色|250|240|230|肉色|255|125|64|暗绿色|48|128|20| |navajoWhite|255|222|173|黄褐色|240|230|140|海绿色|46|139|87| |old lace|253|245|230|玫瑰红|188|143|143|嫩绿色|0|255|127| |海贝壳色|255|245|238|肖贡土色|199|97|20|雪白|255|250|250| |标土棕|115|74|18|紫色|160|32|240|乌贼墨棕|94|38|18| |紫罗蓝色|138|43|226|红色|255|0|0|赫色|160|82|45| |jasoa|160|102|211|砖红|156|102|31|马棕色|139|69|19| |湖紫色|153|51|250|镉红|227|23|13|沙棕色|244|164|96| |淡紫色|218|112|214|珊瑚色|255|127|80|棕褐色|210|180|140| |梅红色|221|160|221|耐火砖红|178|34|34|印度红|176|23|31| |蓝色|0|0|255|栗色|176|48|96|钴色|61|89|171| |粉红|255|192|203|dodger blue|30|144|255|草莓色|135|38|87| |jackie blue|11|23|70|橙红色|250|128|114|锰蓝|3|168|158| |蕃茄红|255|99|71|深蓝色|25|25|112|桔红|255|69|0| |孔雀蓝|51|161|201|深红色|255|0|255|土耳其玉色|0|199|140| 测试结果 上传测试代码1成功,上电后,模块上RGB LED循环显示红绿蓝3种颜色,间隔时间为1秒。上传测试代码2成功,上电后,模块上RGB LED显示红橙黄绿蓝青紫白7种颜色,循环不止,间隔时间为1秒。  ### 实验十七 旋转电位器传感器读取模拟值  实验说明 前面我们学习过的传感器,都是数字传感器,在这个套件中,有一个Keyes DIY电子积木 旋转电位器传感器,它与我们前面学到的传感器不同,它是一个模拟传感器,意思是例如我们前面学习的按键模块,当按键没有按下去时,我们读取到高电平(5V),当按键按下去时,我们读取到低电平(0V),而在0~5V中间的电压值,我们数字IO口无法读取到,当然按键模块也只能输出高低电平。而模拟传感器就可以通过我们plus板上的模拟口(A0~A7)读取。 实验中,我们利用这个模块测试对应的模拟值;并且,我们在串口监视器上显示测试结果。 实验原理 我们学过滑动变阻器的就很好理解,随着滑动变阻器上的滑片移动,滑片上的电压随着改变。我们的旋转电位器原理也是如此,它主要采用一个10K可调电阻。通过旋转电位器,我们可以改变电阻大小,信号端S检测到电压变化(0~5V),而这个电压变化是一个连续变化的模拟量,也就是在0~5V内可以取任意值,我们必须先对这个模拟量进行ADC采集,来测量连续的这些模拟量,A/D 是模拟量到数字量的转换,依靠的是模数转换器(Analog to Digital Converter),简称ADC。我们的plus开发板已经集成了ADC采集,我们直接使用就可以。 我们plus开发板与UNO开发板的ADC位数都是10位,一个 n 位的 ADC 表示这个 ADC 共有 2 的 n 次方个刻度。10 位的 ADC,输出的是从 0~1023 一共 1024 个数字量,也就是 2 的 10 次方个数据刻度,那么每个刻度就是5V/1024=0.0049V,这个也叫分辨率。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 旋转电位器传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在实验中,我们需要像前面学习的一样,创建一个整数变量item。  2\. 我初始化波特率设置,事实上我们这里不用手动初始化波特率也是可以的,当我们使用到串口打印时,代码块已经自动设置了。 3\. 在我们导入的库keyes sensor下的“模拟输入”单元找到旋转电位器模块我们这里管脚接模拟口A0,所以我们不用更改。 4\. 读取的模拟值赋给变量item,串口监视器显示item的值,(我们默认设置为9600,可更改)。 5\. 延时100ms 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应模拟值。实验中,顺时针旋转电位器,模拟值增大,逆时针旋转电位器,模拟值减小,范围为0-1023,如下图。   ### 实验十八 水滴水蒸气传感器  实验说明 这是一个Keyes DIY电子积木 水滴传感器。它是一个模拟(数字)输入模块,也叫雨水、雨量传感器。可用于各种天气状况的监测,检测是否下雨及雨量的大小,转成数字信号(DO)和模拟信号(AO)输出,并广泛应用于Arduino 机器人套件,雨滴,下雨传感器,可用于各种天气状况的监测,并转成数定信号和 AO 输出,也可用于汽车自动刮水系统、智能灯光系统和智能天窗系统等。 实验中,我们将传感器信号端(S端)输入到plus 开发板的模拟口,感知模拟值的变化,并在串口监视器上显示出对应的模拟值。 实验原理 它的原理是通过电路板上裸露的印刷平行线检测水量的大小。水量越多,就会有更多的导线被联通,随着导电的接触面积增大,2脚输出的电压就会逐步上升。信号端S检测的模拟值就越大。除了可以检测水量的大小,它还可以检测空气中的水蒸气。传感器自带2个直径为4.8mm的定位孔,方便你将传感器固定在其他设备。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 水滴传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在实验中,我们需要像前面学习的一样,创建一个整数变量item。  2\. 我初始化波特率设置,事实上我们这里不用手动初始化波特率也是可以的,当我们使用到串口打印时,代码块已经自动设置了。 3\. 在我们导入的库keyes sensor下的“模拟输入”单元找到水蒸气传感器模块我们这里管脚接模拟口A0,所以我们不用更改。 4\. 读取的模拟值赋给变量item,串口监视器显示item的值,(我们默认设置为9600,可更改)。 5\. 延时100ms 测试结果 烧录好测试代码,按照接线图连接好线;利用USB接口上电后,进入串口监视器,设置波特率为9600。当水蒸气传感器上检测到水分时,输出的模拟值在串口监视器显示出来,水分越多,模拟值越大,如下图。   ### 实验十九 声音传感器检测声量  实验说明 在这个套件中,有一个Keyes DIY电子积木 声音传感器,实验中,我们利用这个传感器测试当前环境中的声音大小对应的模拟值,声音越大,模拟值越大;并且,我们在串口监视器上显示测试结果。 实验原理 它主要采用一个高感度麦克风元件和LM386芯片。高感度麦克风元件用于检测外界的声音。利用LM386芯片搭建合适的电路,我们对高感度麦克风检测到的声音进行放大,最大倍数为200倍。使用时我们可以通过旋转传感器上电位器,调节声音的放大倍数。调节时,顺时针调节电位器到尽头,放大倍数最大。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 声音传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在实验中,我们需要像前面学习的一样,创建一个整数变量item。  2 在我们导入的库keyes sensor下的“模拟输入”单元找到声音传感器模块我们这里管脚接模拟口A0,所以我们不用更改。 3\. 读取的模拟值赋给变量item,串口监视器显示item的值,(我们默认设置为9600,可更改)。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应模拟值。实验中,我们顺时针旋转电位器和对准MIC头大声说话,可以看到模拟值数据变大,如下图。   ### 实验二十 光敏电阻传感器  实验说明 在这个套件中,有一个Keyes DIY电子积木 光敏电阻传感器,这是一个常用的光敏电阻传感器,它主要采用光敏电阻元件。该电阻元件电阻大小随着光照强度的变化而变化,该传感器就是利用光敏电阻元件这一特性,搭建电路将电阻变化转换为电压变化。光敏电阻传感器可以模拟人对环境光线的强度的判断,从而方便做出与人友好互动的应用。 接线时,我们将传感器信号端(S端)输入到arduino系列单片机的模拟口,感知模拟值的变化,并在串口监视器上显示出对应的模拟值。 实验原理 当没有亮光时,电阻大小为0.2MΩ,信号端(2点)检测的电压接近0,当随着光照抢度增大,光线传感器的电阻值越来越小,所以信号端检测的电压越来越小。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 光敏电阻传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在实验中,我们需要像前面学习的一样,创建一个整数变量item。  2 在我们导入的库keyes sensor下的“模拟输入”单元找到光敏电阻传感器模块我们这里管脚接模拟口A0,所以我们不用更改。 3\. 读取的模拟值赋给变量item,串口监视器显示item的值,(我们默认设置为9600,可更改)。 测试结果 烧录好测试代码,按照接线图连接好线,利用USB线上电后,打开软件串口监视器,设置波特率为9600,我们可以看到对应光照强度的模拟值,光照越强,模拟值越大,如下图。   ### 实验二十一 NTC-MF52AT模拟温度传感器  实验说明 在这个套件中,有一个Keyes DIY电子积木 NTC-MF52AT模拟温度传感器,它的原理像光敏电阻传感器,只是感应的器件不同,实验中,我们将传感器信号端接到Keyes Uno Plus 开发板模拟口,读出对应的模拟值。我们可以利用模拟值,通过特定公式,计算出当前环境的温度。由于温度计算公式比较复杂,这里就不多介绍了。实验中,我们只是读取对应的模拟值。 实验原理 这个模块主要采用NTC-MF52AT热敏电阻元件。NTC-MF52AT热敏电阻元件能够时感知周边环境温度的变化,电阻大小随着温度的变化而变化,从而引起信号端S的电压变化。该传感器就是利用NTC-MF52AT热敏电阻元件这一特性,搭建电路将电阻变化转换为电压变化。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积NTC-MF52AT模拟温度传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在实验中,我们需要像前面学习的一样,创建一个整数变量item。  2 在我们导入的库keyes sensor下的“模拟输入”单元找到模拟温度传感器模块我们这里管脚接模拟口A0,所以我们不用更改。 3\. 读取的模拟值赋给变量item,串口监视器显示item的值,(我们默认设置为9600,可更改)。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应的模拟值,温度越高,模拟值越大。   ### 实验二十二 薄膜压力传感器  实验说明 在这个套件中,有一个Keyes DIY电子积木 薄膜压力传感器,薄膜压力传感器是基于新型纳米压敏材料辅以舒适杨式模量的超薄薄膜衬底一次性贴片而成,兼具防水和压敏双重功能。 实验中,我们通过采集模块上S端模拟信号,判断压力大小,模拟值越小,压力越大;并且,我们在串口监视器上显示测试结果。 实验原理 当传感器感知到外界压力时,传感器电阻值发生变化,我们采用电路将传感器感知压力变化的压力信号转换成相应变化强度的电信号输出。这样我们就可以通过检测电压信号变化就可以得到压力变化情况。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 薄膜压力传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在实验中,我们需要像前面学习的一样,创建一个整数变量item。  2 在我们导入的库keyes sensor下的“模拟输入”单元找到模拟温度传感器模块我们这里管脚接模拟口A0,所以我们不用更改。 3\. 读取的模拟值赋给变量item,串口监视器显示item的值,(我们默认设置为9600,可更改)。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。当我们用手挤压薄膜时,可以看到我们在串口监视器打印的模拟值变小,如下图。   ### 实验二十三 火焰传感器  实验说明 在这个套件中,有一个Keyes DIY电子积木 火焰传感器,它对火焰光谱特别灵敏并且灵敏度可调,性能稳定,是救火机器人必备部件,在机器人比赛中,远红外火焰探头起着非常重要的作用,它可以用作机器人的眼睛来寻找火源或足球。利用它可以制作灭火机器人、足球机器人等。 该传感器有两个信号输出端,分别可输出数字信号与模拟信号。实验中,我们分别读取模块传感器数字信号与模拟信号,将测试结果在串口监视器上显示。 实验原理 红外火焰传感器能够探测到波长在700纳米~1000纳米范围内的红外光,探测角度为60,其中红外光波长在880纳米附近时,其灵敏度达到最大。从电路原理图我们可以看到,上电后红色LED2先点亮,红色LED1处于熄灭状态,检测到火焰时,数字信号端D0输出低电平,红色LED1将点亮。红外火焰探头将外界红外光的强弱变化转化为电流的变化,通过A/D转换器反映为0~1023范围内数值的变化。外界红外光越强,数值越小;红外光越弱,数值越大。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 火焰传感器*1|4P XH-2.54mm 黑红蓝黄硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1. 在这一实验中,我们分别用到一个数字口和一个模拟口,前面我们讲过,模拟口也可以当数字口用,这里我们把模拟口A0当做数字口来用。 2.我们先像前面学习的一样,创建两个整形变量A0和D0。A0用来存放模拟值,D0存放数字值。  3在我们导入的库keyes sensor下的“模拟输入”单元找到火焰传感器模块我们这里管脚接模拟口A1,所以我们把管脚改为A1,然后在库keyes sensor下的“数字输入”单元找到火焰传感器模块我们这里管脚接模拟口A0,所以我们把管脚改为A0。 4\. 读取的模拟值赋给变量A0,数字值赋给变量D0,串口监视器显示两个变量的值,中间我们用空给隔开。(我们默认设置为9600,可更改)。 测试结果 上传测试代码成功,利用USB线上电后,传感器模块上的红色LED2点亮,红色LED1熄灭,打开串口监视器,设置波特率为9600。当传感器检测到火焰时,红色LED1点亮,数字值由1变为0,模拟值变小,如下图。   ### 实验二十四 MQ-2 烟雾传感器  实验说明 在这个套件中,有一个Keyes DIY电子积木 MQ-2模拟气体传感器,它主要用到了MQ-2 可燃气体、烟雾传感器元件。该元件所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。该传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。它可检测多种可燃性气体,是一款适合多种应用的低成本传感器。 实验中,我们读取传感器A0端模拟值,和D0端数字值,判断空气中气体的含量,以及它们是否超标。 实验原理 MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。处于200~300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大。 使用时,A0端读取对应气体的模拟值;D0端连接一个LM393芯片(电压比较器),我们可以通过电位器调节测量气体报警临界点,在D0输出数字值。当测量气体含量超过临界点时,D0端输出低电平;测量气体含量没超过临界点时,D0端输出高电平。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 MQ-2模拟气体传感器*1|4P XH-2.54mm 黑红蓝黄硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1.我们先像前面学习的一样,创建两个整形变量A0和D0。A0用来存放模拟值,D0存放数字值。  3在我们导入的库keyes sensor下的“模拟输入”单元找到烟雾传感器模块我们这里管脚接模拟口A1,所以我们把管脚改为A1,然后在库keyes sensor下的“数字输入”单元找到烟雾传感器模块我们这里管脚接模拟口A0,所以我们把管脚改为A0。 4\. 读取的模拟值赋给变量A0,数字值赋给变量D0,串口监视器显示两个变量的值。(我们默认设置为9600,可更改)。 测试结果 上传测试代码成功,利用USB线上电后,模块上黄绿色LED点亮,打开串口监视器,设置波特率为9600。串口监视器显示对应数据和字符。实验中,我们可以看到当测试的模拟值小于等于289时,气体含量没有超过临界点,红色LED处于熄灭状态;当测试的模拟值大于等于327时,气体含量超过临界点,红色LED点亮;那么就代表气体含量临界点对于的模拟值在289-327之间,我们可以通过旋转传感器上电位器,调节临界点。   ### 实验二十五 摇杆模块  实验说明 大家都应该看过游戏手柄,有些游戏手柄上除了按键,还有摇杆,那摇杆是什么工作原理呢?那么在我们这个套件中,就有一个Keyes DIY电子积木 摇杆模块,它主要采用PS2 手柄摇杆元件。其实它的原理非常简单,内部相当于两个可调电位器(左右和上下)和一个按键,这个按键没被按下时被R1下拉为低电平,按下时接通VCC即为高电平,与我们前面学习过的按键模块是相反的,我们摇动摇杆时内部的电位器就会调节从而输出不同的电压,我们就可以读取到模拟值。控制时,我们需要将模块X Y端口连接单片机模拟口,B端口连接单片机数字口,VCC接单片机电源输出端(3.3-5V),GND接单片机GND。我们可以读取两个模拟值和一个数字口的高低电平情况,判断模块上摇杆的工作状态。 实验中,我们将读取两个模拟值和一个数字值,并在串口监视器上显示测试结果。 实验原理 摇杆电位器在直流电路中作为电流调节使用时,将有电流通过摇杆电位器的滑动臂,此时由于阳极氧化的原因会导致电阻值异常增加。在这种情况下,建议将连接电阻体的端子接负极,滑动臂接正极。如果直流电流直接通过摇杆电位器,摇杆电位器的阳极就会受到氧化损伤,从而让摇杆电位器的阻抗变大,因此最好是将电流的负极接在跟碳膜片接触的端子上,正极接在跟刷子(摇杆电位器接触片)的端子上。摇杆电位器作为可变电阻器时,建议作调整电压的分压器使用,同时摇杆电位器的负载电阻RL应不小于摇杆电位器公称阻值RT的10倍。在稳压器中用来调节输出电压,故设计摇杆电位器应满中顺时针调节时输出电压升高,反时针调节器节时输出电压降低;在可调恒流充电器中摇杆电位器用来调节充电电流折大小,设计摇杆电位器时应满中顺时针调节时,电流增大。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 摇杆模块*1|5P XH-2.54mm 黑红蓝黄绿硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1.我们先定义三个整形变量X、Y和Button。X用来存放X轴模拟值,Y用来存放Y轴模拟值,Button存储按键值。  3在我们导入的库keyes sensor下的“其他模块”单元找到摇杆传感器模块我们这里X轴管脚接模拟口A3,Y轴管脚接模拟口A2,然后在库keyes sensor下的“其他模块”单元找到摇杆按钮模块我们这里管脚接数字口7,所以我们把管脚改为7。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。串口监视器显示对应数值。摇动摇杆,x轴和y轴对应的模拟值发生改变,按下按钮,读取到的数字值为1,否则为0,如下图。   ### 实验二十六 太阳光紫外线传感器  实验说明 在这个套件中,有一个Keyes DIY电子积木 太阳光紫外线传感器,这款紫外线传感器用于紫外线指数监测、紫外线辐射剂量测量、火焰检测 。适用于测量智能可穿戴设备的紫外线指数,如手表、智能手机和室外设备的紫外线指数检测。它也可以用来监测紫外线的强度,或者用作紫外线消毒物品时的紫外线火焰探测器。 传感器都有特定的光谱响应,该产品主要是针对太阳光中紫外线测量以及UVA灯强度测量,特别适合UVI的检测。实验中我们将测试结果在串口监视器上显示出来。 实验原理 紫外线传感器输出电流与光照强度成正比,产品输出具有非常高的一致性,模块电路已经设置好,我们直接进行ADC采集模拟信号。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积 太阳光紫外线传感器*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1\. 在我们导入的库keyes sensor下的“模拟输入”单元找到紫外线传感器模块我们这里管脚接模拟口A3,所以我们将管脚改为A3。 2\. 串口监视器显示采集的模拟值(我们默认设置为9600,可更改)。 3\. 延时100ms 测试结果 烧录好测试代码,线路连接好后,上传程序代码,然后打开串行监视器,设置波特率为9600,它将显示数据,如下图所示。   将紫外线灯照到传感器上,或者放在太阳底下,串行监视器上的数据正在变化,如下图所示。  ### 实验二十七 SK6812 RGB模块  实验说明 前面我们学习了插件RGB模块,利用PWM信号对模块的三个引脚进行调色。我们这个套价中,还有一个Keyes DIY电子积木 6812 RGB模块,但是这个SK6812 RGB 模块驱动原理不与我们前面学习过的插件RGB模块相同,而且只需要一个引脚就能控制,这是一个集控制电路与发光电路于一体的智能外控LED光源。每个LED原件其外型与一个5050LED灯珠相同,每个元件即为一个像素点,我们这个模块上有四个灯珠即四个像素, 实验中,我们分别使不同的灯亮出不同的颜色。 实验原理 从原理图中我们可以看出,这四个像素点灯珠都是串联起来的,其实不论多少个,我们都可以用一个引脚控制任一一个灯,并且让它显示任一种颜色。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。 数据协议采用单线归零码的通讯方式,像素点在上电复位以后,S端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器。这个6812RGB通讯协议与驱动已经在底层封装好了,我们直接调用函数的接口就可以使用,简单方便,LED具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 6812 RGB模块*1|3P XH-2.54mm 黑红蓝硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1. 在我们导入的库keyes sensor下的“显示模块”单元找到NeoPixel全彩LED模块我们这里管脚接数字口8,在管脚后面下拉选择8就可以了,灯号就是第几个灯,RGB后面的数值就是对像素颜色的PWM调色。 2. 第一个灯亮红色: 3. 第二个灯亮绿色: 4. 第三个灯亮蓝色: 5. 第四个灯亮白色: 测试结果 烧录好测试代码,按照接线图连接好线,上电后,我们可以看到模块上的四个灯珠分别亮红绿蓝白色,如下图所示。  ### 实验二十八 旋转编码器模块计数  实验说明 在这个套件中,有一个Keyes DIY电子积木 旋转编码器模块,也叫开关编码器、旋转编码器,EC11系列编码器有直插编码器、贴片式编码器、沉板式编码器、侧插式编码器,EC11A为直插式编码器。因广泛用于车载DVD、车载导航、汽车影音上,也经常被人称为汽车编码器。EC11编码器在各类仪器设备中用于频率、音量、速度、温度、电压、菜单选择、光线强弱等参数的控制。此款编码器有做20脉冲20定位点、15脉冲30定位点两种。调节轴有金属柄和塑胶柄,轴长区间9-30mm,调节轴有全柄、半柄、螺纹柄等类型供您选择。EC11系列编码器主要用于汽车电子、多媒体音响、仪器仪表、家用电器、智能家居、计算机周边、医疗器械等领域。主要用于频率调节、亮度调节、温度调节、音量调节的参数控制等。 实验中,我们利用Keyes DIY电子积木 旋转编码器模块用于计数,当我们顺时针旋转编码器时,设置数据i加1;逆时针旋转编码器时,设置数据i减1;按下编码器中间按键时,打印按键的值;将测试结果在串口监视器上显示。 实验原理 增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表明位移的巨细。它主要采用20脉冲旋转编码器元件。它可通过旋转计数正方向和反方向转动过程中输出脉冲的次数,这种转动计数是没有限制的,复位到初始状态,即从0开始计数。如果我们只计算信号的脉冲,则可以使用两个输出中的任何一个来确定旋转位置。但是,如果我们想要确定旋转方向,我们需要同时考虑两个信号。 旋转增量式编码器以转变时输出脉冲,通过计数设备来晓得其方位,当编码器不动或停电时,依托计数设备的内部回忆来记住方位。这样,当停电后,编码器不能有任何的移动,当来电作业时,编码器输出脉冲进程中,也不能有搅扰而丢掉脉冲,否则,计数设备回忆的零点就会偏移,并且这种偏移的量是无从晓得的,只要过错的出产成果呈现后才晓得。 实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|Keyes DIY电子积木 旋转编码器模块*1|5P XH-2.54mm 黑红蓝黄绿硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1.在库keyes sensor下的“其他模块”单元找到选择编码器模块。 2.我们把CLK管脚设置为数字口2、DAT管脚设置为数字口3,计数变量i自动定义了。。该代码在库文件中就已经设置好了,它的意思是中断2(CLK)一个下降沿(从高电平变为低电平)后,读取数字口3(DAT)电压,当DAT电压为高电平时,旋转编码器的值加1;当DAT电压为低电平时,转编码器的值减1。我们可以打开米思齐软件中的看到对应设置的C语言代码。 3\. 在库keyes sensor下的“其他模块”单元找到选择编码器按钮,并把管脚设置为4,这个值我们存储到我们定义的button变量中。 5.然后循环程序中设置按钮管脚(D4)为低电平时即按下按钮时,将计数变量i的值清0,。 6\. 代码块的编程方法其实我们在前面的实验中有讲过,在光折断计数实验中,忘记了可以回顾一下。 测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。顺时针旋转编码器,显示数据增加;逆时针旋转编码器,显示数据减小;按下编码器中间按键,显示数据为0,如下图。   ### 实验二十九 舵机的控制原理  实验说明 舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测 器所构成。舵机有很多规格,但所有的舵机都有外接三根线,分别用棕、红、橙三种颜 色进行区分,由于舵机品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极 线,橙色为信号线。  实验原理 舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM (脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms 之间,但是,事实上脉宽可由0.5ms 到2.5ms 之间,脉宽和舵机的转角0°~180°相 对应。有一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋 转的角度也会有所不同。  实验器材 ||||| |-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|keyes 伺服舵机*1|USB线*1| 接线图  测试代码 代码1: 代码2: 代码说明 代码1说明: 1. 在我们导入的库keyes sensor下的“数字输出”单元找到舵机模块我们这里管脚接D9,角度就是我们要让舵机转动到多少度,范围是0~180度,延时即转动角度后等待的时间,单位毫秒。例如,意思就是舵机管脚连接数字口9,转动到90度的位置再等待1000毫秒。 代码2说明: 1. 跟前面一样,先找到并设置管脚9; 2. 在找到,范围设置为0~180,步长为1,因为我们想让舵机一度一度的转动:,延时15ms,不让它转动得太快。 3. ,然后又从180度转回0度。 测试结果 实验1 结果: 上传测试代码成功,利用USB线上电后,舵机由0度,90度,180度三个角度来回转动。 实验2 结果: 上传测试代码成功,利用USB线上电后,舵机由0~180度来回转动,并且每15ms转动一度。  ### 实验三十 超声波传感器的原理  眼镜猴。它们大多时候都是“沉默寡言”的形象。但来自加利福尼亚洪堡加州州立大学的科学家近日研究发现,其实眼镜猴是不折不扣的“话匣子”,它们时刻都在发出一种超声波,只不过捕食者无法听到而已。据了解,研究人员发现这种眼镜猴发出声音的“最小频率”可达到67千赫,比陆地上任何一种啮齿动物和蝙蝠发出的音量都要高很多,甚至偶尔还能飙升到70千赫。众所周知,任何声音只要达到20千赫以上,就很难被人们所听见,就连听力一向很敏锐的狗,也只能听到23千赫的声音。而眼镜猴甚至可以直接听到90千赫的声音。最为特别的是,在眼镜猴的群体中彼此传递着一种秘密的语言,这种语言会提醒对方注意捕食者的危险。 蝙蝠和某些海洋动物都能够利用高频率的声音进行回声定位或信息交流。它们能通过口腔或鼻腔把从喉部产生的超声波发射出去,利用折回的声波来定向,并判定附近物体的位置、大小以及是否在移动。超声波是一种频率高于20000赫兹的声波,它的方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。超声波因其频率下限大于人的听觉上限而得名。科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。 实验说明 在这个套件中,有一个keyes HC-SR04超声波传感器,它可以检测前方是否存在障碍物,并且检测出传感器与障碍物的详细距离。它的原理和蝙蝠飞行的原理一样,就是超声波模块发送出一种频率很高的超声波信号,通常正常人耳朵的听力的声波范围是20Hz~20kHz,人类无法听到。这些超声波的信号若是碰到障碍物,就会立刻反射回来,在接收到返回的信息之后,通过判断发射信号和接收信号的时间差,计算出传感器和障碍物的距离。 实验中,我们利用传感器检测传感器和障碍物之间的距离,将测试结果在串口监视器上显示。 实验原理 最常用的超声测距的方法是回声探测法,如图,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。超声波也是一种声波,其声速V与温度有关。一般情况下超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物面的距离s,即:s=340t/2 HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能, 测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。基本工作原理: (1)采用IO口TRIG触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。  实验器材 |||||| |-|-|-|-|-| |Keyes Uno Plus 开发板*1|传感器扩展板*1|keyes brick HC-SR04超声波传感器*1|4P XH-2.54mm 黑红蓝黄硅胶线*1|USB线*1| 接线图  测试代码  代码说明 1. 与之前一样,我们先声明一个整数变量,并把变量名改为:“distance”,赋初值为0. 2\. 我们在库keyes sensor下的“其他模块”单元找到超声波传感器模块。根据接线,将Trig设置为12,Echo设置为13。 3\. HC-SR04超声波传感器最大测试距离为3-4m,最小测试距离为2cm。设置代码当检测距离小于2cm或者大于等于400cm时,串口监视器显示-1。  4\. 我们在电脑的串口监视器中显示除传感器和障碍物之间的距离。  测试结果 上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为9600。如果障碍物在测试范围外,串口监视器显示“-1”;否则,串口监视器显示超声波传感器和前方障碍物之间的距离,单位为cm,如下图。   ### 实验三十一 红外遥控与接收  实验说明 我们前面也接触了红外信号了,红外线是波长介于微波和可见光之间的电磁波,波长在 760 纳米到 1 毫米之间,是波形比红光长的非可见光。自然界中的一切物体,只要它的温度高于绝对零度(-273)就存在分子和原子的无规则运动,其表面就会不停的辐射红外线。当然了,虽然是都辐射红外线,但是不同的物体辐射的强度是不一样的,而我们正是利用了这一点把红外技术应用到我们的实际开发中。 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、 空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、 辐射、 有毒气体、 粉尘等环境下, 采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。 这一实验中,我们了解下红外接收传感器的使用方法。红外接收传感器主要采用VS1838B红外接收传感器元件。该元件是集接收、放大、解调一体的器件,内部IC就已经完成了解调,输出的就是数字信号。它可接收标准38KHz调制的遥控器信号。 实验中,我们利用红外接收传感器接收外部红外发射设备发射的红外信号,并将接收信号在串口监视器上显示。 实验原理 在实际的通信领域,发出来的信号一般有较宽的频谱,而且都是在比较低的频率段分布大量的能量,所以称之为基带信号,这种信号是不适合直接在信道中传输的。为便于传输、提高抗干扰能力和有效的利用带宽,通常需要将信号调制到适合信道和噪声特性的频率范围内进行传输,这就叫做信号调制。在通信系统的接收端要对接收到的信号进行解调,恢复出原来的基带信号。这部分通信原理的内容,大家了解一下即可。我们用到的红外遥控器里的红外通信,通常是使用 38K 左右的载波进行调制的。 红外遥控系统的主要部分为调制、发射和接收。红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源功耗。调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9kHz≈38kHz。38KH载波发射(完整的发射)如下图。  实验器材