課程目標
- 單個LED的控制方法
- LED的運動模式
- LED的多種顏色控制
電路搭建
所需材料
ArduinoUNO * 1
RGB燈帶30個LED * 1
電路連接
程序編寫
練習一:單個LED閃爍
代碼方式:
/* 項目名稱: WS2812單個LED閃爍
* 項目時間:2022.04.21
* 項目作者:MRX
*/
#include "FastLED.h"
#define LEDS_NUM 30 //定義led燈珠的數量
#define DATA_PIN 9 //UNO輸出控制信號引腳
#define LED_TYPE WS2812 //LED燈帶型號
#define COLOR_ORDER GRB //RGB燈珠中三種顏色LED的排序
uint8_t bright = 128; //LED亮度控制,范圍為0~255,數值越大LED越亮
CRGB leds[LEDS_NUM]; //創建燈帶leds
void setup() {
Serial.begin(9600);
delay(1000);
LEDS.addLeds(leds,LEDS_NUM); //初始化燈帶
FastLED.setBrightness(bright);
}
void loop() {
leds[0] = CRGB::Red; //設置燈帶中第一個燈珠顏色為紅色,leds[0]為第一個
FastLED.show(); //更新LED色彩
delay(500); //等待500毫秒
leds[0] = CRGB::Black; //熄滅燈帶第一個燈珠
FastLED.show(); //更新LED色彩
delay(500); //等待500毫秒
}
}
相關知識:
**uint8_t:**其取值范圍為0255,由于FastLED庫做定義的LED亮度范圍剛好在0255,從最優角度來看,這里使用這個變量類型剛好合適。
練習二:移動的LED
代碼形式:
/* 項目名稱: WS2812單個LED閃爍移動
* 項目時間:2022.04.21
* 項目作者:MRX
*/
#include "FastLED.h"
#define LEDS_NUM 30 //定義led燈珠的數量
#define DATA_PIN 9 //UNO輸出控制信號引腳
#define LED_TYPE WS2812 //LED燈帶型號
#define COLOR_ORDER GRB //RGB燈珠中三種顏色LED的排序
uint8_t bright = 128; //LED亮度控制,范圍為0~255,數值越大LED越亮
CRGB leds[LEDS_NUM]; //創建燈帶leds
void setup() {
Serial.begin(9600);
delay(1000);
LEDS.addLeds(leds,LEDS_NUM); //初始化燈帶
FastLED.setBrightness(bright);
}
void loop() {
for(int i = 0;i <= LEDS_NUM; i++ ){
leds[i] = CRGB::Red; //設置燈帶中第一個燈珠顏色為紅色
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
leds[i] = CRGB::Black; //熄滅燈帶第一個燈珠
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
}
}
作用域符號”::“: 符號的前面一般是類名稱,后面一般是該類的成員名稱,C++為例避免不同的類有名稱相同的成員而采用作用域的方式進行區分。
練習三:三色燈移動
代碼形式:
/* 項目名稱: WS2812單個LED三種顏色循環閃爍
* 項目時間:2022.04.21
* 項目作者:MRX
*/
#include "FastLED.h"
#define LEDS_NUM 30 //定義led燈珠的數量
#define DATA_PIN 9 //UNO輸出控制信號引腳
#define LED_TYPE WS2812 //LED燈帶型號
#define COLOR_ORDER GRB //RGB燈珠中三種顏色LED的排序
uint8_t bright = 128; //LED亮度控制,范圍為0~255,數值越大LED越亮
CRGB leds[LEDS_NUM]; //創建燈帶leds
void setup() {
Serial.begin(9600);
delay(1000);
LEDS.addLeds(leds,LEDS_NUM); //初始化燈帶
FastLED.setBrightness(bright);
}
void loop() {
for(int i = 0;i <= LEDS_NUM; i++ ){
leds[i] = CRGB::Red; //設置燈帶中第一個燈珠顏色為紅色
FastLED.show(); //更新LED色彩
delay(50); //等待500毫秒
leds[i] = CRGB::Green; //設置燈帶中第一個燈珠顏色為綠色
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
leds[i] = CRGB::Blue; //設置燈帶中第一個燈珠顏色為藍色
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
leds[i] = CRGB::Black; //熄滅燈帶第一個燈珠
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
}
}
練習四:多個三色燈移動
代碼形式:
/* 項目名稱: WS2812多個LED循環移動
* 項目時間:2022.04.21
* 項目作者:MRX
*/
#include "FastLED.h"
#define LEDS_NUM 30 //定義led燈珠的數量
#define DATA_PIN 9 //UNO輸出控制信號引腳
#define LED_TYPE WS2812 //LED燈帶型號
#define COLOR_ORDER GRB //RGB燈珠中三種顏色LED的排序
uint8_t bright = 128; //LED亮度控制,范圍為0~255,數值越大LED越亮
CRGB leds[LEDS_NUM]; //創建燈帶leds
void setup() {
Serial.begin(9600);
delay(1000);
LEDS.addLeds(leds,LEDS_NUM); //初始化燈帶
FastLED.setBrightness(bright);
}
void loop() {
for(int i = 0;i <= 30; i++ ){
leds[i-1] = CRGB::Red;
leds[i] = CRGB::Red; //設置燈帶中第一個燈珠顏色為紅色
leds[i+1] = CRGB::Red;
FastLED.show(); //更新LED色彩
delay(50); //等待500毫秒
leds[i-1] = CRGB::Green;
leds[i] = CRGB::Green; //設置燈帶中第一個燈珠顏色為綠色
leds[i+1] = CRGB::Green;
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
leds[i-1] = CRGB::Blue;
leds[i] = CRGB::Blue; //設置燈帶中第一個燈珠顏色為藍色
leds[i+1] = CRGB::Blue;
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
leds[i-1] = CRGB::Black;
leds[i] = CRGB::Black; //熄滅燈帶第一個燈珠
leds[i+1] = CRGB::Black;
FastLED.show(); //更新LED色彩
delay(50); //等待50毫秒
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
LED控制
+關注
關注
0文章
39瀏覽量
16961 -
RGB
+關注
關注
4文章
801瀏覽量
58626 -
Arduino
+關注
關注
188文章
6477瀏覽量
187546 -
三色燈
+關注
關注
0文章
6瀏覽量
6221 -
WS2812
+關注
關注
0文章
32瀏覽量
6220
發布評論請先 登錄
相關推薦
【mBot試用體驗】使用Arduino IDE庫文件配置詳解
是使用Arduino IDE編程,下面來介紹一下Arduino 編程的相關庫文件配置和Arduino 使用的簡單介紹:首先大家需要下載下面這
發表于 12-25 01:29
圖書《arduino程序設計基礎》
Arduino類庫… 1004.3.1編寫頭文件… 1004.3.2預處理命令… 1014.3.3宏定義… 1024.3.4文件包含… 1024.3.5條件編譯… 1024.3.6版本
發表于 06-12 14:37
ESP-IDF添加arduino作為component的方式創建項目,在使用arduno的庫時找不到頭文件的原因?
,提示找不到對應的頭文件。請問使用idf.py命令方式編譯,怎樣才能編譯arduino的庫,并且在項目中可調用。謝謝
發表于 02-10 08:14
ESP-IDF添加arduino作為component的方式創建項目,在使用arduno的庫時,找不到頭文件怎么解決?
對應的頭文件。請問使用idf.py命令方式編譯,怎樣才能編譯arduino的庫,并且在項目中可調用。謝謝
發表于 03-03 09:10
ESP-IDF添加arduino作為component的方式創建項目,在使用arduno的庫時,找不到頭文件的原因?
,提示找不到對應的頭文件。請問使用idf.py命令方式編譯,怎樣才能編譯arduino的庫,并且在項目中可調用。
發表于 03-08 09:09
如何安裝FastLED.io庫
Internet上有許多非??岬母郊哟a庫可供下載,這些代碼庫為Arduino IDE添加了功能。每個人都為IDE提供了一些獨特的通信技能,使Arduino可以與獨特的硬件模塊“對話”
涂鴉智能物聯網平臺mcu方案arduino庫文件
涂鴉智能物聯網平臺mcu方案arduino庫文件,使用庫可以輕松接入涂鴉平臺,實現遠程控制、OTA等平臺能力
發表于 04-28 17:43
?5次下載
評論