Оглавление:

Интерактивное освещение двора, освещение пешеходной дорожки: 3 шага
Интерактивное освещение двора, освещение пешеходной дорожки: 3 шага

Видео: Интерактивное освещение двора, освещение пешеходной дорожки: 3 шага

Видео: Интерактивное освещение двора, освещение пешеходной дорожки: 3 шага
Видео: Ландшафтное освещение участка ТОП - 10 ошибок | Константин Цепелев 2024, Июль
Anonim
Интерактивные дворовые фонари, пешеходные огни
Интерактивные дворовые фонари, пешеходные огни
Интерактивные дворовые фонари, пешеходные огни
Интерактивные дворовые фонари, пешеходные огни

Я хотел построить какие-то интерактивные садовые фонари для своего заднего двора. Идея заключалась в том, что когда кто-то идет в одну сторону, это вызывает анимацию в том направлении, в котором вы идете. Я начал с солнечных фонарей Dollar General за $ 1,00.

Шаг 1: потрошите Solor Lights

Gut the Solor Lights
Gut the Solor Lights
Gut the Solor Lights
Gut the Solor Lights
Gut the Solor Lights
Gut the Solor Lights

Первым шагом было потушить свет, чтобы освободить место для более забавных вещей. Я начал с вырезания оригинального светодиода и аккумулятора. Обязательно сохраните эти детали, так как они будут полезны в другом проекте. Я также удалил хромированный купол, который был внизу солнечного светильника, и приклеил его к верху, как показано на фотографиях.

Шаг 2: Установка Better Lights

Установка Better Lights
Установка Better Lights
Установка Better Lights
Установка Better Lights
Установка Better Lights
Установка Better Lights

для светодиода я использовал водонепроницаемый ws2811b, который можно найти здесь

www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…

Изначально я планировал разместить датчики PIR внутри солнечных фонарей. но это оказалось несколько проблематичным, потому что датчик практически не мог видеть сквозь пластик. у него должна быть какая-то фильтрация УФ-излучения. так что я выбрал что-то подобное

www.thingiverse.com/thing:2590216

Шаг 3. Кодирование

Если вы хотите, чтобы свет не использовал датчик или просто работал все время, просто найдите место, которое отмечено как «изменение состояния флага», и установите его в эфир 1 или 0, я добавлю больше фотографий, когда я закончу это для себя, поэтому работа над ним все еще продолжается, но я думаю, что это слишком аккуратно, чтобы не поделиться им сразу. спасибо, что посмотрели

void setup () {

// поместите сюда свой установочный код для однократного запуска: FastLED.addLeds (leds, NUM_LEDS); Serial.begin (9600); pinMode (buttonPin1, ВХОД); pinMode (buttonPin2, ВХОД); }

void loop () {

Serial.println (FlagState);

если (FlagState == 0) {ForwardLeds (); } если (FlagState == 1) {RevLeds (); } если (FlagState == 2) {Ожидание (); }}

void ForwardLeds () {

FirstLed = -1; LastLed = 16; для (int я = 0; я <8; я ++) {LastLed--; FirstLed ++; светодиоды [LastLed] = CRGB:: Белый; светодиоды [FirstLed] = CRGB:: Белый; задержка (750); FastLED.show (); Serial.print («белый пропуск»); Serial.print (i); Serial.println («из 8»); } FirstLed = -1; LastLed = 16; для (int я = 0; я <8; я ++) {LastLed--; FirstLed ++; светодиоды [LastLed] = CRGB:: Синий; светодиоды [FirstLed] = CRGB:: Синий; задержка (250); FastLED.show (); Serial.print («Синий пропуск»); Serial.print (i); Serial.println («из 8»); } FirstLed = -1; LastLed = 16; для (int я = 0; я <8; я ++) {LastLed--; FirstLed ++; светодиоды [LastLed] = CRGB:: Purple; светодиоды [FirstLed] = CRGB:: Purple; задержка (250); FastLED.show (); Serial.print («Красный пропуск»); Serial.print (i); Serial.println («из 8»); } FirstLed = -1; LastLed = 16; для (int я = 0; я <8; я ++) {LastLed--; FirstLed ++; светодиоды [LastLed] = CRGB:: Черный; светодиоды [FirstLed] = CRGB:: Черный; задержка (250); FastLED.show (); Serial.print («Выключение светодиода»); Serial.print (i); Serial.println («из 8»); } FlagState = 2; // изменение состояния флага} void RevLeds () {Serial.println ("в обратном направлении"); FirstLed = 8; LastLed = 7; для (int я = 0; я <8; я ++) {LastLed ++; FirstLed--; светодиоды [LastLed] = CRGB:: Белый; светодиоды [FirstLed] = CRGB:: Белый; задержка (750); FastLED.show (); Serial.print («Белый пропуск»); Serial.print (i); Serial.println («из 8»); } FirstLed = 8; LastLed = 7; для (int я = 0; я <8; я ++) {LastLed ++; FirstLed--; светодиоды [LastLed] = CRGB:: Синий; светодиоды [FirstLed] = CRGB:: Синий; задержка (250); FastLED.show (); Serial.print («Синий пропуск»); Serial.print (i); Serial.println («из 8»); } FirstLed = 8; LastLed = 7; для (int я = 0; я <8; я ++) {LastLed ++; FirstLed--; светодиоды [LastLed] = CRGB:: Purple; светодиоды [FirstLed] = CRGB:: Purple; задержка (250); FastLED.show (); Serial.print («Красный пропуск»); Serial.print (i); Serial.println («из 8»); }

FirstLed = 8;

LastLed = 7; для (int я = 0; я <8; я ++) {LastLed ++; FirstLed--; светодиоды [LastLed] = CRGB:: Черный; светодиоды [FirstLed] = CRGB:: Черный; задержка (250); FastLED.show (); Serial.print («Выключение светодиода»); Serial.print (i); Serial.println («из 8»); } FlagState = 2; // изменение состояния флага} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("запускается вперед"); FlagState = 0; } else if (buttonState2 == HIGH) {Serial.println ("Rev triggered"); FlagState = 1; } Serial.println ("цикл завершен в ожидании"); }

Рекомендуемые: