swfzz 发表于 2013-9-7 13:36:03

我用共阳极接法,共接了五个灯,用FOR循环,娘的为啥最后一个灯,由亮变暗正常,反过来直接跳到最亮,但是我看了论坛里“弘毅”大哥的贴子里直接加值,然后反转的,确五个灯都正常亮暗!吐血中!

迷你强 发表于 2013-9-9 09:12:24

swfzz 发表于 2013-9-7 13:36 static/image/common/back.gif
我用共阳极接法,共接了五个灯,用FOR循环,娘的为啥最后一个灯,由亮变暗正常,反过来直接跳到最亮,但是我 ...

额....

zhaopengxslc 发表于 2013-10-13 16:21:48

感谢楼主分享,尝试成功了

AlfredLanning 发表于 2013-10-28 10:31:23

Youth 发表于 2013-1-8 18:47 static/image/common/back.gif
你好,请问怎么修改PWM的周期呢?

http://www.diy-robots.com/?p=814
这个网页上有具体介绍

ywg0354 发表于 2013-12-27 20:00:46

如果要使用595进行扩展时那呼吸效果又该如何设置呢

sinaydj2 发表于 2014-2-4 23:00:53

arduino_ykk 发表于 2013-4-27 23:19 static/image/common/back.gif
我的实现内容:

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


高人,这就是C语言的魅力.

R偉々 发表于 2014-4-8 13:47:53

远古天空 发表于 2012-8-19 12:11 static/image/common/back.gif
请问强哥,我把这个实验和模拟变阻器实验结合起来,但是程序写在同一个loop里,等呼吸灯循环一次模拟控制灯 ...

用中断函数

千里者 发表于 2014-5-19 16:38:24

使用绿灯效果更佳

Black7 发表于 2014-10-10 21:08:50

基础,好东西,顶啊!!!!

1090805647 发表于 2014-11-23 10:19:48

做的真好,学习下

Valyrian 发表于 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 static/image/common/back.gif
请问,图是用什么软件画的

画图软件是Fritzing

一瞬の空 发表于 2015-2-4 13:33:13

本帖最后由 一瞬の空 于 2015-2-4 16:34 编辑

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

连接


波形图


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

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

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

视频
http://v.youku.com/v_show/id_XODg2Mzc0MzY0.html

tomylver 发表于 2015-7-1 19:31:59

真心不错ff
页: 1 [2] 3
查看完整版本: Arduino入门教程--第七课--程序PWM控制LED亮度[呼吸灯]