单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:9709|回复:10

Arduino做一个三色LED的呼吸灯

[复制链接]
ID:302494发表于 2018-12-6 07:54|显示全部楼层
本菜鸟以前玩51单片机的,刚刚接触Arduino,写了一个三色LED呼吸灯做测试,学习分享。
代码如下:
void setup() {
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
}

void loop() {
   char group[3]={11,10,9};
   for (char j=0;j<=2;j++)
   {
   switch(group[j])
   {
     case 11:
           Serial.println("红色渐变!");
           break;
     case 10:
           Serial.println("蓝色渐变!");
           break;
     case 9:
           Serial.println("绿色渐变!");
           break;
     }
   for(char i = 0;i<=100;i++)
   {
     analogWrite(group[j],i);
     delay(20);

     }
     for(char i = 100;i>=0;i--)
   {
     analogWrite(group[j],i);
     delay(20);

     }
   }
}

评分

黑币 +53
收起理由
+ 3
共享资料的黑币奖励!
+ 50
共享资料的黑币奖励!

查看全部评分

ID:452731发表于 2019-1-20 23:08|显示全部楼层
这个思想延续的单片机的思想,很有参考价值
ID:471632发表于 2019-4-1 09:31|显示全部楼层
测试感觉不是很好,等就没有呼吸效果
ID:471632发表于 2019-4-1 09:43|显示全部楼层
找到原因了,我的是共阳三色管
ID:471632发表于 2019-4-1 10:10|显示全部楼层
完全按照楼主的思路做的,但循环执行,只有11脚,其余的不执行,不知为什么,其它颜色不执行
ID:471632发表于 2019-4-1 13:04|显示全部楼层
我实际测试了一下,感觉这个程序一直在
ID:471632发表于 2019-4-1 13:05|显示全部楼层
程序一直在这段里面不断重复,不能变色是什么原因?
for(char i = 0;i<=100;i++)
   {
     analogWrite(group[j],i);
     delay(20);

     }
     for(char i = 100;i>=0;i--)
   {
     analogWrite(group[j],i);
     delay(20);
不能变色是什么原因?
ID:471632发表于 2019-4-3 09:23|显示全部楼层
本帖最后由 tigerzq 于 2019-4-3 10:38 编辑

重新思考了一下,按照楼主的程序稍微改动,能达到运行要求,还有问题不知出现在哪里,有高手解答一下吗?
void setup() {
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
analogWrite(9,255);//关闭led
analogWrite(10,255);
analogWrite(11,255);
}

void loop() {
   char group[3]={11,10,9};
   for (char j=0;j<=2;j++)
   {
   switch(group[j])
   {
     case 11:
           Serial.println("红色渐变!");
           break;
     case 10:
           Serial.println("蓝色渐变!");
           break;
     case 9:
           Serial.println("绿色渐变!");
           break;
     }
   for(int i =255 ;i>=100;i--)  //共阳极接法,变量改为int运行正常,char好像不行,不知道为啥
   {
     analogWrite(group[j],i);
     delay(50);
     }
     for(int i = 100;i<=255;i++)
   {
     analogWrite(group[j],i);
     delay(50);

     }
     analogWrite(group[j],255);//关闭led,避免对其它颜色造成干扰
   }
}
另外,我想在程序运行时查看变量i,如何能实现呢?
ID:471632发表于 2022-3-7 11:23|显示全部楼层
这个能不能随机产生颜色,随机产生呼吸灯的效果呢?
ID:138707发表于 2022-3-8 14:47|显示全部楼层
这个能不能随机产生颜色,随机产生呼吸灯的效果呢?
ID:138707发表于 2023-7-29 18:43|显示全部楼层
这个能不能随机产生颜色,随机产生呼吸灯的效果呢?

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网