0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino篇—WS2812燈帶的使用方法

冬至子 ? 來源:X的創(chuàng)客課堂 ? 作者:MRXY ? 2023-11-02 11:36 ? 次閱讀

課程目標

  • WS2812燈帶的原理及應用
  • 如何合理的選擇供電大小
  • FastLED庫文件的調(diào)用

相關(guān)知識

RGBLED控制: arduino需要通過PWM引腳進行控制RGBLED。一個UNO有六個PWM引腳,因此,如果單獨的控制RGBLED的話,那就只能控制2個。

圖片

當我們需要控制多個RGBLED時,可以通過結(jié)合RGBLED控制芯片的方式來進行控制。

WS2812: 在LED內(nèi)部封裝了WS2812控制芯片。

圖片

常規(guī)使用的是貼片式RGBLED,也就是我們俗稱的燈帶。

圖片

電路搭建

程序開發(fā)時的電路接線方式:

RGBLED燈帶上的燈珠數(shù)量達到一定數(shù)量的時候,它將是一個需要大電流驅(qū)動的設備,所以我們需要給它外接5V電源,并且和UNO進行共地連接。

圖片

使用產(chǎn)品時接線方式:

外接電源可以接到UNO的5V或者VIN進行供電。

圖片

供電選擇:

根據(jù)實際使用的燈珠數(shù)量,可以計算LED燈帶在使用過程中需要的最小電流。

圖片

所需電流 = 燈珠數(shù)量 * 60MA

1.jpg

電路連接

RGBLED燈珠有四個引腳,分別為VCC、GND、DI、DO,其中DI接入到UNO的控制信號端,DO和下一個燈珠的DI進行連接,也就是說,RGBLED燈帶是可以進行隨意數(shù)量的拼接。

圖片

程序編寫

示例程序測試:

本項目我們需要用到FastLED庫,首先進行庫文件的安裝。安裝方法可以參考下圖。

圖片

安裝完成后,打開FastLED庫內(nèi)的示例程序,進行程序測試。

圖片

在這里,我們還需要對這個樣例程序進行一個修改。

修改UNO控制引腳:

#define DATA_PIN    3//此處需要改為你所接的UNO控制引腳

修改燈帶類型:

#define LED_TYPE    WS2811 //將原來的WS2811改為WS2812

修改使用的燈帶的燈珠數(shù)量:

#define NUM_LEDS    64  //此處修改為實際的LED數(shù)量

完整代碼形式:

#include < FastLED.h >


FASTLED_USING_NAMESPACE


// FastLED "100-lines-of-code" demo reel, showing just a few 
// of the kinds of animation patterns you can quickly and easily 
// compose using FastLED.  
//
// This example also shows one easy way to define multiple 
// animations patterns and have them automatically rotate.
//
// -Mark Kriegsman, December 2014


#if defined(FASTLED_VERSION) && (FASTLED_VERSION < 3001000)
#warning "Requires FastLED 3.1 or later; check github for latest code."
#endif


#define DATA_PIN    3
//#define CLK_PIN   4
#define LED_TYPE    WS2812
#define COLOR_ORDER GRB
#define NUM_LEDS    30
CRGB leds[NUM_LEDS];


#define BRIGHTNESS          96
#define FRAMES_PER_SECOND  120


void setup() {
  delay(3000); // 3 second delay for recovery

  // tell FastLED about the LED strip configuration
  FastLED.addLeds< LED_TYPE,DATA_PIN,COLOR_ORDER >(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  //FastLED.addLeds< LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER >(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);


  // set master brightness control
  FastLED.setBrightness(BRIGHTNESS);
}




// List of patterns to cycle through.  Each is defined as a separate function below.
typedef void (*SimplePatternList[])();
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };


uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
uint8_t gHue = 0; // rotating "base color" used by many of the patterns

