8334180 发表于 2014-3-9 13:30:58

Arduino机器人第2课:按钮控制的LED

本帖最后由 8334180 于 2014-5-3 22:45 编辑

专题二“按钮控制的LED”是对专题一的巩固与深化,在学生了解了Arduino的基础知识后,本专题从物理电路的连接上,增加了按钮;从编程上,增加了变量、数字输入和选择结构等内容。
本文主要对本次课的重难点、主要教学设计的设计意图以及学生上课的反应做部分说明。

相关资源下载地址:http://pan.baidu.com/s/1pJ0kk0V 密码:2ebm本课程的讨论地址:https://mc.dfrobot.com.cn/forum-75-1.html
1.连接按钮

这一部分,我们主要是引导学生将按钮接到板子上,这里特别需要提醒的是按钮是接数字口还是模拟口。按钮有两种状态按下与放开,而数字口的值只有0和1,所以教师要引导学生将按钮接的是数字口。在连接时,会发现有的学生忘了线的接法,所以教师还要提醒学生黑线接GND,红线接VCC,第三根线接数字口。此外,我们还要向学生说明我们使用的DFROBOT的按钮按下是LOW(0),放开是HIGH(1),其他厂家的按钮可能不是这样的。
在这一点上,我们对Arduino教育机器人的模块标准制订非常有感触,不同标准对课程的开设带来很多不必要的影响,尤其是DFRobot的V5和V7的板子,在线序上让我们很头疼。

2.初步尝试按钮控制LED——按下亮,放开灭

引导学生我们将要做的第一个尝试,即按钮按下LED亮,放开LED灭。之后我们把程序发给学生,为学生粗略解读程序(包括bool、“=”等),请他们下载观察现象。与预设的情况相反,这样便引出了用“!”来实现。在这里,学生还是比较容易接受的。
Arduino的范例中提供了按钮控制LED的代码。我们之所以没有采用这种形式,主要是希望直接让学生对Arduino的bool变量和数字端口的值结合起来理解。



arduino的范例:我们的范例:
void loop(){
buttonState = digitalRead(buttonPin);if (buttonState == HIGH) {   
    digitalWrite(ledPin, HIGH);
}
else {
    digitalWrite(ledPin, LOW);
}
}void loop() {a=(digitalRead(2));digitalWrite(5,a);}


3.进一步探究按钮控制的LED——按下亮,延时灭

   前面的按钮控制LED比较简单,学生甚至觉得这和在LED接个传统开关没有区别,所以用具体的情境引出延时的概念。这个过程中最重要的是,首先得判断按钮是否按下,自然地引出选择结构(我们用的是if结构),然后延时一段时间,再将LED灭掉。有的学生没有认真听讲,在判断是否按下的时候,条件判断用的是“=”而不是“==”;此外设置完延时之后,并没有将lED 灭掉,导致按下按钮,LED一直亮着。

4.一个按钮控制一个LED——按下亮,再按下灭

这一部分我们分为两个步骤来完成。
第一步,先写代码来判断当按钮按下,就改变Led的状态。
强调的还是先判断按钮是否按下,只有按钮按下的时候才改变LED的状态,提醒学生可引入一个变量k(k=0,LED灭,k=1,LED亮)。当学生发现问题后(控制及其不稳定),然后思考原因,引导他们探究。通过这一探究,让学生深刻体会到Arduino代码中Loop部分是循环执行的。而且Arduino的执行速度非常快!
第二步,引导学生再加入一个变量,记录上一次的状态。
我们提出“按下亮,放开,再按下灭”的思路,引导学生再引入一个记录按钮状态的变量s,这时,控制相对稳定许多。此时,还会有部分学生质疑没达到百分百的稳定,我们向他们提出了拓展任务——按钮的消抖。

5.扩展任务:按钮的消抖

向学生解释抖动现象产生的原理及解决方法(我们采用的是延时),请学生自己尝试。但是由于本课内容量较大,时间已经来不及了,所以拓展任务并没有开展。
从这一课的实践可以看出,高中的学生可以根据学生的编程能力,完成使用变量来实现一个按钮控制一只LED。小学或者初中的学生,估计只能到第四部分的第一步,用延时完成就差不多了。下一周我们将开始初中的教学实践了。

收获:

学生在课间做了一些其他的创意尝试,如有的学生设计了“按钮按下一个亮,再按下这个灭,另外两个亮”,“按钮按下一个亮,再按下两个亮,再按下三个亮”等,让我们很是欣喜的。



tutorials

丄帝De咗臂 发表于 2014-4-20 19:40:48

沙发,哈哈,加油

华仔 发表于 2016-7-23 00:18:56

版主你的网盘不能下载东西了

bboybb 发表于 2017-1-12 09:06:57

如有电路连接图就更好了
页: [1]
查看完整版本: Arduino机器人第2课:按钮控制的LED