9859| 0
|
[Arduino技术课程(高中)] 第五课子程序的使用——广告灯模型实验 |
子程序的使用——广告灯模型实验 作者:陈杰 教学目标 知识与技能: 1. 使用电阻、LED灯等元件制作广告灯模型。 2. 广告灯模型实验物理电路的正确连接。 3. 掌握子程序的用法。 过程与方法: 1. 教师讲解,广告灯功能原理及正确连线。 2. 动手实验,正确连接物理电路,烧录程序。 3. 测试程序,查看实验结果。 情感态度价值观: 修改程序,让广告灯按你的想法来执行。 教学重点: 依据功能组建广告灯模型电路,正确连接电路。 了解并掌握Arduino IDE程序结构,学会使用子程序。 教学难点: 子程序的定义与使用。 实验器材: DFRobotArduino入门套件、Arduino ide 1.04 【教学过程】 1.情景引入 教师展示广告灯图或视频。 本课所需器材为:控制板、面包板、220欧姆电阻、杜邦线、Led(红、黄、绿)。生:学生准备相关器材。设计意图:案例引入,原理介绍,准备新实验器材。 2.新知讲授今天实验的器材全是我们之前已经用过的,这次实验主要是让大家再一次熟练使用Led的使用,更主要的是想让大家自己来设计创造出更多样式的亮灯效果。(1.)实验原理在生活中我们经常会看到一些由各种颜色的Led灯组成的广告灯,广告灯上各个位置上的Led灯开断亮灭的变化,就形成各种不同的效果。本节实验就是利用led灯编程模拟广告灯的效果。在程序中我们设置Led灯亮灭的次序和时间,这样就可以组成不同的效果。具体功能:广告灯程序功能:样式1执行——闪烁——样式2执行——闪烁——样式3执行——闪烁。样式一子程序:Led首先从左边的绿灯开始间隔200ms依次点亮六个Led灯,接着从右边的绿灯开始间隔200ms依次熄灭六个Led灯。灯闪烁子程序:六个Led灯首先全部点亮,接着延时200ms,最后六个Led灯全部熄灭,这个过程循环两次就实现了闪烁的效果。样式二子程序设置k和j的值让中间的两个黄灯亮先亮,接着让挨着两个黄灯两边的红灯亮,最后让两边的绿灯亮;执行一遍后改发k和j的值让两边的绿灯先熄灭,接着两边的红灯熄灭,最后中间的两个黄灯熄灭。样式三子程序:设置k和j的值,让两边的绿灯亮400ms后再熄灭,接着让两边的红灯亮400ms后再熄灭,最后让中间的两个黄灯亮400ms后再熄灭;执行一遍后改发k和j的值让两个红灯亮400ms后熄灭,接着让两边的绿灯亮400ms后熄灭。 (2.)连接电路按照前面学习的方法将板子和数据线连好。然后按照LED接线方法,将六个LED灯依次接到数字1—6引脚上。如下图: 设计意图:介绍Arduino物理电路连接,为后面正确实验效果奠定基础。 (3.)烧录程序//设置控制Led癿数字IO脚 int Led1 = 1; int Led2 = 2; int Led3 = 3; int Led4 = 4; int Led5 = 5; int Led6 = 6; void loop() { style_1();//样式1 flash();//闪烁 style_2();//样式2 flash();//闪烁 style_3();//样式3 flash();//闪烁}//led灯花样显示样式1子程序 void style_1(void) { unsigned char j; for(j=1;j<=6;j++)//每隔200ms依次点亮1~6引脚相连癿led灯 { digitalWrite(j,HIGH);//点亮j引脚相连癿led灯 delay(200);//延时200ms } for(j=6;j>=1;j--)//每隔200ms依次熄灭6~1引脚相连癿led灯 { digitalWrite(j,LOW);//熄灭j引脚相连癿led灯 delay(200);//延时200ms } } //灯闪烁子程序 void flash(void) { unsigned char j,k; for(k=0;k<=1;k++)//闪烁两次{for(j=1;j<=6;j++)//点亮1~6引脚相连癿led灯digitalWrite(j,HIGH);//点亮不j引脚相连癿led灯 delay(200);//延时200ms for(j=1;j<=6;j++)//熄灭1~6引脚相连癿led灯 digitalWrite(j,LOW);//熄灭不j引脚相连癿led灯 delay(200);//延时200ms } } //led灯花样显示样式2子程序 void style_2(void) { unsigned char j,k; k=1;//设置k癿刜值为1 for(j=3;j>=1;j--) { digitalWrite(j,HIGH);//点亮灯 digitalWrite(j+k,HIGH);//点亮灯 delay(400);//延时400ms k +=2;//k值加2 } k=5;//设置k值为5 for(j=1;j<=3;j++) { digitalWrite(j,LOW);//熄灭灯 digitalWrite(j+k,LOW);//熄灭灯 delay(400);//延时400ms k -=2;//k值减2 } } //led灯花样显示样式3子程序 void style_3(void) { unsigned char j,k;//led灯花样显示样式3子程序 k=5;//设置k值为5 for(j=1;j<=3;j++) { digitalWrite(j,HIGH);//点亮灯 digitalWrite(j+k,HIGH);//点亮灯 delay(400);//延时400ms digitalWrite(j,LOW);//熄灭灯 digitalWrite(j+k,LOW);//熄灭灯 k -=2;//k值减2 } k=3;//设置k值为3 for(j=2;j>=1;j--) { digitalWrite(j,HIGH);//点亮灯 digitalWrite(j+k,HIGH);//点亮灯 delay(400);//延时400ms digitalWrite(j,LOW);//熄灭灯 digitalWrite(j+k,LOW);//熄灭灯 k +=2;//k值加2 } } void setup() { unsigned char i; for(i=1;i<=6;i++)//依次设置1~6个数字引脚为辒出模式 pinMode(i,OUTPUT);//设置第i个引脚为辒出模式 } 将上述代码复制到Ide窗口中,先编译,如果无误后,再上传烧录至控制板中。如上图所示,完成后可以测试实验结果。 (4.)代码学习本次实验中,代码的编写首次使用到了子程序,通过代码大家可以看到:在一个程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把这些重复的程序段单独列出,并按一定的格式编写成子程序。主程序在执行过程中如果需要某一子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。for循环。它的一般形式为:for(<初 始化>;<条件表达式>;<增量>) 语句;初始化总是一个赋值语句, 它用来给循环控制发量赋初值;条件表达式是一个关系表达式, 它决定什么时候退出循环;增量定义循环控制发量每循环一次后 按什么方式发化。这三个部分之间用“;”分开。 例如: for(i=1; i<=10; i++) 语句; 上例中先给 “ i ”赋刜值1, 判断 “ i ”是否小于等于10, 若是则执行语句, 之后值增 加1。再重新判断, 直到条件为假, 即i>10时, 结束循环。 三.课堂练习师:今天程序你看懂了吗?如果看懂了,请为设计一个方案,让灯按照你的想法闪烁。复习巩固本课学习知识,定义你设计的闪灯方案为一个子程序,构建一个新的广告灯效果。 四.学习总结正确连接电路,掌握子程序的用法。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed