极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 迷你强

Arduino入门教程--第七课--程序PWM控制LED亮度[呼吸灯]

[复制链接]
发表于 2013-9-7 13:36:03 | 显示全部楼层
我用共阳极接法,共接了五个灯,用FOR循环,娘的为啥最后一个灯,由亮变暗正常,反过来直接跳到最亮,但是我看了论坛里“弘毅”大哥的贴子里直接加值,然后反转的,确五个灯都正常亮暗!吐血中!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-9 09:12:24 | 显示全部楼层
swfzz 发表于 2013-9-7 13:36
我用共阳极接法,共接了五个灯,用FOR循环,娘的为啥最后一个灯,由亮变暗正常,反过来直接跳到最亮,但是我 ...

额....
回复 支持 反对

使用道具 举报

发表于 2013-10-13 16:21:48 | 显示全部楼层
感谢楼主分享,尝试成功了
回复 支持 反对

使用道具 举报

发表于 2013-10-28 10:31:23 | 显示全部楼层
Youth 发表于 2013-1-8 18:47
你好,请问怎么修改PWM的周期呢?

http://www.diy-robots.com/?p=814
这个网页上有具体介绍
回复 支持 反对

使用道具 举报

发表于 2013-12-27 20:00:46 | 显示全部楼层
如果要使用595进行扩展时那呼吸效果又该如何设置呢
回复 支持 反对

使用道具 举报

发表于 2014-2-4 23:00:53 | 显示全部楼层
arduino_ykk 发表于 2013-4-27 23:19
我的实现内容:

int n = 0; // n 从 1 至 255,控制led亮度

高人,这就是C语言的魅力.
回复 支持 反对

使用道具 举报

发表于 2014-4-8 13:47:53 | 显示全部楼层
远古天空 发表于 2012-8-19 12:11
请问强哥,我把这个实验和模拟变阻器实验结合起来,但是程序写在同一个loop里,等呼吸灯循环一次模拟控制灯 ...

用中断函数
回复 支持 反对

使用道具 举报

发表于 2014-5-19 16:38:24 | 显示全部楼层
使用绿灯效果更佳
回复 支持 反对

使用道具 举报

发表于 2014-10-10 21:08:50 | 显示全部楼层
基础,好东西,顶啊!!!!
回复 支持 反对

使用道具 举报

发表于 2014-11-23 10:19:48 | 显示全部楼层
做的真好,学习下
回复 支持 反对

使用道具 举报

发表于 2015-1-23 22:47:53 | 显示全部楼层
强哥,这是我从别人那学到的用三角函数来做呼吸灯的程序。但是灯的变化不均匀要怎么修改呢。(改了半天没成功。。。。。。)
unsigned char t=0;
  void setup() {
   
    pinMode(13, OUTPUT);
  }
  
  
  void loop() {
     
     t++;
    digitalWrite(13, HIGH);  
    delay(25*sin(t*3.14)/180);
    //if(t=70)
    {
      //t=110;
    }   
    digitalWrite(13, LOW);   
    delay(25*(1-sin((t*3.14)/180)));
    if(t>=180)
    {
      t=0;
    }                       
  }
回复 支持 反对

使用道具 举报

发表于 2015-1-24 12:12:19 | 显示全部楼层
请问,图是用什么软件画的
回复 支持 反对

使用道具 举报

发表于 2015-2-4 12:52:27 | 显示全部楼层
云卷云舒 发表于 2015-1-24 12:12
请问,图是用什么软件画的

画图软件是Fritzing
回复 支持 反对

使用道具 举报

发表于 2015-2-4 13:33:13 | 显示全部楼层
本帖最后由 一瞬の空 于 2015-2-4 16:34 编辑

顺着这玩意儿我也写了一个灯{:soso_e113:}

连接


波形图


程序

  1. /*
  2. 作品:RGB共阳LED颜色渐变
  3. 注释:LED共阳,4脚接正极,其他接RGB颜色
  4. 时间:2015.02.03
  5. 作者:一瞬の空
  6. */
  7. const int LED1=3;
  8. const int VCC=4;
  9. const int LED2=5;
  10. const int LED3=6;//定义引脚
  11. float a=0;//计数用,提供函数x轴
  12. int time=5;//延迟时间,单位毫秒,调整变化快慢
  13. int r=0;
  14. int g=0;
  15. int b=0;//三个颜色设定

  16. void setup()
  17. {
  18.   pinMode(LED1,OUTPUT);
  19.   pinMode(LED2,OUTPUT);
  20.   pinMode(LED3,OUTPUT);
  21.   pinMode(VCC,OUTPUT);//定义引脚输入输出模式
  22.   digitalWrite(VCC,HIGH);//3,5,6引脚输出pwm,为了方便,设置4为高电平
  23. }

  24. void loop()
  25. {
  26. &#160;&#160;for(a=0;a<6.28;a=a+0.01)//for循环,格式“for(初始化;条件;运算),此循环用于提供变化的数
  27. &#160;&#160;{
  28. &#160;&#160;&#160;&#160;r=(127.5*(sin(a)+1));
  29. &#160;&#160;&#160;&#160;g=(127.5*(sin(a-2.09)+1));
  30. &#160;&#160;&#160;&#160;b=(127.5*(sin(a+2.09)+1));//r,g,b运算表达式,X轴错开2.09以达到同一时间不同亮度
  31. &#160;&#160;&#160;&#160;/*
  32. &#160;&#160;&#160;&#160;&#160;此处用了三相电公式
  33. &#160;&#160;&#160;&#160;&#160;V1&#160;=&#160;Asin(2πft)=Asin(wt)
  34. &#160;&#160;&#160;&#160;&#160;V2&#160;=&#160;Asin(2πft&#160;-&#160;2π/3)=Asin(wt-2π/3)
  35. &#160;&#160;&#160;&#160;&#160;V3&#160;=&#160;Asin(2πft&#160;+&#160;2π/3)=Asin(wt+2π/3)
  36. &#160;&#160;&#160;&#160;&#160;*/
  37. &#160;&#160;&#160;&#160;analogWrite(LED1,r);
  38. &#160;&#160;&#160;&#160;analogWrite(LED2,g);
  39. &#160;&#160;&#160;&#160;analogWrite(LED3,b);//输出亮度pwm调制波,范围0~255
  40. &#160;&#160;&#160;&#160;delay(time);//延时毫秒,防止运算太快变化不明显
  41. &#160;&#160;}
  42. }

复制代码
视频

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-7-1 19:31:59 | 显示全部楼层
真心不错ff
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 15:04 , Processed in 0.051578 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表