Arduino学习分享帖:好多灯的应用(社区任务第2波)
2013-12-301.9万
AI 快速预览详细
本帖介绍了如何使用Arduino控制多颗灯,实现多种灯光效果。你可以制作带规则的交通灯、变化亮度的呼吸灯或华丽变换的流水灯等。通过不同颜色和亮度的变化,可以创造出有趣的视觉效果。附上完成后的效果图片或视频,还可以获得“40学霸特别创造力”奖励。如果带有连线图和代码,楼主会给予“特别贡献奖励”。
|
灯 灯灯灯灯灯灯灯灯 灯 灯 灯 灯 灯 灯 灯 灯 灯 灯 灯 灯 灯 请问各位坛友在上面看到了什么??? 没错,就是灯,而且是好多灯。。它们组成丰富多彩,五颜六色的世界。小到高清显示器,大到霓虹灯,都是由灯组成。。 所以本期任务就是:多颗灯的组合应用 你可以制作----带规则的交通灯,变化亮度的呼吸灯,华丽变换的流水灯等。 用多个不同颜色的灯,表达出有趣的灯光效果,附上完成后的效果图片或者视屏,都可以完成本期任务。获得“40学霸特别创造力”。 如果带有连线图和代码,楼主会给予“特别贡献奖励”。 以下楼主做得交通灯样例: ![]() 左边三个红绿灯,用于车道。右边两个红绿灯,用于人行道。整个运行时间为5秒。 |





连线图、代码请移步原帖,在https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=1273
效果就是这样的:
垃圾袋降低亮度的方法很屌丝吧?在别的地方学来的:lol
代码如下,相信大家都是代码小神童,一定能看得懂:lol
[code]//项目三 -- 互动交通信号灯
int carRed = 12; //设置汽车灯
int carYellow = 11;
int carGreen = 10;
int button = 9; //按钮引脚
int pedRed = 8; //设置行人灯
int pedGreen = 7;
int crossTime = 5000;//允许行人通过的时间
unsigned long changeTime;//按钮按下后的时间
void setup() {
//所有LED设置为输出模式
pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(button, INPUT); //按钮设置为输入模式
digitalWrite(carGreen, HIGH); //开始时,汽车灯绿灯
digitalWrite(pedRed, LOW); //行人灯为红灯
}
void loop() {
int state = digitalRead(button);
//检测按钮是否被按下,并且是否距上次按下后有5秒的等待时间
if(state == HIGH && (millis() - changeTime)> 5000){
//调用变灯函数
changeLights();
}
}
void changeLights() {
digitalWrite(carGreen, LOW); //汽车绿灯灭
digitalWrite(carYellow, HIGH); //汽车黄灯亮
delay(2000); //等待2秒
digitalWrite(carYellow, LOW); //汽车黄灯灭
digitalWrite(carRed, HIGH); //汽车红灯亮
delay(1000); //为安全考虑等待1秒
digitalWrite(pedRed, LOW); //行人红灯灭
digitalWrite(pedGreen, HIGH); //行人绿灯亮
delay(crossTime); //等待一个通过时间
//闪烁行人灯绿灯,提示可过马路时间快到
for (int x=0; x<10; x++) {
digitalWrite(pedGreen, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
delay(250);
}
digitalWrite(pedRed, HIGH);//行人红灯亮
delay(500);
digitalWrite(carRed, LOW); //汽车红灯灭
digitalWrite(carYellow, HIGH); //汽车黄灯亮
delay(1000);
digitalWrite(carYellow, LOW); //汽车黄灯灭
digitalWrite(carGreen, HIGH); //汽车绿灯亮
changeTime = millis(); //记录自上一次灯变化的时间
//返回到主函数循环中
}[/code]