Spisu treści:

HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 kroków (ze zdjęciami)
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 kroków (ze zdjęciami)

Wideo: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 kroków (ze zdjęciami)

Wideo: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 kroków (ze zdjęciami)
Wideo: DIY HALO Lamp Rev1.0 - Powered by Arduino Nano, 15+ Color Modes 2024, Listopad
Anonim
Image
Image
HALO: Poręczna lampa Arduino Rev1.0 W/NeoPixels
HALO: Poręczna lampa Arduino Rev1.0 W/NeoPixels
HALO: Poręczna lampa Arduino Rev1.0 W/NeoPixels
HALO: Poręczna lampa Arduino Rev1.0 W/NeoPixels

W tej instrukcji pokażę, jak zbudować HALO lub Handy Arduino Lamp Rev1.0.

HALO to prosta lampa, zasilana przez Arduino Nano. Ma całkowitą powierzchnię około 2 "na 3" i ważoną drewnianą podstawę dla ekstremalnej stabilności. Elastyczna szyjka i 12 superjasnych NeoPixels pozwalają łatwo oświetlić każdy szczegół na dowolnej powierzchni. HALO posiada dwa przyciski do przełączania różnych trybów oświetlenia, z których 15 jest wstępnie zaprogramowanych. Dzięki wykorzystaniu Arduino Nano jako procesora istnieje możliwość przeprogramowania go o dodatkowe funkcje. Pojedynczy potencjometr służy do regulacji jasności i/lub prędkości, z jaką wyświetlany jest tryb. Prosta metalowa konstrukcja sprawia, że HALO jest bardzo wytrzymałą lampą, nadającą się do zastosowania w każdym warsztacie. Łatwość użytkowania jest spotęgowana przez wbudowany regulator mocy Nano, dzięki czemu HALO może być zasilany przez USB lub standardowe gniazdo 5 mm z tyłu.

Mam nadzieję, że w niedalekiej przyszłości wiele osób będzie korzystało z tych lamp, ponieważ jest tak wiele możliwości, które otwierają się dzięki temu projektowi. Proszę o oddanie głosu w Konkursie Mikrokontrolerów, jeśli podoba Ci się to lub uznasz to za przydatne w jakiś sposób, naprawdę byłbym wdzięczny.

Zanim przejdziemy do tego Instruktażu, chciałbym krótko podziękować wszystkim moim obserwującym i każdemu, kto kiedykolwiek komentował, dodawał do ulubionych lub głosował na którykolwiek z moich projektów. Dzięki wam mój podręcznik Cardboard stał się ogromnym sukcesem, a teraz, kiedy to piszę, docieram do blisko 100 obserwujących, moim zdaniem jest to duży kamień milowy. Naprawdę doceniam całe wsparcie, jakie otrzymuję od was, kiedy wkładam moje Ible, a kiedy do tego dochodzi, nie byłbym tam, gdzie jestem bez was. Powiedziawszy to, dziękuję wszystkim!

UWAGA: W tej instrukcji znajdują się wyrażenia pogrubione. To są ważne części każdego kroku i nie należy ich ignorować. To nie ja krzyczę lub celowo jestem niegrzeczny, po prostu próbuję nowej techniki pisania, aby lepiej podkreślić, co należy zrobić. Jeśli ci się to nie podoba i wolisz, jak wcześniej pisałem swoje kroki, daj mi znać w komentarzach, a przejdę z powrotem do mojego starego stylu.

Krok 1: Zbieranie materiałów

Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów

Ile razy mam to powtarzać? Zawsze masz to, czego potrzebujesz, a masz gwarancję, że będziesz w stanie zbudować coś do końca.

Uwaga: Niektóre z nich to linki partnerskie (oznaczone „al”), dostanę niewielką prowizję, jeśli kupisz za ich pośrednictwem, bez dodatkowych kosztów. Dziękuję, jeśli kupisz za pośrednictwem linków

Części:

1x Arduino Nano Nano - al

1x potencjometr obrotowy 10k 5 szt. Potencjometrów 10k - al

1x 5-milimetrowy jack baryłkowy (mój jest z recyklingu ze smażonego Arduino Uno) Female Barrel Jack (5 sztuk) - al

2x 2-stykowe przyciski chwilowe 10 sztuk SPST Pushbutton Switch - al

12x NeoPixels z pasma 60 LED/metr (działa dowolny odpowiednik, np. WS2812B) Adafruit NeoPixels

Arkusz 0,5 mm Aluminium

Elastyczna szyjka ze starej zapalniczki flex