void loop()
{
  // Call the current pattern function once, updating the 'leds' array
  gPatterns[gCurrentPatternNumber]();


  // send the 'leds' array out to the actual LED strip
  FastLED.show();  
  // insert a delay to keep the framerate modest
  FastLED.delay(1000/FRAMES_PER_SECOND); 


  // do some periodic updates
  EVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbow
  EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically
}


#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))


void nextPattern()
{
  // add one to the current pattern number, and wrap around at the end
  gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);
}


void rainbow() 
{
  // FastLED's built-in rainbow generator
  fill_rainbow( leds, NUM_LEDS, gHue, 7);
}


void rainbowWithGlitter() 
{
  // built-in FastLED rainbow, plus some random sparkly glitter
  rainbow();
  addGlitter(80);
}


void addGlitter( fract8 chanceOfGlitter) 
{
  if( random8() < chanceOfGlitter) {
    leds[ random16(NUM_LEDS) ] += CRGB::White;
  }
}


void confetti() 
{
  // random colored speckles that blink in and fade smoothly
  fadeToBlackBy( leds, NUM_LEDS, 10);
  int pos = random16(NUM_LEDS);
  leds[pos] += CHSV( gHue + random8(64), 200, 255);
}


void sinelon()
{
  // a colored dot sweeping back and forth, with fading trails
  fadeToBlackBy( leds, NUM_LEDS, 20);
  int pos = beatsin16( 13, 0, NUM_LEDS-1 );
  leds[pos] += CHSV( gHue, 255, 192);
}


void bpm()
{
  // colored stripes pulsing at a defined Beats-Per-Minute (BPM)
  uint8_t BeatsPerMinute = 62;
  CRGBPalette16 palette = PartyColors_p;
  uint8_t beat = beatsin8( BeatsPerMinute, 64, 255);
  for( int i = 0; i < NUM_LEDS; i++) { //9948
    leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10));
  }
}


