这一节是对LED灯使用进行初步尝试,参照其他教程做如下实验。
一.广告流水灯实验
1.实验器材
- LED灯:6个,颜色自选。
- 220 :6个。
- 面包板一个及跳线若干。
2.实验连线
将6个LED依次序连接到1~6号引脚上,如下图:
3.实验原理
通过LED灯不断的亮度变化,实现流水灯的效果。在实验中我们控制LED灯的亮灭的次序和时间,实现不同的效果。
- style_1()(样式一):LED首先从左边的灯开始间隔200ms依次点亮6个LED灯。然后从最右边LED灯开始间隔200ms依次熄灭6个LED灯。
- flash()(闪烁样式):6个LED灯全部点亮,延时200ms,然后6个灯全部熄灭。循环两次就形成了闪烁的效果。
- style_2()(样式二):先让最中间的两个灯亮,然后让紧挨着它们的另外两个灯亮,最后让两边的两个LED灯亮;然后两边的灯熄灭,接着挨着它们的灯熄灭,最后是最中间的两个灯熄灭。
- style_3()(样式三):让两边的灯亮400ms,然后熄灭;接着让挨着它们的两个LED灯亮400ms,然后熄灭;最后是最中间的两个灯亮400ms之后熄灭…
4.程序代码
//设置控制LED的引脚
int Led1=1;
int Led2=2;
int Led3=3;
int Led4=4;
int Led5=5;
int Led6=6;
void style_1(void)
{
unsigned char j;
for(j=1;j<=6;j++)
{
digitalWrite(j,HIGH);
delay(200);
}
for(j=6;j>=1;j--)
{
digitalWrite(j,LOW);
delay(200);
}
}
void flash(void)
{
unsigned char j,k;
for(k=0;k<=1;k++)
{
for(j=1;j<=6;j++)
digitalWrite(j,HIGH);
delay(200);
for(j=1;j<=6;j++)
digitalWrite(j,LOW);
delay(200);
}
}
void style_2(void)
{
unsigned char j,k;
k=1;
for(j=3;j>=1;j--)
{
digitalWrite(j,HIGH);
digitalWrite(j+k,LOW);
delay(400);
k+=2;
}
k=5;
for(j=1;j<=3;j++)
{
digitalWrite(j,LOW);
digitalWrite(j+k,LOW);
delay(400);
k-=2;
}
}
void style_3(void)
{
unsigned char j,k;
k=5;
for(j=1;j<=3;j++)
{
digitalWrite(j,HIGH);
digitalWrite(j+k,HIGH);
delay(400);
digitalWrite(j,LOW);
digitalWrite(j+k,LOW);
k-=2;
}
k=3;
for(j=2;j>=1;j--)
{
digitalWrite(j,HIGH);
digitalWrite(j+k,HIGH);
delay(400);
digitalWrite(j,LOW);
digitalWrite(j+k,LOW);
k+=2;
}
}
void setup() {
unsigned char i;
for(i=1;i<=6;i++)
pinMode(i,OUTPUT);//设置第i个引脚为输出模式
}
void loop() {
style_1();
flash();
style_2();
flash();
style_3();
flash();
}
5.实验结果
实验结果视频(部分截取了60帧):
二.交通灯设计实验
1.实验器材
- 红色、绿色、黄色LED灯:3个
- 220 :3个
- 面包板跳线若干
- 面包板一个
2.实验连线
3个LED灯依次连接到数字4,7,10引脚上,负极连接到Arduino板的GND引脚,如下图:
3.实验原理
此实验中,主要是对红绿黄灯的亮灭时间间隔进行控制,依次达到交通灯的模拟效果,实际上,交通灯红绿黄灯的相互转换时间间隔在一般情况下是确定的,这就是我们所要达到的实验目的。
4.程序代码
//定义数字引脚4、7、10
int ledred=10;
int ledyellow=7;
int ledgreen=4;
void setup() {
//设置数字接口
pinMode(ledred,OUTPUT);
pinMode(ledyellow,OUTPUT);
pinMode(ledgreen,OUTPUT);
}
void loop() {
digitalWrite(ledred,HIGH);
delay(1000);
digitalWrite(ledred,LOW);
digitalWrite(ledyellow,HIGH);
delay(500);
digitalWrite(ledyellow,LOW);
digitalWrite(ledgreen,HIGH);
delay(1000);
digitalWrite(ledgreen,LOW);
}
5.实验结果
拍摄的视频转换为GIF动图如下:
三.总结
实践处于真知,通过勤动手,会让我们更加熟悉地掌握学习的知识,也会从中发现一些问题,增长自己的动手实践能力。