Górny pierścień maskujący z lampy podszafkowej LED „Stick and Click” Oświetlenie szafki LED - al

Mały arkusz sklejki 1/4 cala

Ciężki, płaski metalowy obciążnik o wymiarach (w przybliżeniu) 1,5" na 2,5" na 0,25"

Przewód elektryczny z rdzeniem skręconym

Narzędzia:

Pistolet do klejenia na gorąco i klej

Lutownica i lutownica

Wiertarka akumulatorowa i różne małe skręcane bity

Nóż X-acto (lub nóż uniwersalny)

Narzędzia do ściągania izolacji

Szczypce

Przecinaki do drutu/nożyce

Nożyczki do dużych obciążeń

Jeśli nie masz płaskiego metalowego obciążnika, potrzebujesz również:

1 rolka taniego lutu (nie tego, którego będziesz używać do lutowania) Tanie lutowie bezołowiowe

Świeca alkoholowa (lub palnik Bunsena)

Małe naczynie z hartowanej stali, którego nie masz nic przeciwko zrujnowaniu (lub mały tygiel, jeśli go masz)

Statyw do wspomnianego naczynia/tygla (zrobiłem mój z drutu stalowego o grubości 12)

Naczynie z gliny (jedna z tych rzeczy, które trafiają pod doniczkę)

Niektóre folie aluminiowe

UWAGA: Jeśli masz zestaw spawalniczy lub drukarkę 3D, możesz nie potrzebować wszystkich wymienionych tutaj narzędzi.

Krok 2: Dokonywanie wagi

Dokonywanie wagi
Dokonywanie wagi
Dokonywanie wagi
Dokonywanie wagi
Dokonywanie wagi
Dokonywanie wagi

Jest to dość trudny krok i musisz zachować przy tym szczególną ostrożność. Jeśli masz ciężki metalowy obciążnik lub płaski magnes neodymowy o wymiarach około 2,75" na 1,75" na 0,25", sugerowałbym użycie tego zamiast (a magnes umożliwiłby nawet ustawienie lampy z boku na metalowych powierzchniach!).

Zastrzeżenie: nie jestem odpowiedzialny za jakiekolwiek obrażenia z twojej strony, więc proszę kierować się zdrowym rozsądkiem

Zrób to również na zewnątrz na betonowej powierzchni, która nie będzie miała nic przeciwko, jeśli zostanie trochę przypalona (to tylko środek ostrożności). Nie mam zdjęć do tego procesu, ponieważ aparat byłby dodatkową rozrywką, której nie potrzebowałem ani nie chciałem.

Najpierw wykonaj małą formę z folii aluminiowej lub mokrej gliny, o wymiarach wewnętrznych około 2 3/4 cala na 1 3/4 cala na 1/4 cala. Może mieć kształt owalny jak mój lub prostokąt. Użyj wielu warstw folii lub grubych warstw gliny.

Umieść foremkę w ceramicznej miseczce i napełnij zarówno foremkę, jak i tacę zimną wodą.

Weź nie zapaloną świecę alkoholową/palnik Bunsena i umieść stalowe naczynie/tygiel na statywie, aby płomień ogrzał środek naczynia (gdy jest zapalony). Przed zapaleniem palnika upewnij się, że masz pod ręką co najmniej 1 parę szczypiec lub szczypiec do obróbki metalu, jeśli nie 2.

Dobrym pomysłem jest noszenie skórzanych rękawiczek, długich rękawów, długich spodni, butów z zamkniętymi palcami i ochrony oczu podczas wykonywania kolejnych kilku kroków

Zwiń i oderwij wiązkę taniego lutowia ze szpuli i umieść go w stalowym naczyniu, a następnie zapal palnik. Poczekaj, aż cewka całkowicie się rozpuści, a następnie zacznij podawać resztę lutowia do naczynia w umiarkowanym tempie. Jeśli lut zawiera kalafonię, może on samorzutnie zapalić się pod wpływem ciepła, wytwarzając bladożółty płomień i czarny dym. Nie martw się, zdarzyło mi się to wiele razy i jest całkowicie normalne.

Kontynuuj podawanie lutowia do naczynia, aż ostatni z niego się stopi.

Niech wszelkie płomienie z palącej się kalafonii całkowicie wygasną i użyj szczypiec/szczypiec, aby chwycić naczynie i delikatnie zakręcić stopionym metalem wewnątrz, ostrożnie trzymając go w płomieniu.

Po upewnieniu się, że cały lut jest całkowicie upłynniony i ma dobrą, wysoką temperaturę, szybko i ostrożnie wyjmij go z płomienia i wlej do formy. Rozlegnie się głośny syk i para, gdy część wody wyparuje, a reszta zostanie wypchnięta z formy i zastąpiona stopionym lutem.

Poczekaj, aż lut ostygnie, wyłącz palnik/zdmuchnij świecę i umieść stalowe naczynie w bezpiecznym miejscu do ostygnięcia. Możesz zalać chłodzący lut zimną wodą, aby przyspieszyć chłodzenie i jeszcze bardziej go utwardzić. (Zimna woda sprawia, że zewnętrze ochładza się szybciej niż wnętrze, tworząc wewnętrzne napięcie, które sprawia, że metal staje się twardszy i sztywniejszy, podobnie jak w przypadku kropli księcia Ruperta.) Możesz również polewać wodą metalowe naczynie, ale spowoduje to, że stanie się kruchy, zwłaszcza jeśli robi się to wielokrotnie.

Po całkowitym ostygnięciu lutowia (około 20 minut dla bezpieczeństwa) wyjmij go z formy foliowej.

Mój skończył się grubszy z jednej strony niż z drugiej, więc użyłem młotka, aby wyrównać i spłaszczyć krawędzie (co dało kształt widoczny na zdjęciach). Następnie delikatnie przeszlifowałem go pod bieżącą wodą, aby go wypolerować i odłożyłem na później.

Krok 3: Budowa obudowy elektroniki, krok 1

Budowanie obudowy elektroniki, krok 1
Budowanie obudowy elektroniki, krok 1
Budowanie obudowy elektroniki, krok 1
Budowanie obudowy elektroniki, krok 1
Budowanie obudowy elektroniki, krok 1
Budowanie obudowy elektroniki, krok 1
Budowanie obudowy elektroniki, krok 1
Budowanie obudowy elektroniki, krok 1

Są to części powłoki, w której mieści się Nano, montuje się interfejs i jest w zasadzie tym, co łączy lampę HALO. Zrobiłem swoją z mojego 0,5 mm aluminium i gorącego kleju, ale jeśli masz drukarkę 3D (coś, co od jakiegoś czasu starałem się dostać do mojego sklepu), zrobiłem wersję. STL w Tinkercad, którą załączyłem tutaj, abyś pobieranie. Ponieważ sam nie mam drukarki, nie mogłem przetestować drukowania modelu, aby sprawdzić, czy wszystko drukuje się poprawnie, ale myślę, że powinno być w porządku, jeśli dodasz odpowiednie struktury podporowe do swojej krajalnicy. Możesz również skopiować i edytować plik źródłowy tutaj, jeśli potrzebujesz lub chcesz nieco inny projekt lub estetykę.

Wymiary faktycznie wywodziły się z masy metalu, którą odlałem dla siebie z lutowia, a nie z rozmiaru elektroniki, ale i tak wyszło całkiem nieźle, a wymiary są całkiem optymalne.

Zdjęcia przedstawiają nieco inną kolejność działania niż ta, o której tutaj napiszę, ponieważ opracowałem ulepszoną metodę opartą na wynikach mojej oryginalnej metody.

Jeśli montujesz z blachy tak jak ja, oto co musisz zrobić:

Krok 1: Płyty czołowe

Wytnij dwa identyczne półokrągłe kształty o wysokości około 1,5 cala i szerokości 3 cali. (Wzięłam je z ręki, więc wyglądają trochę jak przód szafy grającej).

W jednej z dwóch płytek wywierć trzy otwory na przyciski i potencjometr. Każdy z moich miał średnicę 1/4 cala. Mogą być w dowolnym układzie, ale wolę, aby potencjometr był lekko podniesiony pośrodku, z przyciskami po obu stronach tworzącymi trójkąt równoramienny. Podczas wiercenia zawsze wykonuję mały otwór pilotażowy przed przejściem do wiertła o wymaganym rozmiarze, co pomaga wyśrodkować otwory i sprawia, że są nieco czystsze.

Krok 2: Łukowata okładka

Zagnij kawałek aluminium, aby zmieścił się wokół krzywizny jednej z płyt czołowych i zaznacz odpowiednią długość krawędzi.

Wytnij pasek o tej długości i szerokości około 2 cali i uformuj go w łuk, który pasuje do kształtu krzywizny płyt czołowych po obu stronach.