void juggle() {
  // eight colored dots, weaving in and out of sync with each other
  fadeToBlackBy( leds, NUM_LEDS, 20);
  byte dothue = 0;
  for( int i = 0; i < 8; i++) {
    leds[beatsin16( i+7, 0, NUM_LEDS-1 )] |= CHSV(dothue, 200, 255);
    dothue += 32;
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • LED控制
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    16886
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    794

    瀏覽量

    58307
  • 電流驅(qū)動
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

    10800
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186361
  • WS2812
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    6091
收藏 人收藏

    評論

    相關(guān)推薦

    用STM32控制WS2812 RGB的代碼分享

    用STM32控制WS2812 RGB的代碼分享
    發(fā)表于 12-15 07:09

    Arduino控制WS2812方法

    設計者:STCode(公眾號同名)Arduino控制WS2812環(huán))1) WS2812
    發(fā)表于 01-12 08:08

    STM32F103C8T6+PWM+DMA驅(qū)動WS2812方法

    #STM32+PWM+DMA驅(qū)動 WS2812#文章目錄1.理論:2代碼:理論:使用STM32F103C8T6驅(qū)動WS2812
    發(fā)表于 02-22 06:59

    自制60位WS2812環(huán)

    描述60位WS2812環(huán)超小60位WS2812環(huán)可作為超小時鐘采用2020環(huán)圈只有36mm不到目前市60位環(huán)半徑78毫米的雙面鋪銅上層
    發(fā)表于 09-01 07:11

    如何進行WS2812的面板制作詳細資料合集免費下載

    本文檔的主要內(nèi)容詳細介紹的是如何進行WS2812的面板制作詳細資料合集免費下載包括了:DMX512轉(zhuǎn)WS2812 面板程序,STC8系列單片機技術(shù)參考手冊,
    發(fā)表于 05-29 17:36 ?162次下載
    如何進行<b class='flag-5'>WS2812</b>的面板<b class='flag-5'>燈</b>制作詳細資料合集免費下載

    dfrobot炫彩WS2812 RGB LED可剪裁白色燈介紹

    WS2812 RGB裸板白條是由一系列的全彩LED組成。
    的頭像 發(fā)表于 12-27 15:35 ?4443次閱讀
    dfrobot炫彩<b class='flag-5'>WS2812</b> RGB LED可剪裁白色燈<b class='flag-5'>帶</b>介紹

    STM32使用LL庫PWM的DMA模式驅(qū)動ws2812

    STM32使用LL庫PWM的DMA模式驅(qū)動ws2812一、WS2812簡介二、CUBEMX初始化代碼配置一、WS2812簡介給個鏈接吧,ws2812時序簡介
    發(fā)表于 11-30 10:21 ?66次下載
    STM32使用LL庫PWM的DMA模式驅(qū)動<b class='flag-5'>ws2812</b>

    STM32F103C8T6+PWM+DMA驅(qū)動 WS2812

    #STM32+PWM+DMA驅(qū)動 WS2812#文章目錄1.理論:2代碼:理論:使用STM32F103C8T6驅(qū)動WS2812
    發(fā)表于 12-27 19:29 ?211次下載
    STM32F103C8T6+PWM+DMA驅(qū)動 <b class='flag-5'>WS2812</b><b class='flag-5'>燈</b><b class='flag-5'>帶</b>

    Arduino WS2812B LED設計方案

    Arduino WS2812B LED可單獨控制每個LED的亮度和顏色,提供了一種簡單而酷炫的LED效果體驗。
    發(fā)表于 04-24 08:36 ?1.2w次閱讀
    <b class='flag-5'>Arduino</b> <b class='flag-5'>WS2812</b>B LED<b class='flag-5'>燈</b><b class='flag-5'>帶</b>設計方案

    超小60位WS2812環(huán)

    電子發(fā)燒友網(wǎng)站提供《超小60位WS2812環(huán).zip》資料免費下載
    發(fā)表于 08-12 09:58 ?20次下載
    超小60位<b class='flag-5'>WS2812</b><b class='flag-5'>燈</b>環(huán)

    WS2812 LED條的DIY Arduino 1D乒乓球游戲

    電子發(fā)燒友網(wǎng)站提供《WS2812 LED條的DIY Arduino 1D乒乓球游戲.zip》資料免費下載
    發(fā)表于 11-04 14:38 ?0次下載
    <b class='flag-5'>帶</b><b class='flag-5'>WS2812</b> LED<b class='flag-5'>燈</b>條的DIY <b class='flag-5'>Arduino</b> 1D乒乓球游戲

    DIY WS2812模擬式Arduino環(huán)形時鐘

    電子發(fā)燒友網(wǎng)站提供《DIY WS2812模擬式Arduino環(huán)形時鐘.zip》資料免費下載
    發(fā)表于 02-03 10:01 ?11次下載
    DIY <b class='flag-5'>WS2812</b>模擬式<b class='flag-5'>Arduino</b>環(huán)形時鐘

    最簡WS2812類似RGB條驅(qū)動方法

    最簡WS2812類似RGB條驅(qū)動方法
    的頭像 發(fā)表于 06-19 17:51 ?3291次閱讀
    最簡<b class='flag-5'>WS2812</b>類似RGB<b class='flag-5'>燈</b>條驅(qū)動<b class='flag-5'>方法</b>

    迪文屏控制WS2812氛圍

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎開源案例——迪文屏控制WS2812氛圍。工程師通過COF智能屏的OS核精準控制WS2812幻彩燈每一顆
    的頭像 發(fā)表于 01-26 08:12 ?860次閱讀
    迪文屏控制<b class='flag-5'>WS2812</b>氛圍<b class='flag-5'>燈</b>

    論如何使用WS2812以及類似

    ? ?WS2812 LED珠,這是一種非常流行的可尋址RGB LED。每個WS2812 LED內(nèi)部集成了控制電路,因此可以通過一個數(shù)據(jù)輸入線來單獨控制每一個LED的顏色和亮度。這種特性使得
    的頭像 發(fā)表于 09-30 15:11 ?181次閱讀
    論如何使用<b class='flag-5'>WS2812</b>以及類似<b class='flag-5'>燈</b>珠