Съдържание:

Интерактивни светлини за двора, светлини за пътеки: 3 стъпки
Интерактивни светлини за двора, светлини за пътеки: 3 стъпки

Видео: Интерактивни светлини за двора, светлини за пътеки: 3 стъпки

Видео: Интерактивни светлини за двора, светлини за пътеки: 3 стъпки
Видео: Детето ми се храни само със зеленчуци 2024, Ноември
Anonim
Интерактивни светлини за двора, светлини за пътеки
Интерактивни светлини за двора, светлини за пътеки
Интерактивни светлини за двора, светлини за пътеки
Интерактивни светлини за двора, светлини за пътеки

Исках да построя някакъв вид интерактивни дворни светлини за задния си двор. Идеята беше, когато някой вървеше в една посока, това да даде начало на анимация в посоката, в която вървите. Започнах със Dollar General $ 1.00 слънчеви светлини

Стъпка 1: Изкоренете слънчевите светлини

Отстранете слънчевите светлини
Отстранете слънчевите светлини
Отстранете слънчевите светлини
Отстранете слънчевите светлини
Отстранете слънчевите светлини
Отстранете слънчевите светлини

Първата стъпка беше да изгасим светлините, за да направим място за по -забавни неща. Започнах с изрязване на оригиналния светодиод и батерията. Не забравяйте да запазите тези части, тъй като те ще бъдат полезни в друг проект. Също така премахнах хромирания купол, който беше на дъното на слънчевата светлина и го залепих отгоре, както се вижда на снимките

Стъпка 2: Инсталиране на по -добри светлини

Инсталиране на по -добри светлини
Инсталиране на по -добри светлини
Инсталиране на по -добри светлини
Инсталиране на по -добри светлини
Инсталиране на по -добри светлини
Инсталиране на по -добри светлини

за светодиода използвах водоустойчив ws2811b, който можете да намерите тук

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

Първоначално планирах да поставя PIR сензорите в слънчевите светлини. но това се оказа доста проблематично, защото сензорът по принцип не можеше да види покрай пластмасата. трябва да има някакъв вид UV филтриране. затова избрах нещо повече като това

www.thingiverse.com/thing:2590216

Стъпка 3: Кодиране

ако искате да накарате светлините да не използват сензор или просто да работят през цялото време, просто потърсете мястото, което е коментирано като "промяна на състоянието на флага" и го настройте на етер 1 или 0, ще добавя още снимки, когато попълня това за себе си, така че все още се работи, но мисля, че е твърде кокетно, за да не споделя веднага. благодаря за търсенето

void setup () {

// поставете кода за настройка тук, за да се стартира веднъж: FastLED.addLeds (светодиоди, 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) {Waiting (); }}

void ForwardLeds () {

FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; светодиоди [LastLed] = CRGB:: Бял; светодиоди [FirstLed] = CRGB:: Бял; забавяне (750); FastLED.show (); Serial.print ("бяла карта"); Serial.print (i); Serial.println ("от 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; светодиоди [LastLed] = CRGB:: Синьо; светодиоди [FirstLed] = CRGB:: Синьо; забавяне (250); FastLED.show (); Serial.print ("Blue Pass"); Serial.print (i); Serial.println ("от 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; светодиоди [LastLed] = CRGB:: Лилаво; светодиоди [FirstLed] = CRGB:: Purple; забавяне (250); FastLED.show (); Serial.print ("Червен пропуск"); Serial.print (i); Serial.println ("от 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {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; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; светодиоди [LastLed] = CRGB:: Бял; светодиоди [FirstLed] = CRGB:: Бял; забавяне (750); FastLED.show (); Serial.print ("Бяла карта"); Serial.print (i); Serial.println ("от 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; светодиоди [LastLed] = CRGB:: Синьо; светодиоди [FirstLed] = CRGB:: Синьо; забавяне (250); FastLED.show (); Serial.print ("Синя карта"); Serial.print (i); Serial.println ("от 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; светодиоди [LastLed] = CRGB:: Лилаво; светодиоди [FirstLed] = CRGB:: Purple; забавяне (250); FastLED.show (); Serial.print ("Червен пропуск"); Serial.print (i); Serial.println ("от 8"); }

FirstLed = 8;

LastLed = 7; for (int i = 0; i <8; i ++) {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 задействана"); FlagState = 1; } Serial.println ("цикъл завърши изчакване"); }

Препоръчано: