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

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

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

Arduino篇—WS2812燈帶的使用方法

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

課程目標(biāo)

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

相關(guān)知識(shí)

RGBLED控制: arduino需要通過PWM引腳進(jìn)行控制RGBLED。一個(gè)UNO有六個(gè)PWM引腳,因此,如果單獨(dú)的控制RGBLED的話,那就只能控制2個(gè)。

圖片

當(dāng)我們需要控制多個(gè)RGBLED時(shí),可以通過結(jié)合RGBLED控制芯片的方式來進(jìn)行控制。

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

圖片

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

圖片

電路搭建

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

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

圖片

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

外接電源可以接到UNO的5V或者VIN進(jìn)行供電。

圖片

供電選擇:

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

圖片

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

1.jpg

電路連接

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

圖片

程序編寫

示例程序測試:

本項(xiàng)目我們需要用到FastLED庫,首先進(jìn)行庫文件的安裝。安裝方法可以參考下圖。

圖片

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

圖片

在這里,我們還需要對(duì)這個(gè)樣例程序進(jìn)行一個(gè)修改。

修改UNO控制引腳:

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

修改燈帶類型:

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

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

#define NUM_LEDS    64  //此處修改為實(shí)際的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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LED控制
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

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

    關(guān)注

    4

    文章

    785

    瀏覽量

    58205
  • 電流驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

    10785
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185928
  • WS2812
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    6032
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【FireBeetle Board ESP32-E IoT 開發(fā)板試用體驗(yàn)】WS2812彩色燈顯示效果

    運(yùn)行效果如圖4所示,即顯示器件依紅綠藍(lán)的次序循環(huán)顯示。 圖4運(yùn)行效果有了前面的使用經(jīng)驗(yàn),我們還可以選用圖5所示的WS2812帶來制作更加豐富的顯示效果。圖5 WS2812
    發(fā)表于 08-28 23:41

    用STM32控制WS2812 RGB的代碼分享

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

    Arduino控制WS2812方法

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

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

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

    自制60位WS2812環(huán)

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

    如何進(jìn)行WS2812的面板制作詳細(xì)資料合集免費(fèi)下載

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

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

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

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

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

    STM32F103C8T6+PWM+DMA驅(qū)動(dòng) WS2812

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

    Arduino WS2812B LED設(shè)計(jì)方案

    Arduino WS2812B LED可單獨(dú)控制每個(gè)LED的亮度和顏色,提供了一種簡單而酷炫的LED效果體驗(yàn)。
    發(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>設(shè)計(jì)方案

    超小60位WS2812環(huán)

    電子發(fā)燒友網(wǎng)站提供《超小60位WS2812環(huán).zip》資料免費(fèi)下載
    發(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èi)下載
    發(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)形時(shí)鐘

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

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

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

    迪文屏控制WS2812氛圍

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