Znajdź punkt środkowy w górnej części krzywej i wywierć otwór, aby pasował do elastycznej szyjki zapalniczki. W moim przesunęłam otwór w kierunku tyłu, ponieważ moja lampa będzie miała w większości pochyloną szyjkę do przodu, więc chciałem dodać do tego odrobinę przeciwwagi. Moja elastyczna szyja miała nieco ponad 1/4 cala średnicy, więc użyłem 1/4 cala bitu (największego skręcanego bitu, jaki posiadam, który ma mniej niż 3/4 cala) i po prostu ostrożnie ustawiłem pod kątem i skręciłem wiercić, aby „wywiercić” otwór, aż szyjka będzie pasować.

Teraz, gdy mamy już części do obudowy, następnym krokiem jest dodanie elektroniki i złożenie jej w całość!

Krok 4: Budowanie obudowy elektroniki, krok 2

Budowanie obudowy elektroniki, krok 2
Budowanie obudowy elektroniki, krok 2
Budowanie obudowy elektroniki, krok 2
Budowanie obudowy elektroniki, krok 2
Budowanie obudowy elektroniki, krok 2
Budowanie obudowy elektroniki, krok 2
Budowanie obudowy elektroniki, krok 2
Budowanie obudowy elektroniki, krok 2

Teraz dodajemy przyciski i potencjometr i składamy to wszystko razem.

Krok 1: Przyciski i śruby

Odkręć nakrętki sześciokątne od przycisków i potencjometru. Pod nakrętką powinien znajdować się pierścień zaciskowy, który należy pozostawić na miejscu.

Przełóż każdy element przez odpowiedni otwór, a następnie przykręć z powrotem nakrętki, aby zabezpieczyć je na miejscu. Dokręć nakrętki do punktu, w którym masz pewność, że każdy element jest całkowicie zabezpieczony.

Krok 2. Zginaj szyję

Przełóż elastyczną szyjkę przez otwór w górnej części zakrzywionego elementu. Przyklej na gorąco lub zgrzej (jeśli masz sprzęt) szyjkę bezpiecznie na swoim miejscu.

Jeśli używam gorącego kleju, tak jak ja, dobrym pomysłem jest przyklejenie go dużą ilością kleju po obu stronach rozłożonego na dużej powierzchni, aby zapobiec późniejszemu odklejaniu się kleju.

Krok 3: Montaż skorupy (nie dotyczy skorupy drukowanej w 3D)

Za pomocą pręta spawalniczego lub gorącego kleju przymocuj przednią i tylną płytę czołową w odpowiednich miejscach na łukowej pokrywie. Zajęło mi kilka prób, aby klej się skleił, i tak jak wcześniej, sztuka polega na użyciu dużej ilości kleju po obu stronach złącza, podobnie jak szyja. Im większy obszar pokryty klejem, tym lepiej się przyklei.

Teraz, gdy mamy powłokę, możemy przejść do dodawania wszystkich bitów obwodów.

Krok 5: Dodawanie elektroniki

Dodawanie elektroniki
Dodawanie elektroniki
Dodawanie elektroniki
Dodawanie elektroniki
Dodawanie elektroniki
Dodawanie elektroniki

A oto fajna część: lutowanie! Szczerze mówiąc, w ostatnich tygodniach zmęczyłem się trochę lutowaniem, ponieważ ostatnio robiłem to tak często, aby spróbować ukończyć kolejny projekt, który powinienem wkrótce zrealizować (uważaj na zradykalizowaną nową wersję mojego zrobotyzowanego wyświetlacza platform), w wyniku czego zniszczyłem jedno żelazko i dostałem drugie… W każdym razie nie ma tu zbyt wiele do lutowania, więc powinno to być całkiem proste.

Uwaga: Jeśli twój Nano ma już nagłówki pinów, polecam je wylutować do tego projektu, będą tylko przeszkadzać.

Na powyższych zdjęciach jest schemat, możesz go śledzić, jeśli chcesz.

Krok 1: Interfejs

Z każdego z przełączników przylutuj przewód od pojedynczego pinu do bocznego pinu potencjometru. Przylutuj przewód z tego samego kołka bocznego do kołka uziemiającego w Nano.

Przylutuj przewód od środkowego pinu potencjometru do A0 na Nano.

Przylutuj przewód z niepodłączonego pinu dowolnego przełącznika do A1 w Nano.

Przylutuj przewód z niepodłączonego pinu na drugim przełączniku do A2 na Nano.

Uwaga: Nie ma znaczenia, który przełącznik jest który, możesz je bardzo łatwo zmienić w kodzie, poza tym, że jeden przełącznik po prostu działa odwrotnie.

Wytnij drut o 4 cale dłuższy niż elastyczna szyjka i zdejmij obie strony. Używając Sharpie, zaznacz jedną stronę pojedynczą linią.

