閃爍效果(FlashEffct)
實現 LED 燈條快速閃爍的效果,即所有 LED 在亮與滅之間快速切換,模擬出閃光燈的效果。以下是對這段代碼的詳細說明。
函數介紹
void Flash_effect() { int flash_speed = 200; strip.setBrightness(default_brightness); for(int i = 0; i < strip.numPixels(); i++) { // 遍歷每個像素 strip.setPixelColor(i, strip.Color(r, g, b)); // 設置紅色 strip.show(); } delay(flash_speed); strip.setBrightness(0); for(int i = 0; i < strip.numPixels(); i++) { // 遍歷每個像素 strip.setPixelColor(i, strip.Color(r, g, b)); // 設置紅色 strip.show(); } delay(flash_speed); //strip.show(); }
這個函數實現了 LED 燈條的快速閃光效果。具體來說,LED 燈條會在亮與滅之間快速切換,創造出閃光燈的視覺效果。
程式細節解釋
int flash_speed = 200;
flash_speed
:這個變量定義了閃光效果的速度,單位是毫秒。這裡設置為 200 毫秒,即每次 LED 亮或滅的時間間隔為 200 毫秒。你可以調整這個值來改變閃光速度,數值越小,閃光越快。
設置亮度並打開 LED
strip.setBrightness(default_brightness); for(int i = 0; i < strip.numPixels(); i++) { // 遍歷每個像素 strip.setPixelColor(i, strip.Color(r, g, b)); // 設置顏色 strip.show(); }
strip.setBrightness(default_brightness);
:將亮度設置為預設值。for(int i = 0; i < strip.numPixels(); i++)
:這個迴圈遍歷燈條上的每個 LED。strip.setPixelColor(i, strip.Color(r, g, b));
:這行代碼將每個 LED 設置為指定顏色,這裡使用的是變量r
、g
和b
所代表的顏色。strip.show();
:更新燈條顯示,使所有 LED 都亮起來。
延遲與關閉 LED
delay(flash_speed); strip.setBrightness(0); for(int i = 0; i < strip.numPixels(); i++) { // 遍歷每個像素 strip.setPixelColor(i, strip.Color(r, g, b)); // 設置顏色 strip.show(); } delay(flash_speed);
delay(flash_speed);
:這行代碼會在 LED 點亮後等待flash_speed
毫秒,然後進入下一步。strip.setBrightness(0);
:將亮度設置為 0,這樣會使所有 LED 看起來熄滅(實際上顏色值仍然保留,只是亮度被設為 0)。- 再次執行
for
迴圈:這次遍歷每個 LED,但因為亮度設置為 0,LED 燈條會顯示為關閉狀態。 delay(flash_speed);
:LED 關閉後,再次等待flash_speed
毫秒,然後進入下一次循環。
在程式中使用這個函數
要在你的程式中使用 Flash_effect()
函數,只需將它放在 loop()
函數中,這樣它就會不斷運行,實現持續的閃光效果。
#include <Adafruit_NeoPixel.h> #define LED_PIN 6 // LED燈條連接的Arduino腳位 #define LED_COUNT 45 // LED燈的數量 #define default_brightness 30 // LED 預設亮度 uint8_t r = 255, g = 0, b = 0; // 初始顏色設為紅色 uint8_t brightness = default_brightness; Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); // 初始化LED燈條 strip.show(); // 初始化所有LED為'關閉'狀態 strip.setBrightness(brightness); // 設置初始亮度 } void loop() { Flash_effect(); // 讓LED燈條顯示閃光效果 } void Flash_effect() { int flash_speed = 200; strip.setBrightness(default_brightness); for(int i = 0; i < strip.numPixels(); i++) { // 遍歷每個像素 strip.setPixelColor(i, strip.Color(r, g, b)); // 設置顏色 strip.show(); } delay(flash_speed); strip.setBrightness(0); for(int i = 0; i < strip.numPixels(); i++) { // 遍歷每個像素 strip.setPixelColor(i, strip.Color(r, g, b)); // 保留顏色但設置亮度為 0 strip.show(); } delay(flash_speed); }
Flash_effect()
函數實現了 LED 燈條的閃光效果。燈條上的所有 LED 會在亮和滅之間快速切換,模擬出閃光燈的效果。- 在
loop()
函數中,我們調用Flash_effect()
函數,使其效果不斷持續。