《Arduino技术及应用》课件—第7章-使用arduino类库

上传人:sat****105 文档编号:290120340 上传时间:2022-05-09 格式:PPTX 页数:46 大小:2.09MB
返回 下载 相关 举报
《Arduino技术及应用》课件—第7章-使用arduino类库_第1页
第1页 / 共46页
《Arduino技术及应用》课件—第7章-使用arduino类库_第2页
第2页 / 共46页
《Arduino技术及应用》课件—第7章-使用arduino类库_第3页
第3页 / 共46页
《Arduino技术及应用》课件—第7章-使用arduino类库_第4页
第4页 / 共46页
《Arduino技术及应用》课件—第7章-使用arduino类库_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《《Arduino技术及应用》课件—第7章-使用arduino类库》由会员分享,可在线阅读,更多相关《《Arduino技术及应用》课件—第7章-使用arduino类库(46页珍藏版)》请在金锄头文库上搜索。

1、Arduino技术及应用第第7 7章章 使用使用arduinoarduino类库类库目录安装Eclipse和Arduino插件1在ADE中使用类库4从一个sketch开始2从pop面向过程到oop面向对象3目录本章小结6在Eclipse中使用类库57.1 安装Eclipse和Arduino插件 eclipse.baeyens.it开发中的Arduino Eclipse插件,能快速将eclipse打造为Arduino的开发平台。 ADE(Arduino“官方”标准开发环境)的串口助手是很弱的。因为只能传递可见字符数据,没法任意发送0-255的单字节数据。所以这个集成的Serial Monitor

2、还是比较好用的。使用 Arduino Eclipse 插件,在eclipse上进行开发的Arduino程序,同样能方便地移植到ADE上,在开源社区分享,也没有问题。而开发效率、编译速度、下载速度都将大幅提升。7.1 安装Eclipse和Arduino插件7.1 安装Eclipse和Arduino插件 插件官方安装向导,英文很简单,英文不太熟悉的朋友,配合字典就能搞定。现在主要是安装带有CDT(C/C+ Development Kit)的eclipse就是了。如果之前已经在用eclipse进行 Java、Ruby或其它开发的朋友,并不需要重新下载,直接安装CDT插件就是了,毕竟Arduino用的

3、是C+。使用Arduino插件进行开发,并不需要提前安装AVR插件,感觉是已经被Arduino插件集成了,所以安装配置就更简单许多。 有兴趣的可以上网查看一篇安装Eclipse 3.7 Indigo学习Java的blog,里面提到了汉化如何进行,在那个基础上,安装CDT插件就能直接用来开发7.1 安装Eclipse和Arduino插件Arduino了。不过一个eclipse里面一下运行太多插件,对速度还是有影响的。为Arduino更进一步开发,有兴趣的可以查看eclipse:Eclipse 3.7 Indigo + CDT+Arduino Plugin+Subclipse。Eclipse是绿色

4、软件,复制一份原始的安装包就好了。其中Subclipse用于版本控制以及在Google code进行代码托管,非常方便。7.2 从一个sketch开始 在安装及配置好Arduino Eclipse插件之后:(1)新建一个工作空间,例如,“H:workspacemyArduinoLibs”。7.2 从一个sketch开始(2)新建一个sketch,例如,“MorseTest”7.2 从一个sketch开始 在项目管理器窗口/工作空间目录下。会出现2个文件夹。其中一个所选用的Arduino平台型号命名,作为Arduino Core,里面大致的内容就是与该板参数相匹配的Arduino核心库。每次使用

5、一个新的工作空间,这个Arduino Core文件夹都会被新建。但如果再次基础上,添加一个基于同样Arduino平台的Sketch时,不会重复新建core文件夹,它为自动在工作空间内共享(当然,如果不是很有把握,最好也别去改它)。如果后来在同一工作空间下,使用不同的 Arduino 平台开发,将会新建一个新平台的Core文件夹。7.2 从一个sketch开始(3)构建Core(不过并不必要):点击Core文件夹,“Arduino_UNO”,后点击工具栏的小锤子图标。(4)构建sketch,点击 Sketch文件夹“MorseTest”,后点击工具栏的小锤子图标。7.2 从一个sketch开始如

6、果跳过了刚才的第3步,那么此刻编译器也会先构建Core,再构建 Sketch。注:构建,Build,Make,就是编译、链接的意思。如果光点击程序文件,可能构建不出什么东西,还是要选择工程文件夹,再进行构建。因为一次构建的是整个Project。7.2 从一个sketch开始 如果插件安装正确的话,此处的构建,应该没什么问题,也就是说编译、链接都应该没问题,毕竟现在什么代码都没输入进去。 不过值得注意的是,在使用目前的Arduino Core的过程中,可能会出现编译后带有警告的情况。这些或许是ADE内部自动隐藏或是降低了警告级别造成的。不必担心,程序一般情况下依然是可以运行的。相信随着Ardui

7、no底层库的不断完善,这些警告都会慢慢消失的。在我个人的实践中,基本都要加上“extern HardwareSerial Serial;”这句声明,才能正常使用串口对象,感觉内建的Serial实例,是以类似全局变量的形式保存,而在调用的时候,是要声明一下。但是在7.2 从一个sketch开始ADE中插入这句声明,也不会影响编译。所以,就放心地加进去。至少从ANSI的标准来看,代码是规范了不少。(5)建议此时,可以通过点击工具栏的“AVR”按钮,将这个空的Sketch下载(中文习惯都是说“下载”,就像“XX下载器”,而英文版本里面偏偏都是用上传“Upload”,比较无语)到Arduino的板子上

