10624浏览
查看: 10624|回复: 10

[进阶] Arduino学习分享帖:好多灯的应用(社区任务第2波)

[复制链接]
              灯            灯灯灯灯灯灯灯灯     
       灯  灯  灯                    灯
            灯                          灯
          灯   灯             灯     灯
        灯       灯                   灯


请问各位坛友在上面看到了什么???    没错,就是灯,而且是好多灯。。它们组成丰富多彩,五颜六色的世界。小到高清显示器,大到霓虹灯,都是由灯组成。。


所以本期任务就是:
你可以制作----带规则的交通灯,变化亮度的呼吸灯,华丽变换的流水灯等。
用多个不同颜色的灯,表达出有趣的灯光效果,附上完成后的效果图片或者视屏,都可以完成本期任务。获得“40学霸特别创造力”。
如果带有连线图和代码,楼主会给予“特别贡献奖励”

以下楼主做得交通灯样例:
Arduino学习分享帖:好多灯的应用(社区任务第2波)图1

左边三个红绿灯,用于车道。右边两个红绿灯,用于人行道。整个运行时间为5秒。

社区活动向导  管理员
 楼主|

发表于 2013-12-31 10:43:08

最近小伙伴们都在忙期末考试,年终总结什么的。。。。楼主就先自娱自乐一下。上面那个样例的连线图和代码如下:
Arduino学习分享帖:好多灯的应用(社区任务第2波)图1

代码如下,相信大家都是代码小神童,一定能看得懂:lol
  1. //项目三 -- 互动交通信号灯
  2. int carRed = 12; //设置汽车灯
  3. int carYellow = 11;
  4. int carGreen = 10;
  5. int button = 9; //按钮引脚
  6. int pedRed = 8; //设置行人灯
  7. int pedGreen = 7;
  8. int crossTime = 5000;//允许行人通过的时间
  9. unsigned long changeTime;//按钮按下后的时间
  10. void setup() {
  11.         //所有LED设置为输出模式
  12.         pinMode(carRed, OUTPUT);
  13.         pinMode(carYellow, OUTPUT);
  14.         pinMode(carGreen, OUTPUT);
  15.         pinMode(pedRed, OUTPUT);
  16.         pinMode(pedGreen, OUTPUT);
  17.         pinMode(button, INPUT); //按钮设置为输入模式
  18.         digitalWrite(carGreen, HIGH); //开始时,汽车灯绿灯
  19.         digitalWrite(pedRed, LOW);  //行人灯为红灯
  20. }
  21. void loop() {
  22.         int state = digitalRead(button);
  23.         //检测按钮是否被按下,并且是否距上次按下后有5秒的等待时间
  24. if(state == HIGH && (millis() - changeTime)> 5000){
  25.           //调用变灯函数
  26.           changeLights();
  27. }
  28. }
  29. void changeLights() {
  30.         digitalWrite(carGreen, LOW); //汽车绿灯灭
  31.         digitalWrite(carYellow, HIGH); //汽车黄灯亮
  32.         delay(2000); //等待2秒
  33.         
  34.         digitalWrite(carYellow, LOW); //汽车黄灯灭
  35.         digitalWrite(carRed, HIGH); //汽车红灯亮
  36.         delay(1000); //为安全考虑等待1秒
  37.         
  38.         digitalWrite(pedRed, LOW); //行人红灯灭
  39.         digitalWrite(pedGreen, HIGH); //行人绿灯亮
  40.         delay(crossTime); //等待一个通过时间
  41.         
  42.         //闪烁行人灯绿灯,提示可过马路时间快到
  43.         for (int x=0; x<10; x++) {
  44.                 digitalWrite(pedGreen, HIGH);
  45.                 delay(250);
  46.                 digitalWrite(pedGreen, LOW);
  47.                 delay(250);
  48. }           
  49.         digitalWrite(pedRed, HIGH);//行人红灯亮
  50.         delay(500);
  51.         digitalWrite(carRed, LOW); //汽车红灯灭
  52.         digitalWrite(carYellow, HIGH); //汽车黄灯亮
  53.         delay(1000);
  54.         digitalWrite(carYellow, LOW); //汽车黄灯灭
  55. digitalWrite(carGreen, HIGH); //汽车绿灯亮
  56.             changeTime = millis(); //记录自上一次灯变化的时间
  57.             //返回到主函数循环中
  58. }
复制代码



回复

使用道具 举报

nemon  中级技匠

发表于 2014-1-2 18:37:58

回答:《analog输出实现拖尾灯效果》
连线图、代码请移步原帖,在https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=1273
效果就是这样的:
Arduino学习分享帖:好多灯的应用(社区任务第2波)图1

垃圾袋降低亮度的方法很屌丝吧?在别的地方学来的:lol

回复

使用道具 举报

nemon  中级技匠

发表于 2014-1-2 19:10:12

社区活动向导 发表于 2013-12-31 10:43
最近小伙伴们都在忙期末考试,年终总结什么的。。。。楼主就先自娱自乐一下。上面那个样例的连线图和代码如 ...

请教下,您的连线图使用什么工具画的?
回复

使用道具 举报

Jane  高级技匠

发表于 2014-1-3 10:32:55

nemon 发表于 2014-1-2 19:10
请教下,您的连线图使用什么工具画的?

用Inkscape画的
回复

使用道具 举报

社区活动向导  管理员
 楼主|

发表于 2014-1-3 10:40:02

用inscape画的,大家用了都说好!:lol
回复

使用道具 举报

nemon  中级技匠

发表于 2014-1-3 11:28:25

社区活动向导 发表于 2014-1-3 10:40
用inscape画的,大家用了都说好!

arduino和led的素材是inscape自带的吗?
回复

使用道具 举报

nemon  中级技匠

发表于 2014-1-3 11:31:07


谢谢告知
请教下
inscape里有各种器件的素材吗?还是要自己收集?
回复

使用道具 举报

Jane  高级技匠

发表于 2014-1-4 15:23:37

nemon 发表于 2014-1-3 11:31
谢谢告知
请教下
inscape里有各种器件的素材吗?还是要自己收集?

这是要自己画的
回复

使用道具 举报

nemon  中级技匠

发表于 2014-1-6 08:47:04

Jane 发表于 2014-1-4 15:23
这是要自己画的

收到。谢谢
回复

使用道具 举报

社区活动向导  管理员
 楼主|

发表于 2014-2-12 16:40:18

已经为发正确回复的客户加上奖励了哦,小伙伴们自己查看一下创造力
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail