arduino学习笔记3六灯闪烁实验.docx
- 文档编号:12794425
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:11
- 大小:301.28KB
arduino学习笔记3六灯闪烁实验.docx
《arduino学习笔记3六灯闪烁实验.docx》由会员分享,可在线阅读,更多相关《arduino学习笔记3六灯闪烁实验.docx(11页珍藏版)》请在冰点文库上搜索。
arduino学习笔记3六灯闪烁实验
通过上一节学习,知道了怎样让一个led进行闪烁,下面的实验会对六个led进行控制,先看硬件连接图。
按照上面的硬件连接方法接好后,咱们来测试两段程序,看看其中的差别。
通过这两段程序介绍一下arduino的语言轮廓。
//设置控制Led的数字IO脚
intLed1=1;
intLed2=2;
intLed3=3;
intLed4=4;
intLed5=5;
intLed6=6;
//led灯花样显示样式1子程序
voidstyle_1(void)
{
unsignedcharj;
for(j=1;j<=6;j++)
{
digitalWrite(j,HIGH);
delay(200);
}
for(j=6;j>=1;j--)
{
digitalWrite(j,LOW);
delay(200);
}
}
voidsetup()
{
unsignedchari;
for(i=1;i<=6;i++)//依次设置1~6个数字引脚为输出模式
pinMode(i,OUTPUT);//设置第i个引脚为输出模式
}
voidloop()
{
style_1();//样式1
}
复制代码
上面代码的效果视频如下:
//设置控制Led的数字IO脚
intLed1=1;
intLed2=2;
intLed3=3;
intLed4=4;
intLed5=5;
intLed6=6;
//led灯花样显示样式1子程序
voidstyle_1(void)
{
unsignedcharj;
for(j=1;j<=6;j++)
digitalWrite(j,HIGH);
delay(200);
for(j=6;j>=1;j--)
{
digitalWrite(j,LOW);
delay(200);
}
}
voidsetup()
{
unsignedchari;
for(i=1;i<=6;i++)//依次设置1~6个数字引脚为输出模式
pinMode(i,OUTPUT);//设置第i个引脚为输出模式
}
voidloop()
{
style_1();//样式1
}
复制代码
上面代码的效果视频如下:
通过下载测试,发现第一段程序是led1-6逐个点亮,然后从6-1再逐个熄灭如此循环。
第二段程序是6个灯同时亮,然后再6-1逐个熄灭如此循环。
下面对产生不同效果的代码进行分析。
下面这段代码代表的for语句循环的是,是把j点亮,然后再延迟200毫秒,然后再循环。
形成的效果就是6个灯相隔200毫秒逐步被点亮。
for(j=1;j<=6;j++)
{
digitalWrite(j,HIGH);
delay(200);
}
复制代码
下面这段代码其实是不规范写法,for命令表达要求一定要有{}循环,如果没有标出{},编译时就会自动对下一句加上{}。
如果代码量很大,出问题是查找起来会非常辛苦。
for(j=1;j<=6;j++)
digitalWrite(j,HIGH);
delay(200);
复制代码
正确的写法应该是下面这个样子
for(j=1;j<=6;j++) {
digitalWrite(j,HIGH);
}
delay(200);
复制代码
六个灯逐个被点亮,然后再延时200毫秒进入下一句。
因为六灯逐个点亮的速度非常快,所以看上去像一起亮的。
void(无类型)在arduino中是数据类型的一种,通常用来代表一个事件。
如果控制过程比较简单void一般无需定义,直接使用
voidsetup()
{
//...
}
voidloop()
{
//...
}
复制代码
代表事件的开始与事件的循环。
如果控制过程比较复杂,一般就要设置多个子事件,把复杂的过程进行分解,每一个子事件定义为一个void数据。
把以下代码上传上去,看看led灯是如何工作的。
//设置控制Led的数字IO脚
intLed1=1;
intLed2=2;
intLed3=3;
intLed4=4;
intLed5=5;
intLed6=6;
//led灯花样显示样式1子程序
voidstyle_1(void)
{
unsignedcharj;
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
}
}
//灯闪烁子程序
voidflash(void)
{
unsignedcharj,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子程序
voidstyle_2(void)
{
unsignedcharj,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子程序
voidstyle_3(void)
{
unsignedcharj,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
}
}
voidsetup()
{
unsignedchari;
for(i=1;i<=6;i++)//依次设置1~6个数字引脚为输出模式
pinMode(i,OUTPUT);//设置第i个引脚为输出模式
}
voidloop()
{
style_1();//样式1
flash();//闪烁
style_2();//样式2
flash();//闪烁
style_3();//样式3
flash();//闪烁
}
复制代码
上面这段代码的效果视频如下:
上面的代码分为4个子事件,样式1,样式2,样式3和闪烁。
闪烁:
1-6号灯亮,延时200ms,1-6号灯熄灭,延时200ms。
效果视频如下:
样式1:
1-6号灯逐个点亮,然后6-1逐个熄灭。
效果视频如下:
样式2:
3,4号灯先亮,然后2,5号再亮,最后1,6号两。
接着1,6号灯熄灭,再2,5号熄灭,最后3,4号熄灭。
效果视频如下:
样式三:
3,4号灯亮,然后3,4号熄灭2,5号亮,然后2,5号熄灭1,6号亮,再1,6号熄灭2,5号亮,最后2,5号熄灭3,4号亮。
效果视频如下:
通过以上4种事件的组合,就可以做出来各种效果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arduino学习笔记3 六灯闪烁实验 arduino 学习 笔记 闪烁 实验