8、,测试连接通讯是否正常。这里,可以理解为和ADE一样,编译和下载是分开的。但是ADE里面,下载还包含了编译,而且编译得很慢。Eclipse里面,这两个步骤是完全独立的,所以,一次次点击“下载”,可能下载的都是老文件,如果忘记重新编译的话。新手要注意这一点。7.2 从一个sketch开始(6)将librayTutorial里的代码拷贝“MorseTest.cpp”。头文件“MorseTest.h”就不用去动它了,不需要对其进行任何编辑。/ Do not remove the include below#include MorseTest.hvoid dot( );void dash( );int

9、 pin = 13;/The setup function is called once at startup of the sketchvoid setup( ) / Add your initialization code here7.2 从一个sketch开始 pinMode(pin, OUTPUT);/ The loop function is called in an endless loopvoid loop( ) /Add your repeated code here dot( ); dot( ); dot( ); dash( ); dash( ); dash( ) ; dot

10、( ); dot( ); dot( ) ; delay(3000);void dot( )7.2 从一个sketch开始 digitalWrite(pin, HIGH); delay(250); digitalWrite(pin, LOW); delay(250);void dash( ) digitalWrite(pin, HIGH); delay(1000); digitalWrite(pin, LOW); delay(250);7.2 从一个sketch开始 此处较例程添加了dot( )和dash( )的声明,相信有C/C+编程经验的朋友都知道是为什么。因为这2个函数,都放置在loop(

11、 )函数后,而Eclipse里面的GNU/ GCC编译器是对于规范要求比较严格的,要么放在loop( )之前,要么加声明,否则就是无法编译通过。ADE则相对宽松一些,感觉怎么写都行,ADE优化过的编译器会自动弥补这些问题,让规则显得更加宽松。但作为严谨的C/C+开发人员来说,遵守严谨的规则,对于保证程序正确运行、排错,是相当重要的,而且一般都比较都已经是习惯了。同样,在ADE中添加声明,也同样不会影响到编译。7.2 从一个sketch开始 现在就可以开始体验到Eclipse的强悍之处了:1)“Tab”键可以正常反应了,ADE中竟然直接用2个空格替代,真是要吐槽一下。而且 Shift+Tab 也

12、能用了,调整缩进好很多。2)各种代码高亮。3)Ctrl+Shift+F进行自动排版。排版的样式,可以在Preferences C/C+ Formatter里面自定义,根据个人喜好进行设置自己喜欢的样式。4)Alt+/ 进行自动补齐,默认情况下,按“.”也会有完整的提示框弹出。5)实时的错误及警告提示,有的时候倒也不必惊慌,或许重新Make一下,就消失了。 7.2 从一个sketch开始6)Ctrl+左键单击,查看引用,查看Arduino库变得非常轻松,可以不用几个文档翻来倒去了。7)构建并下载,都没错的话,应该可以看到Arduino上Pin13的LED开始发出“三短三长三短”的SOS信号了。7

13、.3从pop面向过程到oop面向对象(1)在Sketch项目内为类库library新建一个文件夹,本例中,命名为“Morse”。7.3从pop面向过程到oop面向对象(2)在这个类库文件夹中新建一个类。 会同时建立2个文件.h的头文件和.cpp的源文件。什么代码都还没写,eclipse已经把函数的框架都搭起来了。7.3从pop面向过程到oop面向对象7.3从pop面向过程到oop面向对象(3)在类头文件“Morse.h”中,包含引用“Arduino.h” 除非是建一个纯C+的类,或者是应用逻辑层的类,否则如果涉及到Arduino的底层硬件操作,一般也就是引用“Arduino.h”这个头文件就好

14、了,对于IO设置,位运算都有现成的函数可用。而且作为一个Arduino的sketch,不管怎么样都会包含这个头文件的,类库中就包含一下,也不会对最终sketch的文件大小会有什么影响。而且一个“Arduino.h”似乎就包含了所有可能会用到Arduino函数库,很方便。写类,自然还是要学习一下C+的编程(学C+和学VC是2个概念)。不过大体上,可以想象成在写一个没有setup( )和loop( )的sketch。7.3从pop面向过程到oop面向对象(4)写类 如librayTutorial所示,Morse.h:#ifndef MORSE_H_#define MORSE_H_#include

15、Arduino.hclass Morse public: Morse(int pin); virtual Morse( ); void dot( ); void dash( ); private: int _pin;#endif7.3从pop面向过程到oop面向对象Morse.cpp:#include Morse.hMorse:Morse(int pin) / TODO Auto-generated constructor stub _pin = pin; pinMode(_pin, OUTPUT);Morse:Morse( ) / TODO Auto-generated destructor

16、 stubvoid Morse:dot( ) digitalWrite(_pin, HIGH);7.3从pop面向过程到oop面向对象 delay(250); digitalWrite(_pin, LOW); delay(250);void Morse:dash( ) digitalWrite(_pin, HIGH); delay(1000); digitalWrite(_pin, LOW); delay(250); 例程里的代码,和Eclipse的代码的主要不同之处,在于在eclipse这边过了一个虚析构函数。这在C+程序里面是非常常见的,类可以继续得到继承,是规范的写法。相信虽然ADE的这个例程没这个东西,但是也会欣然接受这种能把类定义更加完整的做法。7.3从pop面向过程到oop面向对象7.3从pop面向过程到oop面向对象 这样,一个最简单的Morse类库就写好了。使用面向对象编程新建类,不单单可以用在编写类库,更应该用在进行应用类,或者说实现中间层逻辑类的开发,也同样适用。这样,就能把传统的面向过程的编程,转变为面向对象的编程。对于玩嵌入式底层开发的朋友来说,可能会感觉这样损

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号