2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Tôi muốn xây dựng một số loại đèn sân tương tác cho sân sau của mình. Ý tưởng là, khi ai đó đi theo một hướng, nó sẽ tạo ra một hình ảnh động theo hướng bạn đang đi. Tôi đã bắt đầu với đèn năng lượng mặt trời $ 1,00 của Dollar General
Bước 1: Gut đèn Solor
Bước đầu tiên là cắt ruột đèn để dọn đường cho nhiều thứ vui nhộn hơn. Tôi bắt đầu bằng cách cắt bỏ đèn led và pin ban đầu. Hãy nhớ lưu các bộ phận này vì chúng sẽ hữu ích trong một dự án khác, tôi cũng đã loại bỏ mái vòm chrome ở dưới cùng của đèn năng lượng mặt trời và dán nó lên trên cùng như trong ảnh
Bước 2: Cài đặt đèn tốt hơn
đối với đèn led tôi đã sử dụng ws2811b chống thấm nước, có thể tìm thấy ở đây
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Ban đầu tôi dự định đặt các cảm biến PIR bên trong đèn năng lượng mặt trời. nhưng điều này được chứng minh là có vấn đề vì cảm biến về cơ bản không thể nhìn thấy qua lớp nhựa. nó phải có một số loại lọc tia cực tím phù hợp. vì vậy tôi đã chọn một cái gì đó giống như thế này hơn
www.thingiverse.com/thing:2590216
Bước 3: Mã hóa
nếu bạn muốn làm cho đèn không sử dụng cảm biến hoặc chỉ chạy mọi lúc, chỉ cần tìm nơi được nhận xét là "thay đổi trạng thái cờ" và đặt nó thành ether 1 hoặc 0, tôi sẽ thêm nhiều bức ảnh hơn khi tôi hoàn thành việc này cho chính mình. Nó vẫn đang trong quá trình hoàn thiện nhưng tôi nghĩ nó quá gọn nên không thể chia sẻ ngay được. cảm ơn vì đã tìm kiếm
void setup () {
// đặt mã thiết lập của bạn ở đây, để chạy một lần: FastLED.addLeds (leds, NUM_LEDS); Serial.begin (9600); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); }
void loop () {
Serial.println (FlagState);
if (FlagState == 0) {ForwardLeds (); } if (FlagState == 1) {RevLeds (); } if (FlagState == 2) {Đang chờ (); }}
void ForwardLeds () {
FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Trắng; leds [FirstLed] = CRGB:: Trắng; chậm trễ (750); FastLED.show (); Serial.print ("White Pass"); Serial.print (i); Serial.println ("trong tổng số 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Blue; leds [FirstLed] = CRGB:: Blue; chậm trễ (250); FastLED.show (); Serial.print ("Blue Pass"); Serial.print (i); Serial.println ("trong tổng số 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; đã dẫn [LastLed] = CRGB:: Màu tím; led [FirstLed] = CRGB:: Tím; chậm trễ (250); FastLED.show (); Serial.print ("Red Pass"); Serial.print (i); Serial.println ("trong tổng số 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Đen; leds [FirstLed] = CRGB:: Đen; chậm trễ (250); FastLED.show (); Serial.print ("Đang tắt đèn led"); Serial.print (i); Serial.println ("trong tổng số 8"); } FlagState = 2; // thay đổi trạng thái cờ} void RevLeds () {Serial.println ("in reverse"); FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Trắng; leds [FirstLed] = CRGB:: Trắng; chậm trễ (750); FastLED.show (); Serial.print ("White pass"); Serial.print (i); Serial.println ("trong tổng số 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Blue; leds [FirstLed] = CRGB:: Blue; chậm trễ (250); FastLED.show (); Serial.print ("Blue pass"); Serial.print (i); Serial.println ("trong tổng số 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Màu tím; leds [FirstLed] = CRGB:: Màu tím; chậm trễ (250); FastLED.show (); Serial.print ("Red pass"); Serial.print (i); Serial.println ("trong tổng số 8"); }
FirstLed = 8;
LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Đen; leds [FirstLed] = CRGB:: Đen; chậm trễ (250); FastLED.show (); Serial.print ("Đang tắt Led"); Serial.print (i); Serial.println ("trong tổng số 8"); } FlagState = 2; // thay đổi trạng thái cờ} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("kích hoạt chuyển tiếp"); FlagState = 0; } else if (buttonState2 == HIGH) {Serial.println ("Đã kích hoạt doanh thu"); FlagState = 1; } Serial.println ("Vòng lặp chờ xong"); }