Przylutuj przewód do ostatniego niepodłączonego bocznego kołka potencjometru, skręć niepodłączony koniec tego przewodu razem z nieoznaczonym końcem przewodu z ostatniego podkroku.

Przylutuj ten połączony koniec do 5V na Nano.

Krok 2: Przewody wyświetlacza i zasilania

Wytnij 2 odcinki drutu o 4 cale dłuższe niż elastyczna szyjka i zdejmij oba końce.

Używając Sharpie, zaznacz końce każdego drutu, jeden z 2 liniami, a drugi z 3.

Przylutuj przewód z 2 liniami do cyfrowego pinu 9 w Nano.

Na swoim 5 mm gnieździe baryłkowym przylutuj przewód od środkowego kołka (dodatni) do Vin na Nano.

Przylutuj kolejny przewód do bocznego styku (masa/ujemny) gniazda lufy.

Skręć długi drut za pomocą 3 linek razem z drutem z bocznego sworznia gniazda lufy.

Przylutuj te przewody do otwartego pinu GND w Nano.

W razie potrzeby zaizoluj połączenia taśmą elektryczną lub gorącym klejem.

Krok 3: Wycinanie otworów (tylko w wersji metalowej, jeśli wydrukowałeś okładkę w 3D, wszystko powinno być w porządku)

Używając wiertła i noża X-acto lub Utility Knife, ostrożnie wykonaj otwór w bocznej części pokrywy na port USB Nano.

Zrób kolejny otwór mniej więcej wielkości czoła gniazda lufy z tyłu pokrywy, najlepiej bliżej strony przeciwnej do otworu na port USB.

Krok 4: Montaż elementów

Przeprowadź trzy długie druty przez elastyczną szyjkę i wyjdź na drugą stronę.

Używając dużej ilości gorącego kleju, zamontuj podnośnik beczkowy na miejscu z kołkami skierowanymi do góry pokrywy.

Ponownie używając dużej ilości gorącego kleju, zamontuj Nano na miejscu, z przyciskiem resetowania skierowanym w dół i portem USB w gnieździe. Zrobiłem „mostek gorącego kleju” między gniazdem beczkowym a Nano, co sprawia, że każdy z nich utrzymuje się na swoim miejscu.

Teraz możemy przejść do stworzenia bazy ważonej!

Krok 6: Podstawa ważona

Ważona podstawa
Ważona podstawa
Ważona podstawa
Ważona podstawa
Ważona podstawa
Ważona podstawa

Jestem pewny swoich umiejętności lutowania i miałem to dobrze zaplanowane, więc dodałem bazę przed testowaniem kodu. Jeśli jesteś mniej pewny swoich umiejętności, sugerowałbym pominięcie tego kroku i powrót do niego na końcu, gdy wiesz, że wszystko działa.

Jeśli stworzyłeś wersję drukowaną w 3D, możesz pominąć pierwszy krok i przejść do drugiego.

Krok 1: Drewno

Z arkusza sklejki 1/4 cala wytnij podstawę około 3 cali na 2 cale.

Przeszlifuj krawędzie, aby je wygładzić i usunąć wiertła.

Krok 2: Waga

Po pierwsze, upewnij się, że wybrana przez Ciebie masa jest taka, że magnes, metal lub lutowany na zamówienie pasuje do krawędzi wykonanej przez nas metalowej osłony. Mój był trochę za duży w jedną stronę, więc ogoliłem trochę z boku nożem X-acto. Jeśli twój nie jest typem, w którym możesz to zrobić, być może będziesz musiał pobawić się z innym projektem podstawowym.

Przyklej na gorąco swoją wagę na środku kawałka sklejki, lub w przypadku druku 3D, w środkowym obszarze „tacy”, którą zaprojektowałem w tym celu.

Krok 3: Baza

Załóż metalową osłonę na ciężarek i wyśrodkuj ją na drewnianej podstawie. (W przypadku drukowanego projektu 3D, wpasuj go w przygotowane rowki.)

Upewnij się, że ciężar nie koliduje z żadną elektroniką

Użyj gorącego kleju, aby zabezpieczyć podstawę na miejscu. Użyj tyle, aby zapewnić stabilne połączenie.

Teraz, gdy mamy już całkowicie wykonaną skrzynkę kontrolną, przejdźmy do świateł.

Krok 7: Pierścień Halo NeoPixel

Pierścień Halo NeoPixel
Pierścień Halo NeoPixel
Pierścień Halo NeoPixel
Pierścień Halo NeoPixel
Pierścień Halo NeoPixel
Pierścień Halo NeoPixel
Pierścień Halo NeoPixel
Pierścień Halo NeoPixel

