查看: 464|回复: 6

[已解决] 求解用arduino 让WS2812全灯带无特效常亮并做呼吸灯效果

[复制链接]
  • TA的每日心情
    郁闷
    2020-7-13 01:09
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2020-7-7 02:49 | 显示全部楼层 |阅读模式
    本帖最后由 wlwlka 于 2020-7-11 01:39 编辑

    本人小白,初学arduino,一边逛论坛一边看网上视频教程,看得比较杂

    找了很久也没找到用Adafruit_NeoPixel库做全灯带统一发亮的方法,想在此求大佬协助

    QQ截图20200707024621.jpg

    现在我只能用setPixelColor带动指定的灯亮,想问有什么办法能让整个灯带亮起来还不走跑马灯
    本人有用过比较傻的办法,就是不停复制粘贴setPixelColor,修改里面灯的位置,但是60多个灯珠如果要调颜色会很麻烦

    不知道有没有大佬能帮忙解惑,在此谢谢了
  • TA的每日心情
    郁闷
    2020-7-13 01:09
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2020-7-7 02:50 | 显示全部楼层
    这是本人用的代码


    #include <Adafruit_NeoPixel.h>
    #ifdef __AVR__
    #include <avr/power.h>
    #endif
    int pin         =  9;
    int numPixels   = 60;
    int pixelFormat = NEO_GRB + NEO_KHZ800;
    Adafruit_NeoPixel *zs;

    uint8_t brightness = 0; //LED的亮度

    uint8_t fadeAmount = 1; //亮度变化增量



    void setup() {
      
    #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
      clock_prescale_set(clock_div_1);
    #endif
       zs = new Adafruit_NeoPixel(numPixels, pin, pixelFormat);
      zs->begin();
      zs->show();     
      zs->setBrightness(255);

    }

    void loop() {

    zs->setPixelColor(0, 0, brightness, 0);

    zs->show();

    brightness = brightness + fadeAmount;

    if (brightness <= 0 || brightness >= 50)

    fadeAmount = -fadeAmount ; //亮度翻转

    delay(100);

    }


    该用户从未签到

    发表于 2020-7-7 08:33 | 显示全部楼层
    你灯带是从 arduino 取电的吧?

    试试单独供电然后和 arduino 共地看看?
  • TA的每日心情

    2020-8-5 19:44
  • 签到天数: 63 天

    [LV.6]常住居民II

    发表于 2020-7-7 09:02 | 显示全部楼层
    如楼上所说,需要注意ardunio管脚的负载电流,如果负载电流大,建议你用ardunio控制继电器从而控制灯带的一路电源,灯带单独供电。

    该用户从未签到

    发表于 2020-7-7 10:02 | 显示全部楼层
    我刚好也在做这个项目,可以一起讨论,不过你到底想常亮还是呼吸呢?

    该用户从未签到

    发表于 2020-7-7 10:07 | 显示全部楼层
    Ankim 发表于 2020-7-7 10:02
    我刚好也在做这个项目,可以一起讨论,不过你到底想常亮还是呼吸呢?

    常亮:
    for(int i=0;i<NUMPIXELS;i++){
        pixels.setPixelColor(i, pixels.Color(255,255,255));
      }
       pixels.show();
      }

    呼吸:
    for(int i=0;i<NUMPIXELS;i++){
        for(int a=0;a<255;a++){
              pixels.setPixelColor(i, pixels.Color(0,a,0));
              pixels.show();
              delay(8);
         }
        for(int a=255;a>=0;a--){
              pixels.setPixelColor(i, pixels.Color(0,a,0));
              pixels.show();
              delay(8);
         }
      }
       delay(delayVal);
      }


  • TA的每日心情
    郁闷
    2020-7-13 01:09
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2020-7-9 04:43 | 显示全部楼层
    谢谢,我自己已经研究出来了,不能用setPixelColor 要用fill
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    [2019-4-20]RPG无人世界
    [2019-4-20]RPG无人世界
    剧情:主角玄影,为了逃避██的追杀迫不得已发动████在濒死状态来到█
    Arduino串口监视器出现乱码
    Arduino串口监视器出现乱
    我用Arduinio Due将GNRMC数据Serial.prinln出来,通过串口监视器,我们可以发现有时GN
    为什么单击开关按键后会调用其他控件的函数
    为什么单击开关按键后会调
    BlinkerButton Kelvinator_power("btn-pwr"); BlinkerButton Kelvinator_Light("btn-d
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表