Đèn trang trí hình UFO độc đáo

Tự tay làm một chiếc đèn UFO cực chất với Arduino và LED WS2812B. Dự án này hướng dẫn chi tiết cách kết nối linh kiện và cung cấp mã nguồn để tạo hiệu ứng ánh sáng bắt mắt cho chiếc đèn mô hình của bạn.

👁️
48
Lượt Xem
❤️
5
Lượt Thích
📥
10
Lượt Tải
Cập Nhật Mar 28, 2026
Chi tiết
Tải xuống
Bình Luận
Khoe bản in
Remix

Mô tả

Đèn UFO sử dụng Arduino và đèn LED WS2812B

Để tự tay làm chiếc đèn này, bạn cần chuẩn bị các linh kiện sau:

  • 1 bo mạch Arduino Pro Mini
  • 3 đoạn dải LED WS2812B, mật độ 60 LED/mét, mỗi đoạn gồm 9 bóng LED
  • Để đóng nắp UFO, bạn có thể dùng nam châm kích thước 10x2mm hoặc đơn giản là dán keo cố định hai nửa lại với nhau.

Kết nối chân dữ liệu (data pin) của ba dải LED lại với nhau rồi đấu vào chân số 11 trên Arduino.




Mã nguồn Arduino


// Thư viện Adafruit NeoPixel
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Bắt buộc cho Adafruit Trinket 16 MHz
#endif

// Chân kết nối trên Arduino với NeoPixels
#define PIN        11 

// Số lượng đèn NeoPixels được gắn vào Arduino
#define NUMPIXELS 9 

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  // Các dòng này dành riêng cho Adafruit Trinket 5V 16 MHz.
  // Với các board khác, bạn có thể xóa phần này (hoặc để nguyên cũng không sao):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // KẾT THÚC mã cho Trinket.

  pixels.begin(); // Khởi tạo đối tượng dải NeoPixel (BẮT BUỘC)
  pixels.clear();

}

void loop() {
  for(int i=8; i+1>0; i--) { 
    pixels.setPixelColor(0, pixels.Color(0, 100, 0)); // reset LED cuối

// Làn sóng thứ nhất
    // pixels.Color() nhận giá trị RGB từ 0,0,0 đến 255,255,255
    pixels.setPixelColor(i, pixels.Color(60, 220, 0));
    if(i<9) pixels.setPixelColor(i+1, pixels.Color(00, 100, 0)); // reset LED cuối

// Làn sóng thứ hai
    if(i+5<9) pixels.setPixelColor(i+5, pixels.Color(60, 200, 0)); 
    else pixels.setPixelColor(i-4, pixels.Color(60, 220, 0));    
    if(i+5<9) pixels.setPixelColor(i+6, pixels.Color(00, 100, 0)); // reset LED cuối
    else pixels.setPixelColor(i-3, pixels.Color(0, 100, 0)); // reset LED cuối   

    pixels.show();   // Cập nhật màu cho đèn.
    delay(120); // Tạm dừng trước khi lặp lại vòng lặp
  }
}

Giấy phép

Tác phẩm này được cấp phép theo

Creative Commons — Attribution — Noncommercial — Share Alike

CC-BY-NC-SA

Yêu cầu ghi công
Remix & phái sinh Được phép
Sử dụng thương mại Không được phép

File mô hình

TẤT CẢ FILE MÔ HÌNH (5 Tập tin)
Đang tải files, vui lòng chờ...
Vui lòng đăng nhập để bình luận.

Chưa có bình luận nào. Hãy là người đầu tiên!

Vui lòng đăng nhập để khoe bản in của bạn.

Chưa có bản in nào được khoe. Hãy là người đầu tiên!

Remix (0)