【Arduino】Arduino花样流水灯源码

最近在研究arduino驱动LED灯,知道了WS2812这种灯带,上网查资料的时候发现有两个专业名词和它很像,于是特地花时间了解了一下。

WS2811内置IC幻彩灯条与WS2812幻彩灯条均指的是同一款;

WS2812与WS2811不同点:

  1、WS2812 IC封装在灯珠内部;

  2、WS2811 IC是独立的;

WS2812与WS2811相同点:

  1、均是采用WS2811协议;两款IC的协议通用;做的效果也通用;

 

参考资料:

https://jingyan.baidu.com/article/495ba8410feb4d38b30ede1b.html

https://www.docin.com/p-1758991243.html

https://wenku.baidu.com/view/b18fbd6bddccda38376bafbd.html

https://wenku.baidu.com/view/76a0294580eb6294dc886c4d.html

参考代码:

/************************************************************************
使用开发板型号:Arduino UNO R3
单片机晶振频率:16MHz
本列使用元器件:8个LED,8个220R电阻
电路的连接说明:LED结成阴极
************************************************************************/
/*********通过下载测试,全部代码分为 4个子事件:*****************
              样式 1,样式 2,样式 3和闪烁: 
样式 1: 1-8号灯逐个点亮,然后 8-1逐个熄灭。
        闪烁两次
样式 2:4,5号灯先亮,然后3,6号再亮,接着2,7号亮,最后1,8号亮。
        1,8号灯先灭,然后2,7号熄灭,接着3,6号灭,最后4,5号灭。
        闪烁两次
样式 3:1,8号灯先亮,然后1,8号熄灭, 接着2,7号亮,然后2,7号熄灭
        接着3,6号亮,然后3,6号熄灭, 接着4,5号亮,然后4,5号熄灭。
闪  烁:1-8号灯亮,延时 200ms,1-8号灯熄灭,延时200ms,闪烁两次。
****************************************************************/ 
//设置控制Led 的数字IO脚 
int Led1 = 1; 
int Led2 = 2; 
int Led3 = 3; 
int Led4 = 4; 
int Led5 = 5; 
int Led6 = 6;
int Led7 = 7; 
int Led8 = 8;
#define uchar unsigned char
//led 灯花样显示样式1子程序 
void style_1(void)
{
  uchar j;
  for(j=1;j<=8;j++)//每隔200ms依次点亮1~8引脚相连的led灯
  {
    digitalWrite(j,HIGH);//点亮j引脚相连的led 灯
    delay(200);//延时200ms
   }
    for(j=8;j>=1;j--)//每隔200ms依次熄灭8~1引脚相连的led灯
    { 
      digitalWrite(j,LOW);//熄灭j引脚相连的led 灯 
      delay(200);//延时200ms 
     }  
  } 
//灯闪烁子程序 
void flash(void) 
{    
   uchar j,k; 
   for(k=0;k<=1;k++)//闪烁两次 
   { 
     for(j=1;j<=8;j++)//点亮1~8引脚相连的led灯 
     digitalWrite(j,HIGH);//点亮与j引脚相连的led灯 
     delay(200);//延时200ms 
     for(j=1;j<=8;j++)//熄灭1~8引脚相连的led灯 
     digitalWrite(j,LOW);//熄灭与j引脚相连的led灯 
     delay(200);//延时200ms 
   } 
} 
//led 灯花样显示样式2子程序 
void style_2(void) 
{ 
     uchar j,k;
     k=1;//设置k的初值为1
     for(j=4;j>=1;j--)//
     {
       digitalWrite(j,HIGH);//点亮灯
       digitalWrite(j+k,HIGH);//点亮灯
       delay(400);//延时400ms
       k +=2;//k值加2
     }
     k=7;//设置k值为5
     for(j=1;j<=4;j++)
     {
       digitalWrite(j,LOW);//熄灭灯
       digitalWrite(j+k,LOW);//熄灭灯
       delay(400);//延时400ms
       k -=2;//k值减2
     }
   }
   //led 灯花样显示样式3子程序
   void style_3(void)
   {
     uchar j,k;//led 灯花样显示样式3子程序 
     k=7;//设置k值为5 
     for(j=1;j<=4;j++) 
     { 
       digitalWrite(j,HIGH);//点亮灯 
       digitalWrite(j+k,HIGH);//点亮灯 
       delay(400);//延时400ms 
       digitalWrite(j,LOW);//熄灭灯 
       digitalWrite(j+k,LOW);//熄灭灯 
       k -=2;//k值减2 
     }

     k=3;//设置k值为3 
     for(j=3;j>=1;j--) 
     {    
       digitalWrite(j,HIGH);//点亮灯 
       digitalWrite(j+k,HIGH);//点亮灯 
       delay(400);//延时400ms 
       digitalWrite(j,LOW);//熄灭灯 
       digitalWrite(j+k,LOW);//熄灭灯 
       k +=2;//k值加2 
     }  
  } 
  void setup() 
  {
     uchar i;
     for(i=1;i<=8;i++)//依次设置1~8个数字引脚为输出模式
     pinMode(i,OUTPUT);//设置第i个引脚为输出模式
   }
   void loop()
   {
     style_1();//样式1
     flash();//闪烁
     style_2();//样式2
     flash();//闪烁
     style_3();//样式3
     flash();//闪烁
   }   

 

 

参考资料:

Arduino单片机论坛 http://www.51hei.com/bbs/dpj-32790-1.html

极客工坊-arduino控制WS2812B模块 https://www.geek-workshop.com/thread-28696-1-1.html

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值