Inspiracją dla nazwy tej lampy, ta część to halo ring NeoPixel, którego będziemy używać jako źródła oświetlenia. Ten konkretny element można w razie potrzeby zmodyfikować lub zastąpić dowolnym NeoPixelem lub indywidualnie adresowalnym pierścieniem LED.

Krok 1: Lutowanie

Wytnij pasek NeoPixels o długości 12 diod LED.

Przylutuj pin GND do przewodu z elastycznej szyjki, która ma 3 linie.

Przylutuj pin Din do przewodu, który ma 2 linie.

Przylutuj pin 5V do przewodu, który ma 1 linię.

Krok 2: Przetestuj światła

Pobierz i zainstaluj bibliotekę Adafruit_NeoPixel i otwórz kod "strandtest".

Zmień stały PIN na 9.

Zmień linię, w której zdefiniowany jest pasek, tak aby była skonfigurowana na 12 diod LED.

Prześlij kod do Nano i upewnij się, że wszystkie diody LED działają poprawnie.

Wymień uszkodzone diody na sprawne, aż cały pasek będzie działał.

Krok 3: Zadzwoń

Zdejmij górny pierścień ze światła „Stick and Click” i odetnij wszelkie mocowania śrubowe na wewnętrznej obręczy.

Wytnij małe nacięcie na krawędzi na przewody z paska.

Zdejmij osłonę taśmy samoprzylepnej z tyłu NeoPixels (jeśli jest) i przyklej je do pierścienia, z każdym końcem paska dokładnie w miejscu, które wykonaliśmy.

Użyj gorącego kleju, aby mocno zabezpieczyć krawędzie paska

Po całkowitym ostygnięciu kleju ponownie przetestuj piksele. Ma to na celu upewnienie się, że nikt nie jest wybredny w kwestii upału i curlingu (kilka moich było).

Krok 4: Zamontuj

Wytnij dwa małe prostokąty z drewna 1/4 cala, mniej więcej na wysokość pierścienia i 1 2/3 razy szersze.

Przyklej je równolegle do siebie po obu stronach drutów od pierścienia, wypełniając szczelinę i zakrywając druty pomiędzy całkowicie klejem.

Ostrożnie wepchnij nadmiar drutu z powrotem do elastycznej szyjki, a następnie przyklej kawałki drewna do końca szyjki, używając dużej ilości kleju i dokładnie wypełniając wszelkie szczeliny (bez wypełniania szyjki klejem).

Krok 6: Wykończenie

Możesz pomalować pierścionek i zamontować dowolny kolor, jeśli chcesz, wolałem srebrne wykończenie, więc użyłem tylko Sharpie do zakrycia logo, które było (irytująco) wydrukowane na pierścionku. To samo dotyczy reszty lampy.

Teraz możemy przejść do końcowego kodu!

Krok 8: Kody i testy

Kody i testy
Kody i testy
Kody i testy
Kody i testy

Teraz wystarczy zaprogramować lampę i ją przetestować. W załączeniu aktualna wersja kodu (rev1.0), testowałem ten kod dość obszernie i działa bardzo dobrze. Pracuję nad rev2.0, w którym przyciski są skonfigurowane jako zewnętrzne przerwania, dzięki czemu można łatwiej przełączać tryby, ale ta wersja jest błędna i nie jest jeszcze gotowa do wydania. W obecnej wersji musisz przytrzymać przycisk, aż uruchomi pętlę Debounce i rozpozna zmianę stanu, co może być denerwujące w przypadku dłuższych pętli „Dynamic”. Poniżej znajduje się kod z napisanymi wyjaśnieniami (te same wyjaśnienia są w wersji do pobrania).

#include #ifdef _AVR_ #include #endif

#zdefiniuj PIN 9

#define POT A0 #define BUTTON1 A1 #define BUTTON2 A2

// Parametr 1 = liczba pikseli w pasku

// Parametr 2 = numer pinu Arduino (większość jest prawidłowa) // Parametr 3 = flagi typu piksela, dodaj je w razie potrzeby: // Strumień bitów NEO_KHZ800 800 KHz (większość produktów NeoPixel z diodami LED WS2812) // NEO_KHZ400 400 KHz (klasyczny ' v1' (nie v2) piksele FLORA, sterowniki WS2811) // NEO_GRB Piksele są okablowane dla strumienia bitowego GRB (większość produktów NeoPixel) // NEO_RGB Piksele są okablowane dla strumienia bitowego RGB (piksele v1 FLORA, nie v2) // NEO_RGBW Piksele są okablowane dla RGBW bitstream (produkty NeoPixel RGBW) Adafruit_NeoPixel halo = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800);

