加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用触摸传感器控制LED灯的不同算法比较

(2012-05-03 10:51:17)
标签:

arduino

ardublock

教育

分类: Arduino系列

    《基于arduino的机器人教育研究》项目开始进入正常的研究工作了。这个学期的计划是用arduino做出各种范例,由我和几位研究生去做。4-5月份的主要任务是做单传感器的小范例,6月份做。算起来,我们已经做了五六个专题,每个专题分为3-5个的小项目,由浅入深,如声控灯、光控灯之类。

    用触摸传感器控制LED灯本来是很简单的应用,在机器人课程中是一个入门级的实验。我让温大的研究生去做这个范例。结果发现哪怕是最简单的应用,实现的算法也是丰富多彩的。当然,从小学和初中学生的角度出发,我们总要设计最简单,最容易理解的算法。于是将不同的算法罗列如下,做一次比较:

项目描述:

       接触触摸传感器后移开,灯亮;再触摸一下移开,灯灭;

材料列表:

序号

名称

数量

备注

1

Arduino uno

1

 

2

传感器扩展板

1

 

3

触摸传感器

1

 

4

LED灯

1

 

制作过程:

1、  将主板、传感器扩展板依次插好;

2、  将LED模块插入传感器扩展版的4端口;

3、  将触摸传感器插入传感器扩展板的7端口。

实现代码1:

http://s7/middle/6611ddcfgbf1909dd0c66&690
实现代码2:

http://s11/middle/6611ddcfgbf190efc4e9a&690

实现代码3:

http://s14/middle/6611ddcfgbf190ffc071d&690

    毫无疑问,三种代码中,第二种代码最简单。但是如果一直触摸着传感器,或者接触的时间较长,led灯就会重复开和关的动作,一直在闪烁,所以加上了延时功能来弥补,但总不是最佳的解决方案。第一种代码和第三种都采用了记录上次的传感器状态,通过比较来判断是否长时间接触,避免了led灯闪烁的弊端,但实现的方式各不相同。第一种代码用“1-state(逻辑变量)”的方式,达到真、假值的交替变换;而第三种代码用记录接触次数,判断接触次数是奇次还是偶次的方式,控制led的开和关。很难说,这两种算法哪种更好。但从我对小学生的教学经历来看,第三种会容易理解。如果对象是初中或者高中生,似乎没有必要去深究了。

 

注:文中采用的代码是用ArduBlock编写,限于篇幅,略去了C代码。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有