本帖最后由 youlikesoilove 于 2017-7-27 10:00 编辑
今天晚些时候上传源代码和总结 写在前边: 我是一个社团的负责人,目前即将大二。具有c语言基础,和一丁点c++基础,曾经使用arduino参加过若干个比赛。也大大小小拿过一定的名次。深知arduino编程开发环境的一些利弊、 组成了一个arduino自学小组(都有C语言基础,稍微薄弱,并无arduino基础),想要在本暑假内带领这个小组将arduino编程的能力提升到一个能够参加比赛的能力,而这其中的自学经验,和arduino编程的痛点,arduino编程思维,arduino目前真实可用的库文件,针对arduino编程环境的自设计实验总结整理下来,能让新一届学弟学妹们能够快速入门arduino。
三个问题: 1、为什么是arduino?
作为一个机械设计制造及其自动化大类的专业,我们面对的比赛的需求arduino的性能就已经足够、而且arduino入手简单,涉及底层寄存器的知识较少(函数封装的很好)。使一个并没有大型项目开发基础的学生更能够使用起来得心用手。
2、arduino究竟需不需要c语言的基础
有人会说arduino教程里边有关于c语言的知识,所以我们并不需要着重的去学习c语言。或者说arduino自带图形化编程操作界面(ardublock)。。或者说有些机器人的比赛人家用的是图形化的上位啊。。blablabla。。。
我想说的是,第一,上位机和图形化编程都有其相应的缺陷,很重要一点就是兼容性不好,你会发现ardublock支持的模块并不能满足我们的需要,你比方说zigbee模块(自组网设计)+lora(远距离传输)。它就不支持,所以说,为了日常项目(大学生比赛)的开发,我们必须采用arduino官方的编程环境,则我们必须要用c/c++的语言去写,所以c语言是必不可少的。而且,对于一个具有c语言基础的程序员来说,入手arduino会更快一些,并且能够看懂官方的库函数(有时候库函数很重要的),而且你的编程思维可能更加成熟,团队协作的意识可能完善、所以建议如果没学过c语言的童鞋们自学一下,那是最好的。
在此强烈推荐《c primer plus》这本书,它是我自学的一本书,强烈建议自学c语言的同学看这本书,虽然这本书很厚,但是这本书讲的很细致,很权威,由浅入深很入门,后面习题也很经典,所以一点一点的看,习题一个一个的做,你绝对能够在一个月内基本形成编程思维和学到很多编程技巧和纠错技巧。
3、arduino好在哪里?又不好在哪里?
- 我们讲,arduino入手简单,是因为对arduino底层函数高度的封装,所以它能够让具有一定c语言的基础的童鞋们能够快速入手。但也是正因为这一点,使我们的同学会渐渐脱离底层的知识,而这正是我们发现官方库、官方实例无法编译后苦恼的原因,因为你不知道如何去修改官方的实例。
- arduino兼容性较好,市面上你能见到的传感器,基本上arduino都能兼容,但是,也有让人头疼的,这个下面讲。
- arduino的库良莠不齐,无法辨别:arduino 编程开发环境在国内外广受欢迎,带来的是更多的实例,更多的库函数,这一点是好事情,但是随之带来的就是诸多的无法编译的问题,就是说,对于一个模块的诸多个库函数版本里你不知道哪个真正能用(因为arduino编程开发环境也在更新,更新就会带来新版本编译器与老版本程序实例的兼容性问题),经常发生的问题就是,你把本模块相对应的实例调出来,发现编译不了或者说是运行发现参数不对。这也是本暑假我们将要解决的问题。
- 最后一点,arduino的性能问题,这个问题我不想做过多的评价,我也看到一些专(砖)家在辩驳这个问题,我想说的是,对于一个不是学自动化,或者电气的学生来说,arduino其实在你的大学生活里已经基本能够满足你的需求了。因为它有入门级设备uno,中端设备mega2560,基于arm芯片的高端设备due,微型设备mini与nano,其中due这块板子值得一提,它的性能肯定能够满足你的需求。
- 值得一提的是,目前我发现的一点arduino的坏处是,它不支持图像处理,翻遍所有的资料都没有找到能够用来处理图像数据的,尽管它的性能达到了(due),所以,将来的一段时间,随着我个人编程能力的提升,我一定要着手去解决这个问题!!!!
ardublock图形化编程环境 arduino官方编程环境
1. 了解arduino支持的所有数据类型和初步了解串口通信 a) 了解arduino的数据类型 b) String 与string 的区别 c) Arduino 数组
实验:使用串口通信将一个数组(和字符串)内的所有单元和该单元所处的位置传输到屏幕上。 例如:3 : h 高级实验:使用指令更改该数组(字符串)内的某个单元,并显示更改,然后再次显示所有单元和该单元所处的位置, 例如: 1:a 2:b 3:d …… Ifyou want to change anyone ,blablabla……
============== Then,you input something. ============== showing
3 : bchange into 3:h
Result 1:a 2:b 3:h …….. 数据类型: int unsigned int long float double boolen char byte String 函数包括:(可能不全) String 类: 1. charAt(n) 2. compareTo(S2) 3. concat(S2) 4. endsWith(S2) 5. equals(S2) 6. equalslgnoreCase(S2) 7. getBytes(buffer,len) 8. indexOf(S) 9. lastindexOf(S) 10. length(S) 11. replace(A,B) 12. setCharAt(index,c) 13. startWith(S2) 14. substring(index) 15. substring(index,to) 16. toCharArray(buffer,len) 17. toInt() 18. toLowerCase() 19. toUpperCase() 20. trim() 21. strcmp()
实验:使用按键模块编一个密码锁程序,密码长度自定,输入错误超过三次锁死,并报警,正确,LED灯亮。
要求:每一个实验使用多种方法来实现,并且,想一想每一个函数都能用来干什么,都要敲一遍,用一次。 搜集全所有的关于数据类型的函数,并形成体系的学习笔记,(使用word记下来用法和参数意思,可以简略记下来,但是一定自己能看懂,晚上总结时间提前到8:30,把今天所有的笔记和实验程序总计形成书面文字)
|