開發第一個程式
引入程式庫和定義常數
#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 = 255 , b = 255; uint8_t brightness = default_brightness;
#include <Adafruit_NeoPixel.h>:這行代碼引入了 Adafruit_NeoPixel 程式庫,該庫提供了控制 WS2812 LED 燈條的所有功能。#define LED_PIN 6:定義了燈條數據線連接到 Arduino 的哪個腳位。在這裡,腳位 D6 被用來發送數據信號給燈條。#define LED_COUNT 45:定義了燈條上的 LED 總數。在這個例子中,燈條包含 45 個 LED。#define default_brightness 30:設置了 LED 的預設亮度值為 30。亮度值範圍是 0 到 255,值越大亮度越高。uint8_t r = 255 , g = 255 , b = 255;:這三個變量分別定義了紅色、綠色和藍色的初始值,每個顏色都被設置為最大值 255(白色)。uint8_t brightness = default_brightness;:定義了一個變量brightness,並將其設置為預設亮度值。
初始化 NeoPixel 庫
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);:這行代碼創建了一個 strip 對象,用來控制燈條。這裡傳遞了三個參數:
LED_COUNT是 LED 的數量。LED_PIN是燈條連接到 Arduino 的引腳。NEO_GRB + NEO_KHZ800是一個配置標誌,告訴程式庫 LED 是使用 GRB 格式(綠、紅、藍的順序),並且燈條的時鐘頻率是 800kHz。
設置部分
void setup() {
strip.begin(); // 初始化LED燈條
strip.show(); // 初始化所有LED為'關閉'狀態
led_default();
}
strip.begin();:初始化燈條,使其準備好接收和顯示數據。strip.show();:更新燈條的狀態,這裡的作用是確保在初始化時所有 LED 都是關閉的。led_default();:調用led_default函數,將所有 LED 設置為初始顏色和亮度。
主循環函數
void loop() {
// put your main code here, to run repeatedly:
}
void loop():這是 Arduino 的主循環函數,它會不斷重複執行。當前的代碼中,loop 函數內沒有任何指令,因此燈條會在設置後保持靜止。
設置 LED 的預設顏色和亮度
void led_default():這個函數用來將燈條上的每個 LED 都設置為預設顏色(白色)和亮度。for(int i = 0; i < strip.numPixels(); i++):這個for迴圈遍歷燈條上的每個 LED。strip.setPixelColor(i, strip.Color(r, g, b));:這行代碼設置當前 LED 的顏色。strip.Color(r, g, b)函數會根據 r、g、b 三個值生成一個顏色數據,並設置給第i個 LED。strip.show();:每次設置完顏色後,strip.show()都會更新燈條上的顯示。strip.setBrightness(brightness);:這行代碼設置燈條的亮度。亮度範圍是 0 到 255,這裡使用了預設的亮度值 30。
完整代碼
#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 = 255 , b = 255;
uint8_t brightness = default_brightness;
// 初始化NeoPixel庫
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // 初始化LED燈條
strip.show(); // 初始化所有LED為'關閉'狀態
led_default();
}
void loop() {
// put your main code here, to run repeatedly:
}
void led_default()
{
for(int i = 0; i < strip.numPixels(); i++) { // 遍歷每個像素
strip.setPixelColor(i, strip.Color(r, g, b)); // 設置顏色
strip.show();
}
strip.setBrightness(brightness); // 設置亮度(0-255)
}
