找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 256|回复: 4
打印 上一主题 下一主题
收起左侧

一串LED灯怎么做出流星划过的效果?

[复制链接]
跳转到指定楼层
楼主
向各位大佬们求助:
有没有什么思路可以实现一串LED灯的流星划过的效果?
就一个LED来说,首先要实现从亮到暗,也就是呼吸灯的效果,一连串呼吸灯依次点亮再依次变暗,就可以实现流星灯,但软硬件上如何实现呢?求教。

51hei.jpg (23.51 KB, 下载次数: 22)

51hei.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2024-3-30 22:50 | 只看该作者
一个一个的点亮,从头到尾,至于流星尾巴的效果交给眼睛的延迟处理吧。
回复

使用道具 举报

板凳
ID:401564 发表于 2024-3-30 23:17 | 只看该作者
流水灯,第一个100%亮度,第二个90%亮度,第三个80%亮度.........以此类推
所以,就不能直接用左移或者右移来流水了
你可以网上找一下流星代码,参考一下就知道了
回复

使用道具 举报

地板
ID:213173 发表于 2024-3-31 09:02 | 只看该作者
硬件上与流水灯没有不同,软件上就是PWM调光。
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit D0 = P1^0;   
  6. sbit D1 = P1^1;
  7. sbit D2 = P1^2;
  8. sbit D3 = P1^3;
  9. sbit D4 = P1^4;
  10. sbit D5 = P1^5;
  11. sbit D6 = P1^6;
  12. sbit D7 = P1^7;

  13. uchar PWM0 = 15;
  14. uchar PWM1 = 17;     
  15. uchar PWM2 = 19;
  16. uchar PWM3 = 21;
  17. uchar PWM4 = 23;     
  18. uchar PWM5 = 25;
  19. uchar PWM6 = 27;     
  20. uchar PWM7 = 29;
  21. uchar count=0;  
  22. uchar num=0;   

  23. void main()
  24. {
  25.         TMOD=0x01;
  26.         TH0=(65536-500)/256;      
  27.         TL0=(65536-500)%256;
  28.         EA=1;
  29.         ET0=1;
  30.         TR0=1;
  31.         while(1)
  32.         {         
  33.                 if(num==50)
  34.                 {
  35.                         num=0;
  36.                         PWM7++;PWM6++;PWM5++;PWM4++;
  37.                         PWM3++;PWM2++;PWM1++;PWM0++;
  38.                         if(PWM7==30) PWM7=0;
  39.                         if(PWM6==30) PWM6=0;
  40.                         if(PWM5==30) PWM5=0;
  41.                         if(PWM4==30) PWM4=0;
  42.                         if(PWM3==30) PWM3=0;
  43.                         if(PWM2==30) PWM2=0;
  44.                         if(PWM1==30) PWM1=0;
  45.                         if(PWM0==30) PWM0=0;
  46.                 }
  47.         }
  48. }
  49. void Timer0(void) interrupt 1
  50. {                           
  51.         TH0=(65536-500)/256;   
  52.         TL0=(65536-500)%256;
  53.         count++;
  54.         num++;
  55.         if(count >= 15) count = 0;   
  56.         if(count >= PWM7) D0 = 0; else D0 = 1;
  57.         if(count >= PWM6) D1 = 0; else D1 = 1;
  58.         if(count >= PWM5) D2 = 0; else D2 = 1;
  59.         if(count >= PWM4) D3 = 0; else D3 = 1;
  60.         if(count >= PWM3) D4 = 0; else D4 = 1;
  61.         if(count >= PWM2) D5 = 0; else D5 = 1;
  62.         if(count >= PWM1) D6 = 0; else D6 = 1;
  63.         if(count >= PWM0) D7 = 0; else D7 = 1;  
  64. }
复制代码
回复

使用道具 举报

5#
ID:136013 发表于 2024-3-31 10:38 | 只看该作者
幻彩灯带(WS2812等)你值得拥有。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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