// A teraz wiadomość o bezpieczeństwie od naszych przyjaciół z Adafruit:

// WAŻNE: Aby zmniejszyć ryzyko przepalenia NeoPixel, dodaj kondensator 1000 uF w poprzek

// przewody zasilające piksela, dodaj rezystor 300 - 500 Ohm na wejściu danych pierwszego piksela // i zminimalizuj odległość między Arduino a pierwszym pikselem. Unikaj podłączania // do obwodu pod napięciem…jeśli musisz, najpierw podłącz GND.

// Zmienne

int buttonState1; int buttonState2; // aktualny odczyt z pinu wejściowego int lastButtonState1 = LOW; // poprzedni odczyt z pinu wejściowego int lastButtonState2 = LOW; tryb wewnętrzny; //tryb naszych świateł może być jednym z 16 ustawień (0 do 15) int brightVal = 0; //jasność/prędkość ustawiona potencjometrem

// poniższe zmienne są długie, ponieważ czas mierzony w milisekundach, // szybko stanie się większą liczbą niż można przechowywać w int. long lastDebounceTime = 0; // ostatni raz przełączano pin wyjściowy long debounceDelay = 50; // czas odbicia; zwiększyć, jeśli wyjście migocze

nieważne odbicie (){

// odczytaj stan przełącznika do zmiennej lokalnej: int reading1 = digitalRead(BUTTON1); int czytanie2 = digitalRead(BUTTON2); // Jeśli któryś z przycisków zmienił się z powodu szumu lub naciśnięcia: if (reading1 != lastButtonState1 || reading2 != lastButtonState2) { // resetuje licznik odbicia lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // jeśli stan przycisku definitywnie zmienił się w wyniku naciśnięcia/zwolnienia: if (odczyt1 != buttonState1) { buttonState1 = czytanie1; //ustaw jako odczyt jeśli jest zmieniony if (buttonState1 == LOW) { //są ustawione jako aktywne niskie przełączniki tryb ++; jeśli (tryb == 16){ tryb = 0; } } } if (odczyt2 != stan_przycisku2){ stan_przycisku2 = odczyt2; if (buttonState2 == LOW){ tryb = tryb - 1; if (tryb == -1){ tryb = 15; } } } } // zapisz odczyt na następny raz przez pętlę lastButtonState1 = reading1; lastButtonState2 = czytanie2; }

void getBright(){ //nasz kod do odczytu potencjometru, zwraca wartość od 0 do 255. Służy do ustawiania jasności w niektórych trybach i szybkości w innych.

int potVal = odczyt analogowy(POT); brightVal = map(potVal, 0, 1023, 0, 255); }

//Oto nasze tryby kolorów. Niektóre z nich pochodzą z przykładu strandtest, inne są oryginalne.

// Wypełnij kropki jedna po drugiej kolorem (colorwipe, pochodzące z strandtest)

void colorWipe(uint32_t c, uint8_t czekaj) { for(uint16_t i=0; i

//funkcje tęczy (również wywodzące się z strandtest)

void rainbow(uint8_t czekaj) {

uint16_ti, j;

for(j=0; j<256; j++) { for(i=0; i

// Nieco inaczej, dzięki temu tęcza jest równomiernie rozłożona

void rainbowCycle(uint8_t czekaj) { uint16_t i, j;

for(j=0; j<256*5; j++) { // 5 cykli wszystkich kolorów na wheel for(i=0; i< halo.numPixels(); i++) { halo.setPixelColor(i, Wheel(((i * 256 / halo.numPixels()) + j) i 255)); } halo.pokaż(); opóźnienie (czekaj); } }

// Wprowadź wartość od 0 do 255, aby uzyskać wartość koloru.

// Kolory są przejściem r - g - b - z powrotem do r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return halo. Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(PozycjaKół < 170) { PozycjaKół -= 85; return halo. Color(0, Pozycja koła * 3, 255 - Pozycja koła * 3); } Pozycja koła -= 170; return halo. Color(PozycjaKół * 3, 255 - PozycjaKół * 3, 0); }

pusta konfiguracja () {

// To jest dla Trinket 5V 16MHz, możesz usunąć te trzy linie, jeśli nie używasz Trinket #if zdefiniowany (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Koniec specjalnego kodu bibelotu pinMode(POT, INPUT); pinMode(BUTTON1, INPUT_PULLUP); pinMode(BUTTON2, INPUT_PULLUP); pinMode(PIN, WYJŚCIE); Serial.początek(9600); //debugowanie rzeczy halo.begin(); halo.pokaż(); // Zainicjuj wszystkie piksele na „wyłączone” }

pusta pętla () {

Obalić();

//Serial.println(tryb); //więcej debugowania //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);

jeśli (tryb == 0){

getBright(); for (int i = 0; i < halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, brightVal, brightVal)); //ustaw wszystkie piksele na białe } halo.show(); }; if (tryb == 1){ getBright(); for (int i = 0; i < halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, 0, 0)); // ustawia wszystkie piksele na czerwony } halo.show(); }; if (tryb == 2){ getBright(); for (int i = 0; i < halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(0, brightVal, 0)); // ustawia wszystkie piksele na zielono } halo.show(); }; if (tryb == 3){ getBright(); for (int i = 0; i < halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(0, 0, brightVal)); // ustaw wszystkie piksele na niebieski } halo.show(); }; if (tryb == 4){ getBright(); for (int i = 0; i < halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(0, brightVal, brightVal)); // ustaw wszystkie piksele na cyjan } halo.show(); }; if (tryb == 5){ getBright(); for (int i = 0; i < halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, 0, brightVal)); // ustaw wszystkie piksele na fioletowy/magenta } halo.show(); }; if (tryb == 6){ getBright(); for (int i = 0; i < halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, brightVal, 0)); // ustaw wszystkie piksele na pomarańczowy/żółty } halo.show(); }; if (mode == 7){ //teraz tryby dynamiczne getBright(); colorWipe(halo. Color(brightVal, 0, 0), 50); // Czerwony }; if (tryb == 8){ getBright(); colorWipe(halo. Color(0, brightVal, 0), 50); // Zielony }; if (tryb == 9){ getBright(); colorWipe(halo. Color(0, 0, brightVal), 50); // Niebieski }; if (tryb == 10){ getBright(); colorWipe(halo. Color(brightVal, brightVal, brightVal), 50); // biały }; if (tryb == 11){ getBright(); colorWipe(halo. Color(brightVal, brightVal, 0), 50); // pomarańczowy żółty }; if (tryb == 12){ getBright(); colorWipe(halo. Color(0, brightVal, brightVal), 50); // cyjan }; if (tryb == 13){ getBright(); colorWipe(halo. Color(brightVal, 0, brightVal), 50); // fioletowy/magenta }; if (mode == 14){ // ostatnie dwa to kontrola prędkości, ponieważ jasność jest dynamiczna getBright(); tęcza(brightVal); }; if (tryb == 15){ getBright(); rainbowCycle(brightVal); }; opóźnienie(10); //pozwól procesorowi trochę odpocząć }

Krok 9: Wielki Finał

Wielki Finał
Wielki Finał

A teraz mamy fantastyczną, superjasną małą lampkę!

Możesz go dalej modyfikować lub pozostawić bez zmian. Możesz zmienić kod, a nawet całkowicie napisać nowy. Możesz powiększyć bazę i dodać baterie. Możesz dodać wentylator. Możesz dodać więcej NeoPixels. Lista wszystkiego, co możesz z tym zrobić, jest prawie nieskończona. Mówię „prawie”, ponieważ jestem prawie pewien, że nadal nie mamy technologii, aby przekształcić to w generator mini portali (niestety), ale poza tym jedynym ograniczeniem jest twoja wyobraźnia (i do pewnego stopnia, jak niedawno znalazłem narzędzia w twoim warsztacie). Ale jeśli nie masz narzędzi, nie pozwól, aby cię to powstrzymało, jeśli naprawdę chcesz coś zrobić, zawsze jest sposób.

To jest część sensu tego projektu, aby udowodnić sobie (i w mniejszym stopniu światu), że potrafię zrobić użyteczne rzeczy, które również innym ludziom spodobają się, nawet jeśli mam tylko istną kupę starych i złomowanych śmieci. komponenty i pojemnik na materiały eksploatacyjne Arduino.

Skończę tutaj, bo myślę, że ten wyszedł całkiem nieźle. Jeśli masz propozycję ulepszenia lub pytanie dotyczące moich metod, zostaw komentarz poniżej. Jeśli to zrobiłeś, zrób zdjęcie, wszyscy chcemy to zobaczyć!

Nie zapomnij zagłosować, jeśli Ci się to podoba!

Jak zawsze są to projekty Dangerously Explosive, jego życiowej misji „Odważnie budować to, co chcesz zbudować i nie tylko!”

Resztę moich projektów znajdziesz tutaj.

Dziękujemy za przeczytanie i życzę miłego tworzenia!

Zalecana: