
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03




Jakiś czas temu znalazłem zabawkę dla dzieci ze światłowodami w sklepie za dolara i zacząłem się zastanawiać, co mogę z nią zrobić.
Jednym z szalonych pomysłów, jakie miałem, było zrobienie krawata z efektem rozgwieżdżonego nieba.
Wciąż miałem kilka arduino pro mini, płyt adafruit i baterii, które prawdopodobnie pasowałyby do tego projektu.
Więc jak tylko znalazłem ładny szeroki krawat w lombardzie w moim mieście i znalazłem pudełko, które mogłoby pasować do sprzętu, zdecydowałem się na niego i spróbować go zbudować.
Ta instrukcja pokazuje, jak to zrobiłem.
Działa na arduino pro mini, ładowarce adafruit powerboost 500, emmerich icr 18650nh-sp i 5 białych diodach LED. Kod powoduje, że diody LED zmieniają jasność losowo. (Pierwsze 40 sekund filmu to 3x szybkość)
Krok 1: Schematy i sprzęt


Używam następującego sprzętu:
- PCB z białymi diodami LED i rezystorami 220 Ohm.
- Arduino pro mini (użyłem podróbki)
- Ładowarka Adafruit Powerboost 500
- Akumulator litowo-jonowy Emmerich ICR-18650NH-SP
- Włókna światłowodowe (w różnych rozmiarach)
Krok 2: Tworzenie PCB hostującej diody LED



Odciąłem pasek z płytki PCB, aby trzymać diody LED i użyłem pinów LED do przylutowania go do głównej płytki drukowanej.
Podłączyłem wszystkie katody (-) do GND i użyłem połowy pinów do przylutowania go przyklejonego do głównej płytki drukowanej.
Podłączyłem wszystkie anody (+) do rezystorów, a kablami do arduino.
Każda dioda LED musi być podłączona do jednego z następujących portów PWM: 3, 5, 6, 9, 10, 11
Głupio popełniłem wiele błędów przy tym projekcie i zapomniałem sprawdzić poprawne porty PWM, więc musiałem przelutować kilka później. Testowane z High/Low, więc zauważyłem to dopiero później.
Zacząłem od 7 diod LED, ale było tylko 6 portów PWM i jedna z diod, które odlutowałem, zgasła. Po prostu zachowałem 5 działających diod LED i nie używam szóstej.
Krok 3: Tworzenie pudełka




Użyłem Bosch GRO (jak Dremel) i wiertarki do wycięcia kształtu baterii, przycisku, portu micro-usb, nagłówków z Arduino i światłowodów. (użyj maski przeciwpyłowej!)
Przykleiłem baterię do obudowy za pomocą 2 opasek.
Używane śruby do montażu płytki Adafruit i PCB.
Tarcie przy otwieraniu i zamykaniu uszkodziło niektóre przewody. Musiałem je odsprzedać i użyć kleju, aby to się nie powtórzyło.
Krok 4: Przygotowanie krawata



Usunięto szwy z dolnej części krawata, aby pasowały do gumowego arkusza.
Aby ukryć sprzęt i nadal mieć do niego dostęp w razie potrzeby, zdecydowałem się użyć zamka błyskawicznego.
Nie radzę sobie z maszyną do szycia, więc moja słodka mama założyła zamek błyskawiczny z tyłu krawata.
Po wykonaniu tej czynności wkleiłem gumowy arkusz w krawat. Bałem się używać zbyt dużej ilości kleju, który nasyci tkaninę i będzie widoczny z przodu, więc starałem się go wyrównać i nie używać za dużo. Ogólnie wygląda dobrze, ale w kilku miejscach zauważyłem za dużo lub za mało kleju, ponieważ przenikał przez tkaninę lub nie kleił zbyt dobrze. Na szczęście jest to ledwo widoczne z bliskiej odległości w jasnym świetle.
Pudełko i krawat są gotowe. Czas na sklejenie światłowodów!
Krok 5: Klejenie światłowodów




Zabawka miała jedną dużą wiązkę przewodów światłowodowych, które łatwo się rozpadały. Na początku próbowałem sklejać je jeden po drugim, ale wkrótce zauważyłem, że lepiej byłoby zrobić małe wiązki i przykleić je od razu do diody LED. Ułatwiłoby to utrzymanie go w stałym stanie, dopóki klej nie wyschnie. Zepsułem pierwszą diodę LED, która to rozgryzła.
Pamiętaj, aby użyć przezroczystego kleju! Ten, którego użyłem, wysychał bardzo powoli, a szybkoschnący klej, który wypróbowałem na pierwszej diodzie LED, zmienił kolor na biały, przez co niektóre włókna z pierwszej diody LED były mniej jasne.
Przykleiłem małe czarne gumowe arkusze, aby zapobiec przeciekaniu światła na górze i oddzielić diody LED.
Jeden z arkuszy uniemożliwiał zamknięcie etui, więc dodałem gumkę, aby zamknąć pokrywę.
Krok 6: Przepuszczanie światłowodów przez krawat



Zaczynając od dołu, zacisnąłem igłą otwory i kolejno przepuszczałem włókna. Włókna każdej diody LED rozchodzą się losowo na krawacie.
Z tyłu przykleiłem czarny pasek, który miał sięgać do mniejszej części krawata, aby utrzymać wagę pudełka, ale po przełożeniu wszystkich przewodów i wyczuciu napięcia przewodów postanowiłem skleić wszystko do krawata było lepszym pomysłem i odciąć pasek.
Ponieważ przewody światłowodowe z zabawki były tak krótkie, trudno było je dopasować do krawata. Miałem ograniczone możliwości ustawienia pudełka i trudno było mi zrobić wszystko tak płasko, jak chciałem.
Krok 7: Przyklejanie światłowodów do krawata




Przykleiłem wszystkie przewody światłowodowe do arkusza gumy, aby zapobiec wyciąganiu przewodów z arkusza gumy i spłaszczyć krawat.
Aby upewnić się, że nie przykleiłem zacisku do krawata, gdy naciskałem na niego, włożyłem trochę papieru pomiędzy. Nie wygląda to dobrze, ale działa dobrze. I nie widzisz go, gdy jest zamknięty.
Po wyschnięciu kleju odciąłem druciki z przodu i odciąłem nieco gumkę tuż nad najwyższym drucikiem, bo krawat był trochę za długi.
Zdjęcia z białą koszulą zostały zrobione przed odcięciem ostatniego kawałka gumy.
Krok 8: Kodeks
Poniżej kod, który napisałem do krawata.
Wszystkie diody LED mają ustawioną "średnią" (w rzeczywistości nie średnią, ale średnią jasność).
Gdy tylko osiągnie tę średnią, zdecyduje się z szansą 3/4 przejść na niższą jasność. Ponadto losowo ustawia nową minimalną jasność, maksymalną jasność, czas oczekiwania na minimalną i maksymalną jasność oraz prędkość, którą zwiększa lub zmniejsza co rundę (1-255) z 5 wstępnie ustawionych wartości. Następnie wykona cykl, aż ponownie osiągnie średnią. Tylko 2 diody LED mogą jednocześnie pracować w wysokim cyklu.
Każdy stan jest reprezentowany przez wartość całkowitą (1-7) określającą, czy stan jest średnio niski, niski, czeka na niski stan, aktualizuje się itp.
Aby uzyskać informacje o wgrywaniu kodu do arduino, zajrzyj na www.arduino.cc
/* Starry Sky Tie * * Jest to skrypt do losowego zanikania 5 diod LED od średniej do niższej * lub wyższej jasności z losowymi ustawieniami niższej, wyższej i czasowej * tak, aby wyglądały jak gwiaździste niebo przy użyciu światłowodów. * W tym przypadku zostaną one zrealizowane w remisie. * * Szansa w górę/w dół = 1/4 w górę, 3/4 w dół, przy czym maksymalnie 2 * wzrasta do maksimum w tym samym czasie. * * Średnia pozostaje taka sama. * Minimum, maksimum i opcje czasowe zmieniają się losowo * z 5 opcji za każdym razem, gdy dioda LED ponownie osiągnie średnią. * * Stworzony przez Billy'ego Jaspersa, maj 2019. *
/ Zadeklaruj szpilki
wewn. LED01 = 3; wewn. LED02 = 5; wewn. LED03 = 6; wewn. LED04 = 9; wewn. LED05 = 11;
// Zmienne czasu
unsigned long currentTime; niepodpisany długi czas oczekiwania[5]; niepodpisany długi ostatniOkrąg;
// Zmienne LED
int jasnośćMin [5] = { 10, 10, 10, 10, 10 }; // Minimalna jasność int brightAvg [5] = { 200, 200, 200, 200, 200 }; // Średnia jasność int brightMax[5] = { 240, 240, 240, 240, 240 }; // Maksymalna jasność int timeWaitLow[5] = { 1000, 1000, 1000, 1000, 1000 }; // Czas oczekiwania int timeWaitAvg[5] = { 5000, 5000, 5000, 5000, 5000 }; // Czas oczekiwania int timeWaitMax[5] = { 4000, 3000, 3000, 3000, 3000 }; // Czas oczekiwania int increment[5] = { 2, 5, 4, 5, 2 }; // Przyrost jasności int currentBright[5]= { 200, 230, 210, 210, 235 }; // Aktualna jasność
// Możliwości zmiennych LED
int jasnaMinPoz[5] = { 5, 20, 40, 5, 20 }; // Minimalne możliwości jasności int brightMaxPos[5] = { 240, 245, 230, 225, 245 }; // Maksymalne możliwości jasności int timeLowPos[5] = { 3000, 5000, 4000, 2000, 1000 }; // Czas oczekiwania na możliwości niskiej jasności int timeHighPos[5] = { 3000, 1000, 500, 2000, 4000 }; // Czas oczekiwania przy możliwościach wysokiej jasności int timeAvgPos[5] = { 3000, 5000, 4000, 7000, 8000 }; // Czas oczekiwania na średnie możliwości jasności int incrementPos[5] = { 2, 4, 5, 3, 1 }; // zwiększenie możliwości jasności
// Zmienne
bool start = prawda; // Czy trzeba uruchomić ustawienia początkowe?
// Zmienne kierunkowe
/* 0 = Oczekiwanie na średnią 1 = oczekiwanie od średniej do niskiej 2 = oczekiwanie na niski 3 = od niskiej do średniej 4 = od średniej do maksymalnej 5 = oczekiwanie na maksimum 6 = od wysokiej do średniej 7 = Aktualizuję zmienne*/ int statusLED[5] = { 0, 0, 0, 0, 0}; int ilośćHighLED = 0; int częstotliwość odświeżania = 50; bool statusOczekiwanie[5] = { fałsz, fałsz, fałsz, fałsz, fałsz}; // Czy Led czeka?
// Zmienne losowe
długa liczba losowa; // Long do przechowywania liczby losowej long randomNumberTwo; // Long, aby zapisać drugą losową liczbę
// liczniki
int i = 0; // Licznik pętli głównej
pusta konfiguracja () {
Serial.początek (115200); // Uruchom serial randomSeed(analogRead(A0)); // Ustaw randomseed
// Zadeklaruj wyjścia
pinMode (LED01, WYJŚCIE); pinMode (LED02, WYJŚCIE); pinMode (LED03, WYJŚCIE); pinMode (LED04, WYJŚCIE); pinMode (LED05, WYJŚCIE); }
// Zapisz dane do diod LED
void writeToLED(){ analogWrite(LED01, currentBright[0]); analogWrite(LED02, currentBright[1]); zapis analogowy(LED03, prądJasny[2]); analogWrite(LED04, currentBright[3]); analogWrite(LED05, currentBright[4]); }
// Główna pętla
void loop() { if (startup){ // Ustawienia startowe lastRound = millis(); // Ustaw lastRound dla boot writeToLED(); // Zapisz dane startowe do diody LED startup = false; // Wyłącz uruchamianie } currentTime = millis(); // Ustaw aktualny czas
if (currentTime - lastRound >= częstotliwość odświeżania){
for (i=0;i<5;i++){ if (statusLED == 7){ // -7- Led aktualizacji randomNumber = random(5); jasnaMin = jasnaMinPos[liczba losowa]; // Ustaw losową wartość minimalnej jasności randomNumber = random(5); brightMax = brightMaxPos[losowaLiczba]; // Ustaw losową wartość maksymalnej jasności randomNumber = random(5); NiskiCzasOczekiwania = NiskiPozycjaCzasu[Liczba Losowa]; // Ustaw losową wartość dla krótkiego czasu oczekiwania randomNumber = random(5); czasOczekiwaniaMax = czasWysPos[losowaLiczba]; // Ustaw losową wartość długiego czasu oczekiwania randomNumber = random(5); ŚrCzasOczekiwania =ŚrPozycjaCzasu[Liczba Losowa]; // Ustaw losową wartość średniego czasu oczekiwania randomNumber = random(5); przyrost = przyrostPozycja[Liczbalosowa]; // Ustaw losową wartość dla wartości przyrostu randomNumber = random(2); // Ustaw losową wartość dla kierunku randomNumberTwo = random(2); // Ustaw losową wartość dla kierunku if (randomNumber == 1 && randomNumberTwo == 0 && ilośćHighLED = brightAvg){ statusLED = 0; // Jeśli w najniższym punkcie: Przejdź do Średnia oczekiwania }else{ currentBright = currentBright+increment; // Else: Większa jasność } }else if (statusLED == 2){ // -2- Waiting Low if (!statusWaiting){ // Jeśli nie czekasz: waitTime = millis(); // Ustaw czas oczekiwania statusWaiting = true; // Rozpocznij czekanie }else if(statusOczekiwanie && aktualnyCzasCzasOczekiwania >= timeWaitLow){ // Jeśli minęło ORAZ timeWaitAvg: statusWaiting = false; // Przestań czekać statusLED = 3; // Ustaw statusLed na Oczekiwanie na aktualizację } }else if (statusLED == 1){ // -1- Średnio na niski if (currentBright <= brightMin){ statusLED = 2; // Jeśli w najniższym punkcie: Przejdź do Oczekiwanie Nisko }else{ currentBright = currentBright-increment; // W przeciwnym razie: Zmniejsz jasność } }else if (statusLED == 6){ // -6- Przejście z wartości maksymalnej do średniej if (currentBright = timeWaitMax){ // Jeśli upłynęło oczekiwanie AND timeWaitAvg: statusOczekiwanie = fałsz; // Przestań czekać statusLED = 6; // Ustaw statusLed na Oczekiwanie na aktualizację } }else if (statusLED == 4){ // -4- Średnia do maksymalnej if (currentBright >= brightMax){ statusLED = 5; // Jeśli w najniższym punkcie: Przejdź do Oczekiwania wysoko }else{ currentBright = currentBright+increment; // Else: wyższa jasność } }else if (statusLED == 0){ // -0- Oczekiwanie na średnią if (!statusWaiting){ // Jeśli nie czekasz: waitTime = millis(); // Ustaw czas oczekiwania statusWaiting = true; // Rozpocznij oczekiwanie }else if(statusOczekiwanie && aktualnyCzasCzasOczekiwania >= czasOczekiwania){ // Jeśli oczekiwanie ORAZ czasOczekiwania minęło: statusOczekiwanie = false; // Przestań czekać statusLED = 7; // Ustaw statusLed na Oczekiwanie na aktualizację } } } i=0; ostatnia runda = mili(); // Ustaw, kiedy zakończy się ostatnia runda. writeToLED(); // Zapisz wszystkie dane do diod LED } }
Krok 9: Produkt końcowy




Myślę, że wyszło dobrze. Krawat nie jest zbyt gruby, sztywny, długi ani ciężki, a efekt gwiazdy wygląda niesamowicie.
Zalecana:
Działający krawat fortepianowy: 6 kroków

Roboczy krawat fortepianowy: Lata 80. przyniosły wiele wielkich osiągnięć w modzie i muzyce. Była muzyka syntezatorowa, funky keytar, legginsy i klasyczny męski krawat fortepianowy. Te krawaty były noszone ironicznie (i unironicznie) przez wielu modnych (i niemodnych)
Podgrzewacz rosy Raspberry Pi do kamery All-sky: 7 kroków

Podgrzewacz rosy Raspberry Pi do kamery All-sky: [Spójrz na krok 7, aby zmienić używany przekaźnik] Jest to aktualizacja do kamery All-Sky, którą zbudowałem zgodnie z doskonałym przewodnikiem Thomasa Jaquina (bezprzewodowa kamera All Sky) Częsty problem w przypadku kamer nieba (i teleskopów też) jest to, że rosa będzie ko
Zbuduj tablicę pogody za pomocą interfejsu Dark Sky API: 5 kroków (ze zdjęciami)

Zbuduj pulpit nawigacyjny pogody za pomocą interfejsu API Dark Sky: Dark Sky specjalizuje się w prognozowaniu pogody i wizualizacji. Najfajniejszym aspektem Dark Sky jest interfejs API pogody, którego możemy użyć do pobrania danych pogodowych z niemal dowolnego miejsca na świecie. To nie tylko pogoda jest deszczowa lub słoneczna, ale także temperatu
Dark Sky API PyPortal i tablica pogodowa: 6 kroków

Dark Sky API PyPortal i Weather Dashboard: Ten projekt jest kontynuacją tego, co zrobiliśmy wcześniej, Dark Sky API Weather Dashboard. Tym razem zamiast Raspberry Pi użyjemy Adafruit PyPortal do wyświetlenia danych pogodowych i przesłania tych danych do stanu początkowego. Dwa dashboardy do pracy jednego
SKY CAM rozwiązanie kamery lotniczej: 10 kroków (ze zdjęciami)

SKY CAM to rozwiązanie kamery lotniczej: Ten instruktaż przeprowadzi Cię przez proces tworzenia zdalnego sterowania (półautonomicznego) systemu kamer kablowych dla mojego projektu produktów elektronicznych GCSE w szkole i miejmy nadzieję, że umożliwi ci stworzenie własnego systemu! Ma to służyć jako przybliżony przewodnik