《arduino入门很简单(下).ppt》由会员分享,可在线阅读,更多相关《arduino入门很简单(下).ppt(96页珍藏版)》请在三一办公上搜索。
1、第11章 LCD,11.1 LCD模块LCD160211.2 LCD控制库LiquidCrystal11.3 LiquidCrystal_I2C库,11.1 LCD模块LCD1602,接下来的学习过程中将以LCD1602为基础来进行讲解。LCD1602是字符型的液晶显示器。,11.2 LCD控制库LiquidCrystal,11.2.1 LiquidCrystal八线模式11.2.2 LiquidCrystal四线模式,11.2.1 LiquidCrystal八线模式,11.2.2 LiquidCrystal四线模式,11.3 LiquidCrystal_I2C库,第12章 声音模块,12.1
2、 麦克风模块12.2 超声波模块,12.1 麦克风模块,12.1.1 读取麦克风数据12.1.2 声控灯12.1.3 自适应声控灯,12.1.1 读取麦克风数据,12.1.2 声控灯,12.1.3 自适应声控灯,上一个小节实现的是一个当前环境下是非常好用的一个声控LED,但是如果再将它放在一个噪声比较大的环境中,就会看到LED会时刻都被点亮,通过对程序做一些简单的修改,我们可以创造出一个“自适应”型的声控灯。,12.2 超声波模块,12.2.1 超声波模块HC-SR0412.2.2 第三方库NewPing12.2.3 超声波模块应用,12.2.1 超声波模块HC-SR04,12.2.2 第三方
3、库NewPing,12.2.3 超声波模块应用,第13章 RFID射频识别,13.1 RFID概览13.2 RFID硬件13.3 为RFID编程13.4 简易公交收缴费系统,13.1 RFID概览,1.RFID构成2.RFID工作原理3.RFID优缺点,1.RFID构成,RFID主要是由读/写器和应答器构成的。读/写器的作用是对应答器进行读和写操作,例如最常见的交通工具刷卡器。应答器是一个信息存储介质,其中的数据通常可以保存一段较长的时间。这些数据可以被读写器操作。,2.RFID工作原理,RFID的工作原理就是利用电磁波进行通讯。RFID正常工作除了需要硬件的支持外,还需要相关的协议支持,例如
4、常见的ISO/IEC 14443A协议。在软件协议的约束下,应答器与读/写器直接就可以正确地进行通讯。,3.RFID优缺点,RFID的优点如下:RFID设备抗干扰能力强,不易损坏;RFID应答器使用寿命长;读取距离大;应答器中的数据可以加密;数据存储容量大;存储信息可以修改。,3.RFID优缺点,RFID的缺点如下:数据泛滥没有一个全球标准;安全问题;可能会被恶意使用;高温损坏。,13.2 RFID硬件,RFID的硬件由读/写器和应答器(通常为电子标签)组成。读/写器和应答器之间的通讯方式有很多种。通常情况下,这些方式是互不兼容的,主要原因是工作的频带不同。13.2.1 RFID读/写器13.
5、2.2 RFID应答器,13.2.1 RFID读/写器,RFID读/写器用来从应答器中读取信息或者向应答器中写入信息。MFRC522是工作在13.56MHz下的非接触式通信读/写集成电路。,13.2.2 RFID应答器,RFID应答器用来存储数据。在本章中使用的是MF1S503x系列的MIFARE 1KB智能卡。,13.3 为RFID编程,13.3.1 读取RFID应答器的出厂数据13.3.2 RFID开发流程13.3.3 操作RFID应答器的值块13.3.4 操作RFID应答器读写块,13.3.1 读取RFID应答器的出厂数据,RFID应答器在出厂时通常会将访问位设置为FF078069h,而
6、将Key A和Key B均设置为FFFFFFFFFFFFh。rfid第三方库提供的DumpInfo示例程序可以读取出RFID应答器中可访问的数据。,13.3.2 RFID开发流程,rfid库将读写寄存器以及校验等步骤都进行了封装。用户只需要访问几个公共的方法,就可以使用RFID。,操作RFID应答器的值块,RFID应答器的数据块可以被配置为读/写块和值块。值块拥有比读/写块更多的操作,这使得对数据的操作非常方便。下面的示例就是使用MIFARE_Increment()函数对值块进行加1操作。,操作RFID应答器读写块,RFID应答器读写块的操作在rfid库的帮助下变得非常简单。该库提供了非常简单
7、的MIFARE_Read()和MIFARE_Write()来完成读取和写入的功能。,13.4 简易公交收缴费系统,13.4.1 缴费系统13.4.2 收费系统,13.4.1 缴费系统,缴费系统的实现思路如下:使用Key B进行验证;根据串口监视器的提示输入充值金额;确认充值金额;充值成功,显示余额。,13.4.2 收费系统,收费系统的实现非常简单,思路如下:使用密钥进行验证;执行扣费操作;输出余额。,第14章 实时时钟RTC,14.1 RTC简介14.2 DS1302集成电路14.3 DS1302工作原理14.4 寄存器的突发模式14.5 第三方库ds130214.6 简易LED时钟,14.1
8、 RTC简介,RTC就是一个电脑时钟,更通俗地说是一个集成电路,它可以保持一个正确的时间。在GPS接收器上,它可以通过与当前时间进行比较,从而缩短初始化的时间,而当前时间就是由RTC维持的。1.RTC的优点2.RTC的技术实现3.常见的RTC芯片,1.RTC的优点,功耗小,这对于使用备用电源的系统来说非常重要;释放时序要求严格会话的主系统,这可以使得主系统专心处理会话而不需要维持时钟;比其他方式更加精确。,2.RTC的技术实现,大多数RTC使用的是晶体振荡器,也有一些使用的是通用频率(Utility frequency)。RTC使用的晶体振荡器的频率是32.768 kHz,这个频率也用在石英钟
9、和手表中。这个频率正好是每秒215个周期,所以这个周期可以方便地被二进制计数器电路使用。,3.常见的RTC芯片,现在流行的RTC芯片有DS1302、DS1307、PCF8485、DS3231、DS3232、DS3234、DS32B35等。这些芯片由于接口简单、价格低廉、使用方便的特点而被广泛采用。在本章中将以DS1302为主体进行介绍。,14.2 DS1302集成电路,DS1302是DS1202的继承者,它的封装非常小巧但是功能却是非常强大的。,14.3 DS1302工作原理,14.3.1 CE和时钟控制14.3.2 数据输入和输出14.3.3 时钟/日历14.3.4 写保护寄存器14.3.5
10、 RAM寄存器14.3.6 涓流充电寄存器,CE和时钟控制,CE输入在高电平的时候初始化所有数据操作,它有两个功能:打开控制逻辑:允许访问移位寄存器;终止能力:可以终止单位和多位数据传输。,14.3.2 数据输入和输出,在数据输入之前,首先通过8个SCLK周期输入写命令,在接下来8个SCLK周期的上升沿将1比特的数据输入。多余的SCLK周期将被忽略,而且数据输入是从BIT 0开始的。,14.3.3 时钟/日历,时间和日期信息可以通过读取指定寄存器获得。,14.3.4 写保护寄存器,写保护寄存器用于控制对时钟或者RAM寄存器的写操作,该寄存器的地址为8。,RAM寄存器,静态RAM是RAM地址空间
11、中的31bytes的连续地址空间。,14.3.6 涓流充电寄存器,涓流充电寄存器控制的是DS1302的涓流充电特性。,14.4 寄存器的突发模式,突发模式可以通过将命令地址设置为十进制的31(也就是将操作命令的BIT 15设为逻辑1)来指定时钟/日历或者RAM寄存器。在这之前,需要通过BIT 6指定操作时钟或者RAM;通过BIT 0来指定读或者写。1.时钟/日历突发模式2.RAM突发模式,1.时钟/日历突发模式,该模式通过时钟/日历命令比特指定,在这个模式下,前8个时钟/日历寄存器可以从地址0的BIT 0开始连续地读或者写,其读命令为BFh,写命令为BEh。,2.RAM突发模式,该模式通过RA
12、M命令比特指定,在这个模式下,31个RAM寄存器可以从地址0的第0位连续地读或者写。,14.5 第三方库ds1302,14.5.1 ds1302简介14.5.2 使用ds1302库设置日期和时间14.5.3 使用ds1302库读取日期和时间,ds1302简介,ds1302库主要定义了Time和DS1302两个类。下面依次讲解这两个部分。1.Time类2.DS1302类,1.Time类,ds1302提供了Time类,该类详细表示了时间和日期,其构造函数如下:Time(uint16_t yr,uint8_t mon,uint8_t date,uint8_t hr,uint8_t min,uint8
13、_t sec,Day day);,2.DS1302类,ds1302库提供的主要类是DS1302,其构造方法如下:DS1302(uint8_t ce_pin,uint8_t io_pin,uint8_t sclk_pin),14.5.2 使用ds1302库设置日期和时间,14.5.3 使用ds1302库读取日期和时间,在经过前面两个示例的设置后,指定的时间已经被存储在对应的寄存器中,并且已经开始计时。与示例14-1以及示例14-2对应的,下面两个示例分别使用将当前时间作为对象返回的time()方法和返回单独时间日期信息的方法读取并输出RTC模块中的时间。,14.6 简易LED时钟,第15章 伺服
14、电机和步进电机,15.1 伺服电机15.2 使用其他器件控制伺服电机15.3 步进电机,15.1 伺服电机,15.1.1 伺服电机工作原理15.1.2 伺服电机与Arduino15.1.3 使用Arduino官方库Servo,15.1.1 伺服电机工作原理,伺服电机(servo motor)是一种位置伺服的驱动器。伺服电机的主要规格是扭矩与反应转速:扭矩的单位是N/m,在伺服电机规格中一般使用KG/cm,即通常所说的有多大劲;反应转速的单位是Sec/60,即输出轴转过60需要花费的时间。通常情况下反应转速越高的伺服电机精度越低,所以需要根据具体应用在两者之间做取舍。,15.1.2 伺服电机与A
15、rduino,15.1.3 使用Arduino官方库Servo,Servo库是Arduino官方专门为操作伺服电机而设计的一个库。它非常简单易用,而且比我们自己实现的功能强大得多。例如,在大多数Arduino板上可以同时控制12个伺服电机,Arduino Mega则可以同时控制48个。,15.2 使用其他器件控制伺服电机,15.2.1 使用旋转电位器控制伺服电机15.2.2 使用按钮开关控制伺服电机15.2.3 使用游戏摇杆控制伺服电机15.2.4 使用遥控器控制伺服电机,使用旋转电位器控制伺服电机,使用按钮开关控制伺服电机,使用游戏摇杆控制伺服电机,使用遥控器控制伺服电机,15.3 步进电机
16、,15.3.1 步进电机工作原理15.3.2 步进电机的类型15.3.3 28BYJ-48和ULN200315.3.4 Arduino、ULN2003和28BYJ-48连接15.3.5 使用Arduino的官方库Stepper15.3.6 自己实现28BYJ-48的控制函数,15.3.1 步进电机工作原理,1.单四拍,2.双四拍,3.八拍,15.3.2 步进电机的类型,步进电机的工作原理大都是类似的,不过实际的步进电机主要有三种类型,它的使用方式还是有些许差别的,下面就分别介绍这三种类型。1.单极式步进电机2.双极式步进电机3.通用步进电机,15.3.3 28BYJ-48和ULN2003,15
17、.3.4 Arduino、ULN2003和28BYJ-48连接,之所以将Arduino、ULN2003和28BYJ-48三者的连接单独作为一个小节来介绍,是由于它们之间主要有两种连接方式,这两种方式都有各自的优缺点,读者在清楚地了解这些信息后,就可以根据自己的需求做出最优的产品。1.使用Stepper库以四线方式控制28BYJ-48步进电机2.使用Stepper库以两线方式控制28BYJ-48步进电机,1.使用Stepper库以四线方式控制28BYJ-48步进电机,2.使用Stepper库以两线方式控制28BYJ-48步进电机,15.3.5 使用Arduino的官方库Stepper,这个库非常
18、轻巧,它只有3个函数。,1.控制步进电机以1转/分的速度旋转,伺服电机通常是不可以360旋转的,而步进电机可以,而且步进电机的旋转速度也可以被较精确地控制。,2.控制步进电机正反转,控制步进电机的转动方向非常容易,只需要将绕组的通电顺序反向即可,Stepper库提供的实现方式也非常简单,只需要使用一个负值调用step()函数即可。,3.Stepper库的step()函数,Stepper库的step()函数非常好用,它可以很方便地控制步进电机旋转指定的步数和旋转方向。,15.3.6 自己实现28BYJ-48的控制函数,Arduino官方库Stepper为我们控制步进电机提供了方便,但是由于官方库
19、追求的最大兼容性的目标,使得使用Stepper库控制的步进电机只可以双绕组通电的方式运行。这就使得28BYJ-48只能以双四拍的方式运行。,第16章 用Arduino做游戏打地鼠,16.1 需求分析16.2 打地鼠雏形16.3 打地鼠高级16.4 打地鼠终极,16.1 需求分析,1.雏形2.升级加入击中动画和随机速度3.终极将分数显示在LED上4.连接电路,16.2 打地鼠雏形,16.2.1 实现随机“地鼠”16.2.2 按钮逻辑16.2.3 整合代码,16.2.1 实现随机“地鼠”,随机“地鼠”的实现可以按照实现逻辑分为两个比较小的步骤:实现随机数和实现随机位置。下面分别进行介绍。1.实现随
20、机数2.实现随机位置3.验证代码,16.2.2 按钮逻辑,按钮逻辑部分按照实现逻辑也可以分为两个部分:获取按钮值和解析按钮。下面分别作介绍。1.获取按钮值2.关联按钮值和LED位置3.打地鼠主要逻辑,16.2.3 整合代码,之前的小节已经将整个打地鼠的实现细节做了详细的分析,整个框架已经搭建完成,下面的代码将整合并完善剩余的代码,从而完成一个完整可玩的打地鼠游戏。,16.3 打地鼠高级,16.3.1 加入击中动画16.3.2 加入随机速度16.3.3 整合代码,16.3.1 加入击中动画,实际玩过示例16-3的读者应该可以发现,随机地鼠出现和被击中消失的过程是完全一样的。本小节中就为击中加入一
21、个消失的动画来增加观赏性。笔者首先想到的一个动画就是逐步消失:在指定位置的地鼠被击中后,亮起的4个LED逐步熄灭。,16.3.2 加入随机速度,可以加入的随机速度有两处:地鼠被击中后出现新地鼠的时间间隔;供玩家击打地鼠的时间。,16.3.3 整合代码,前面两个小节对打地鼠要升级的新功能做了详细介绍,本小节就将之前两章中实现的功能一起整合到我们的高级版打地鼠中。,16.4 打地鼠终极,16.4.1 加入积分系统16.4.2 将分数显示在LED上16.4.3 整合代码,16.4.1 加入积分系统,为打地鼠加入积分系统可以使得打地鼠的娱乐性更上一层楼。但是加入积分系统的代码实现确是非常简单的。我们将要实现的积分规则是打中一个地鼠,则分数加1。,16.4.2 将分数显示在LED上,上面的代码实现了积分系统,而积分需要借助串口监视器显示,这就导致了打地鼠游戏不能完全脱离主机运行。在本节中,就来实现在8*8LED上显示积分。,16.4.3 整合代码,至此,终于要实现我们的终极打地鼠游戏了。本节的内容就是将积分系统整合到之前的高级打地鼠中。但是,整合过程并不是简单地将对应代码复制到一个文件中,虽然大部分确实是复制文件。除了复制文件值为,我们需要额外做的是修改gameOver()函数。,