美文网首页
ws2812 LED灯编程

ws2812 LED灯编程

作者: 过眼云烟梦 | 来源:发表于2019-10-01 20:01 被阅读0次
    • 对于WS2812编程,arduino集成开发中有一个库Adafruit_NeoPixel可以很方便的让我们进行操作。
    • 下面来对这个库中的几个重要方法进行详解

    strip.setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b);
    第一个参数n是彩带中LED的编号,最接近单片机引脚的编号为0;接下来的三个参数描述像素颜色,分别表示红色、绿色和蓝色的亮度级别,0为最暗,255是最大亮度;
    strip.setPixelColor(uint16_t n, uint32_t c);
    n是彩带中LED的编号,颜色color是一种32位类型,将红色,绿色和蓝色值合并为一个数字,有时这样做能提高程序的效率。通过下面的方法,可以将红色、绿色和蓝色值转换为32位类型。
    uint32_t magenta = strip.Color(red, green, blue);

    strip.setBrightness(uint8_t);
    一般只在setup()中调用,以保证在整个程序执行过程中LED颜色亮度的一致性。其实,在程序中通过合适的逻辑控制各像素的亮度值,可能动画效果更好。

    strip.show();
    该方法更新彩带上的全部LED。一个好的习惯是先利用setPixelColor()设置好整个彩带的颜色,然后再调用show()方法,以防止出现动画跳跃而不平滑。

    // 呼吸灯效果
    
    #include <Adafruit_NeoPixel.h>
    
    #define PIN 6
    #define MAX_LED 60
    uint8_t brightness = 0; //LED的亮度
    uint8_t fadeAmount = 1; //亮度变化增量,如果觉得呼吸时间过长,可以增大此数据。
    
    Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 );
    
    void setup()
    {
      strip.begin();           //初始化Adafruit_NeoPixel;
    }
    
    void loop()
    {
      //如果是WS2812B的话,参数是绿红蓝
      uint32_t c = strip.Color(255, 0, 255);
      strip.setPixelColor( 10,  c),  //设置第几个灯显示此颜色
      strip.setBrightness(brightness);
      strip.show();
    
      brightness = brightness + fadeAmount;
    
      if (brightness <= 0 || brightness >= 200) {
    
        fadeAmount = -fadeAmount ; //亮度翻转
        }
        delay(20);
      }

    相关文章

      网友评论

          本文标题:ws2812 LED灯编程

          本文链接:https://www.haomeiwen.com/subject/ohokpctx.html