Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'led'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino, ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 5 wyników

  1. Witam Mam problem z paskiem led z diodami WS2812B i arduino uno. Pasek wyświetla błędne kolory, da przykładu kiedy chcę aby trzy diody zapaliły się na kolor czerwony to uzyskuję kolor czerwony niebieski oraz zielony. Dałem już rezystor na sygnał sterowania, ale nic to nie pomogło. Diody zasilałem zewnętrznym zasilaczem 5V i oczywiście GND spięte z GND arduino. Próbowałem też zmian w kodzie i dwóch różnych bibliotek ale cały czas mam ten sam problem.
  2. Pomysł zrodził się kilka miesięcy temu, gdy zbliżały się święta i trzeba było zastanowić się nad prezentami. Jako, że dziewczyny lubią malować paznokcie to postanowiłem obdarować moją dziewczynę lampą do paznokci. Ale jaki byłby ze mnie majsterkowicz, gdybym kupił gotową w sklepie? Przygotowanie Zabrałem się do pracy. Na początku zrobiłem research o lampach. Trzeba było odpowiedzieć sobie na kilka pytań: Jakie światło jest najlepsze do utwardzania lakieru? Jaka średnio moc maja podobne lampy? Jakie posiadają cechy charakterystyczne, funkcjonalności? Dowiedziałem się, ze moc 30-48W oraz światło UV* są najlepsze do utwardzania lakieru. Większość lamp posiada wyświetlacz, kilka przycisków oraz czujnik i odbiornik podczerwieni do wykrywania, czy ktoś włożył dłoń. Co do typu światła w lamie są podzielone opinie. Ogólnie rzecz biorąc na rynku można znaleźć 3 rodzaje lamp: ze świtałem UV, białym zimnym oraz hybrydy, czyli połączenie tych obu. Teraz pytanie który rodzaj jest najlepszy? Niestety nie da się tak prosto na to odpowiedzieć. Nie jestem ekspertem w tej dziedzinie, ale z tego co przeczytałem to UV (mówię tutaj o typie A [315–400 nm], czyli tym jeszcze widzialnym, które użyłem w moim projekcie i te które stosuje się na ogól w lampach UV) ogólnie utwardzi każdy lakier, ale zajmuje to trochę czasu. Natomiast LED o barwie "biały zimny" nie utwardzi już każdego lakieru tylko te przeznaczone do tego typu lamp. Ma też swoje plusy. Utwardzanie lakieru trwa szybciej oraz nie oślepia tak mocno jak UV. Co do szkodliwości nie będę tutaj nic pisał, bo nigdzie nie znalazłem jednoznacznej, fachowej opinii.. Poza wyglądem lampy już nic nadzwyczajnego nie mają. Można zadbać np.: o to, aby światło wewnątrz się dobrze rozpraszało. Naszkicowałem schemat blokowy lampy, wypisałem wymagania i wszystkie pomysły. Lista potrzebnych elementów, wraz z cenami: [25zł] zasilacz 12V o wydajności, co najmniej 1A [15zł] LED UV lub białe zimne [16zł] części elektroniczne: płyta główna, moduł wyświetlacza [15zł] wydruk 3D kilka śrubek (dokładne wymiary w sekcji o składaniu lampy) [2zł] przełącznik i złącze DC [7zł] 9 szt. radiatorów do LED Praca Zacząłem oczywiście od wykonania prototypu. Wykorzystałem MSB dla Atmega16 oraz mój moduł wyświetlacza siedmio-segmentowego, resztę elementów umieściłem na płytce stykowej. Elektronika Sercem układu jest Atmega16 i wybrałem ją nie przypadkowo. Potrzebowałem mikrokontroler z dużą ilością wyjść, aby móc podłączyć wyświetlacz LED oraz przyciski. Dało się oczywiście wykonać to na mikrokontrolerze o mniejszej liczbie wyprowadzeń. Przyciski można podłączyć pod jeden pin ADC, a wyświetlacz LED siedmioprocentowy przez konwerter na magistrale I2C, ale dysponowałem już gotowymi rozwiązaniami, które przekonały mnie do takiego rozwiązania. Nie wykorzystuje tutaj biblioteki Arduino z tego samego powodu co wyżej. Układ jest zasilany 12V, niestety zasilacz się nie zmieścił już w środku wiec trzeba doprowadzić zasilanie zewnętrznie. Wydajność zasilacza powinna wynosić, co najmniej 1A, gdyż same LED używają prawie tyle. Postanowiłem podzielić elektronikę na dwie części: płytę główną oraz części odpowiedzialna za interakcje z użytkownikiem, czyli wyświetlacz oraz przyciski. Postąpiłem tak z dwóch powodów. Pierwszy to zasada dziel i zwyciężaj, dzięki której oddzielając wyświetlacz oraz przyciski, płyta główna stała się mniej skomplikowała, co oznacza, że występuje mniejsze prawdopodobieństwo fakapu. Drugą przyczyną był problem ze zamieszczeniem całego układu w jednym miejscu w obudowie. Moduł wyświetlacza W tym module znajdują się jedynie przyciski, wyświetlacz siedmio-segmentowy LED oraz kilka rezystorów i gniazd połączeniowych. Zadaniem tego układu jest wyświetlanie czasu oraz informowanie mikrokontrolera o wciśniętym przycisku. Moduł jest na tyle prosty, że nie będę tutaj się rozpisywał. Dodam tylko tyle, że w przyszłości planuję przenieść całą część odpowiedzialną za sterowanie wyświetlaczem właśnie w to miejsce, więc wtedy będzie można napisać coś więcej. Schemat plytki PCB: Tak się prezentuje gotowy moduł: Płyta główna Jak już wspominałem, sercem układu jest Atmega16 i znajduję się ona na płycie głównej razem z elementami potrzebnymi do jej funkcjonowania. Umieściłem tutaj również stabilizator, który redukuje napięcie z 12V do 5V. Wszytko, co jest z niego zasilane nie zużywa na tyle dużo prądu, aby potrzeba było użycia radiatora. Dla pewności można LM7805 zastąpić jakimś innym, bardziej wydajnym układem np.: przetwornicą impulsową LM2576, która ma znacznie większy współczynnik sprawności. Umieściłem tutaj część układu sterującego wyświetlaczem siedmiosegmentowy, czyli ULN2803 wraz z rezystorami i trzema tranzystorami bipolarnymi (dokładny opis rozwiązania jest tutaj), ponieważ nie zmieścił się on na drugiej płytce. Sterowanie LED odbywa się poprzez tranzystor MOSFET. Początkowo chciałem każdy segment diod (3 LED połączone szeregowo) sterować osobnym tranzystorem, aby uniknąć przegrzania się pojedynczego, ale w trakcie realizacji projektu stwierdziłem, że nie ma to sensu. Zajmowało tylko wolne porty w mikrokontrolerze oraz komplikowało logikę sterowania (w oprogramowaniu), a MOSFET'y prawie w ogóle się nie grzały. Projekt 3D Od samego początku istotnym elementem tego projektu był projekt obudowy w 3D. O ile część elektroniczna i research był proste to tutaj poziom się komplikował. Zdecydowanie jest to jeden z najbardziej zaawansowanych modeli 3D, jaki tworzyłem, wiec nie jest pozbawiony kilku wad, ale za to jest sukcesywnie i powoli modernizowany, co widać po rosnącej w górę wersji projektu. Na początku lampa miała mieć kształt ćwiartki kuli z wydłużonym tyłem, ale okazało się to dość niepraktyczne i zbyt skomplikowane, wiec szybko zmieniłem koncepcje. Ostateczny kształt, jaki wybrałem to prostokąt z zaokrąglonymi krawędziami. Przed rozpoczęciem projektowania trzeba ustalić wymiary lampy wewnątrz oraz na zewnątrz. W środku musi mieścić się ręka, a zarazem lampa nie może być za duża, aby była poręczna. Pomiarami wzorowałem się głównie na gotowych rozwiązaniach,, z tym że naniosłem swoje poprawki, co do grubości ścianek oraz tyłu, niestety kosztem rozmiarów powierzchni w środku. Musiałem gdzieś zmieścić układ elektroniczny oraz LED'y, a, że całość się grzeje to również potrzebna jest przestrzeń, aby ciepło mogło być odprowadzane. Kolejnym etapem, było podzielenie całości na dwie części, aby był łatwy dostęp do "wnętrzności" lampy. W rozsądny sposób trzeba było poprowadzić linię cięcia dbając o to, aby dało się to wydrukować (czyli jak najmniej poziomych krawędzi) oraz potem łatwo zmontować w jedno. Trzeba jeszcze wykombinować, w jaki sposób łączyć te dwa elementy razem?. W głowie miałem dwa rozwiązania, śrubki albo zatrzaski. Wybrałem to pierwsze, gdyż projektowanie zatrzasków może być zbyt skomplikowane. W kilku miejscach umieściłem elementy, w które wkręca się śrubę/wkręt oraz dziury na dole. Jest jeszcze jedno miejsce, w którym te dwa elementy się łączą, ale rozwinę to w cześć montażu modułu wyświetlacza. Teraz pozostało już porozkładać elementy wewnątrz takie jak: LED'y, płyta główna, czujnik ruchu, moduł wyświetlacza z przyciskami, złącze zasilania oraz switch do włączania i wyłączania lampy. Płyta główna została umieszczona na ściance tylnej i przykręcona na dystansach do niej. Naprzeciwko niej znajduję się switch oraz gniazdo zasilania 12V. LED'y znajdują się oczywiście u góry lampy, ale ich rozstaw nie jest przypadkowy. Raz, że są rozłożone symetrycznie to dwa musiały zostać umieszczone w odpowiednich pozycjach, aby starczyło miejsca na moduł wyświetlacza. Jedno nie mogło być nad drugim, gdyż po przyklejeniu radiatorów na LED'y nie było już wystarczająco miejsca na umieszczenie nad nimi niczego. Na końcu została jak się okazało najtrudniejsza część, czyli montaż modułu wyświetlacza z przyciskami. Trzeba było poczekać, aż zostanie on zlutowany, aby można było dokonać dokładnych pomiarów, gdyż te teoretyczne miały za duży błąd. Poza rozmieszczeniem dziur na przyciski musiałem w odpowiednim miejscu i dokładnym wymiarze (z bardzo małym marginesem błędu) umieścić otwór na wyświetlacz. Dlaczego był potrzebny tak mały margines błędu? Ponieważ, jeśli wyświetlacz by był przesunięty o milimetr albo mniej w którąś stronę, to nie pokrywałyby się otwory na przyciski i nie dałoby się ich wciskać. Odstęp płytki od górnej części, również musiał być dokładnie obliczony, żeby przyciski nie wystawały zbyt dużo, ale zarazem nie chowały się w obudowie i wyświetlacz mieścił się idealnie w otworze nie wychodząc poza płaszczyznę zewnętrzną. W tym momencie wpadłem na pomysł, że można umieścić tutaj, dodatkowe mocowanie całości. Stworzyło to drobne problemy, ale koniec końców udało się to wykonać i całość trzyma się solidnie. Projekt obudowy można zobaczyć tutaj, a pliki stl dostępne są w repozytorium projektu. Poniżej zdjęcia wydruku: Kolor wydruku wewnętrznej części nie jest przypadkowy. Wybrałem biały, aby światło w środku dobrze się rozpraszało. Niestety efekt był na tyle dobry, że aż oślepiało, więc musiałem na samym spodzie przykleić czarną podkładkę. Mimo tego myślę, że warto zostać przy tym kolorze, ponieważ jeśli zmienimy rodzaj świtała z LED UV na zwykłe LED to może się okazać, że dzięki kolorowi białemu zredukujemy moc lampy, a co za tym idzie diody będą się mniej nagrzewać i zwiększą swoją żywotność. Montaż całości Krok po kroku jak całość zmontować + zdjęcia które zrobiłem. Zacznijmy od przygotowania potrzebnych narzędzi do montażu: Klej na gorąco - do montażu LED Klej termoprzewodzący - do montażu radiatorów dla LED 8 szt. małych śrub lub wkrętów 4 sztuki M3 o długości 12mm Wiertło 3.5mm do powiększenia dziur na płytce Jeśli już wszystko skompletowaliśmy to możemy zabrać się do składania. Zaczynamy od przymierzenia i wkręcenia układu z wyświetlaczem. Musimy ustawić go na miejscu, aby otwory się pokrywały. Składamy dwie części obudowy razem i wkręcamy śrubki M3. Ma to na celu wyrobienie otworów, aby montaż całości z zamontowanymi LED'ami i resztą podzespołów przebiegł bez problemu. Możemy również otwory nagwintować gwintownikiem M3. Po tym kroku przechodzimy do właściwego montażu. Pierwsze co robimy to lutujemy przewody do LED'ów i łączymy trzymając się mniej więcej tego schematu: Na końcu powinno prezentować się to mniej więcej tak: Teraz musimy przykleić radiatory do tylnych części LED'ów. Najpierw oczyszczamy całą powierzchnię z zanieczyszczeń. Możemy to zrobić zmywaczem do paznokci lub jakimś alkoholem (najlepiej izopropanolem). Sam przeszlifowałem jeszcze całość papierem ściernym gradacji od 1000 do 1500, ponieważ na moich radiatorach były małe ryski. !UWAGA! radiatory naklejamy na wszystkie diody, prócz nr 3, gdyż w tej wersji lampy zachodzi na nią moduł wyświetlacza. Kolejnym etapem, będzie przytwierdzenie do zewnętrznej obudowy przełącznika oraz gniazda zasilania. O ile switch trzyma się bez problemu, bo jest na zatrzaski, to ze złączem zasilania będzie więcej problemu. Sam użyłem techniki spawania plastiku do przymocowania go, ale można równie dobrze użyć mocnego kleju. Nastała chwila na podłączenie elektroniki. Zaczynamy od płyty głównej. Przymocowujemy ją do specjalnie dla niej zaprojektowanego elementu 3D i potem razem z tym wydrukiem na tył wewnętrznej części obudowy. Jeśli całość się dobrze trzyma to możemy wziąć się za podłączenie przewodów oraz moduł z wyświetlaczem. Całość powinna prezentować się jak na zdjęciach poniżej: W tym momencie proponuje wykonać test, czy wszystko działa poprawnie i lampa świeci. Jeśli wszystko pracuje jak trzeba to można zabrać się za skręcanie dwóch części razem. W tej wersji lampy nie jest to najprostsze, ponieważ trzeba dobrze wpasować moduł wyświetlacza z otworami do wkręcenia śruby, ale da się z tym uporać. Najważniejsze, aby złapać jeden otwór, wtedy już pójdzie z górki A teraz czas na efekt końcowy: Podsumowanie Całkowity kosz lampy wyniósł 80 zł. Wszystkie ceny są podane w nawiasach na liście zakupów u góry wpisu. Może nie jest to tanio, szczególnie że za niecałe dwa razy więcej dostaniemy taką lampę w sklepie, ale myślę, że jakość projektu i zabawa przy jego tworzeniu rekompensuje koszt lampy. Projekt uważam za udany, gdyż przeszedł kilka testów praktycznych i sprawuje się bardzo dobrze. LED'y nie nagrzewają się aż tak bardzo, aby nie można było ich dotknąć. Jedynym minusem jest oślepiające światło UV. Zdecydowanie następnym razem jak będę robił/ulepszał lampę zastosuje tutaj LED'y o kolorze biały-zimny. Pytania do wyjaśnienia: Jaka długość fali jest najlepsza do utwardzania lakierów hybrydowych? Jakie są różnice pomiędzy LED UV a LED białe zimne na tle utwardzania lakieru? (odpowiedź u góry wpisu) Plany na przyszłość: Przerobienie sterowania wyświetlaczem siedmio-segmentowym na I2C oraz redukcja ilości przewodów łączących oba moduły. Wiąże się z tym również przeniesienie elementów sterowania wyświetlaczem z płyty głównej na moduł. Zamienić fotokomórkę na odbiornik i nadajnik podczerwieni. Zastosować inserty gwintowane do montażu wyświetlacza Ulepszyć projekt wydruku 3D o wzmocnienia obudowy, ponieważ w niektórych miejscach się wgniata, gdyż nie ma podparcia Linki i źródła: https://www.24sklep.pl/content/29-led-uv-i-utwardzanie-zywic-klejow-farb-lakierow-uv https://www.yahoo.com/lifestyle/the-gel-manicure-low-down-uv-vs-led-106537862903.html https://practicalpolish.com/ledvsuvlampfornails
  3. Witam serdecznie, mam problem z zasilaniem płytki BluePill. Otóż wykorzystuje rejestr przesuwny i zegar RTC, na kolejnych wyjściach rejestru sygnał ma się pojawiać co sekundę. Gdy podepnę płytke przez St-Link v2 to wszystko działa jak należy, ale gdy podpinam przez złącze microUSB z tej płytki czy też z zewnętrznej przetwornicy 5V do pinu 5V na płytce to diody które są na wyjściu rejestru w ogóle się nie zaświecą, albo zaświecą się dwie na raz.. dodam, że używam tylko dwóch diod aby nie ciągnąć za dużo prądu, jedna jest podłączona do 2 pinu rejestru przesuwnego a druga do 4 pinu, to znaczy że po zapaleniu pierwszej z nich, druga powinna się zapalić w odstępie dwóch sekund (i tak się dzieje przy zasilaniu z programatora ST-LINK v2).
  4. Cześć, Myślę że każdy kojarzy monitory, które mają wbudowane oświetlenie z tyłu. Zawsze uważałem to za fajny dodatek, jednak producenci często słono sobie za takie monitory liczą. Dlatego postanowiłem, że stworzę własną wersję w oparciu o Arduino i taśmę LED RGB i chciałbym się z Wami podzielić efektami mojej pracy. Zacznę od spisu niezbędnych materiałów: Arduino Nano (ja użyłem klona) Taśma LED RGB 12V Zasilacz 12V, minimum 1A 3 tranzystory MOSFET IRL540N 3 tact switche Przełącznik bistabilny suwakowy 3 rezystory 10k Listwa goldpin żeńska Płytka prototypowa Przewody Niezbędna będzie też lutownica (i oczywiście cyna), przydatny jest także pistolet z klejem na ciepło oraz płytka stykowa i pojedyncza dioda RGB ze wspólną anodą (i 3 rezystory 330R) w celu sprawdzenia czy układ działa poprawnie zanim zaczniemy lutować. Jak już mamy skompletowany cały zestaw możemy zabierać się do pracy. Na początek schemat układu: Całość ma działać w taki sposób, że po naciśnięciu przycisku jasność danego koloru wzrasta, a jeżeli przestawimy pozycję przełącznika to tym samym przyciskiem będziemy przyciemniać wybrany kolor. Natężenie światła będzie regulowane przez sygnał PWM na portach Arduino, które będą podłączone do bramek tranzystorów unipolarnych. Warto zacząć od złożenia całości na płytce stykowej w celu skontrolowania czy układ działa poprawnie. U mnie wygląda to tak: Oczywiście żeby dioda zaświeciła potrzebny jest program dla Arduino: #define oswietlenieG 10 //PWM do bramki tranzystorów sterujących oświetleniem (przez R 10k) #define oswietlenieR 11 // -//- #define oswietlenieB 9 // -//- #define przyciskG 3 //przycisk zmieniajacy natezenie B #define przyciskB 4 //przycisk zmieniajacy natezenie G #define przyciskR 5 //przycisk zmieniajacy natezenie R #define przycisk 2 //przelacznik do zmiany znaku "zmiany" int R=0; //jasność koloru czerwonego int G=0; //jasność koloru zielonego int B=0; //jasność koloru niebieskiego int zmiana=5; //wartość o jaką zmieni się natężenie przy pojedynczym kliknięciu void setup() { pinMode(przycisk,INPUT_PULLUP); //definiowanie pinów pinMode(przyciskR,INPUT_PULLUP); pinMode(przyciskG,INPUT_PULLUP); pinMode(przyciskB,INPUT_PULLUP); pinMode(oswietlenieR,OUTPUT); pinMode(oswietlenieG,OUTPUT); pinMode(oswietlenieB,OUTPUT); } void loop() { if(digitalRead(przycisk)==LOW) //sprawdzenie czy przełącznik jest w pozycji "on" { if(digitalRead(przyciskR)==LOW) //sprawdzenie czy przycisk do zmiany koloru czerwonego jest wciśnięty { R=R-zmiana; //zmniejszenie wypełnienia if(R<=0) R=0; delay(20); //niwelacja drgań styków } if(digitalRead(przyciskG)==LOW) { G=G-zmiana; if(G<=0) G=0; delay(20); } if(digitalRead(przyciskB)==LOW) { B=B-zmiana; if(B<=0) B=0; delay(20); } } else { if(digitalRead(przyciskR)==LOW) { R=R+zmiana; if(R>=255) R=255; delay(20); } if(digitalRead(przyciskG)==LOW) { G=G+zmiana; if(G>=255) G=255; delay(20); } if(digitalRead(przyciskB)==LOW) { B=B+zmiana; if(B>=255) B=255; delay(20); } } analogWrite(oswietlenieR,R); //ustawienie zadanego wypełnienia na pinie R analogWrite(oswietlenieG,G); // -//- G analogWrite(oswietlenieB,B); // -//- B } Jeżeli wszystko jest połączone poprawnie dioda powinna zmieniać kolor gdy naciskamy przyciski. Jak już wiemy, że nasz układ działa, możemy przejść do lutowania go na płytce prototypowej. Zacząłem od przylutowania listwy goldpin do której będziemy wpinać nasze Arduino. Co prawda powinno się zaczynać od małych elementów, jednak w ten sposób łatwiej jest określić gdzie mają się znajdować tranzystory. Kolejno na płytce pojawiły się rezystory oraz mosfety. Na koniec przylutowałem wyprowadzenia zasilacza, przewody które będą biegły do modułu z przyciskami i piny z taśmy LED. Trzeba pamiętać o podłączeniu zasilania do wejścia taśmy. Do tworzenia połączeń bardzo dobrze się nadają odcięte końcówki wyprowadzeń rezystorów. Gotowa płytka wygląda u mnie tak: (tył jest lekko ubrudzony, bo pokryłem całość klejem na ciepło i nie udało mi się usunąć całego do zdjęcia) Następnie stworzyłem moduł sterowania. Połączyłem każdy przycisk, oraz wyprowadzenie przełącznika do wspólnej masy a do poszczególnych przycisków dolutowałem przewody z płytki. Całość zamknąłem w tekturowym opakowaniu, które zalałem klejem na ciepło: Co prawda nie wygląda to zbyt ładnie, jednak przykleiłem to na bocznej ściance głośnika, więc nie jest to widoczne. Teraz jest dobry moment żeby przeprowadzić test całości, jeszcze zanim pokryjemy całość klejem na ciepło (ja popełniłem ten błąd że nie zrobiłem testu i miałem przez to dodatkową robotę z usuwaniem kleju jak okazało się że jeden z tranzystorów nie działa). Jeżeli wszystko jest tak jak powinno możemy przejść do przycinania taśmy na właściwą długość a następnie polutowania odpowiednich wyprowadzeń (ponownie przydatne są ucięte "nóżki" od rezystorów) tak żeby stworzyć prostokąt który będzie pasował do naszego monitora. Gdy taśma jest już gotowa warto ponownie zrobić test i jeżeli wszystko działa poprawnie "zaizolować" łączenia za pomocą kleju na ciepło a następnie przykleić taśmę do monitora. Ja moją dodatkowo dokleiłem za pomocą taśmy izolacyjnej, żeby się lepiej trzymała: Teraz wystarczy podłączyć taśmę do naszej płytki, wpiąć Arduino i całość powinna nam pięknie świecić: Mam nadzieję, że mój projekt się Wam spodoba i sami spróbujecie stworzyć takie oświetlenie, bo efekt jest naprawdę warty poświęcenia czasu. PS. Zamiast przycisków można by użyć np. modułu bluetooth albo odbiornika podczerwieni i dowolnego pilota od telewizora, ale ze względu na to, że sterowanie w moim przypadku znajduje się w łatwo dostępnym miejscu uznałem że byłaby to niepotrzebna komplikacja. Pozdrawiam ~Usohaki
  5. Sześciany LED są na tyle popularne że ich budowa jest bardzo łatwa (ogromna ilość poradników pokazujących krok po kroku co zrobić) i przez to nudna . Ponieważ wolę wymyślić coś samemu niż zbudować to co pojawiało się już wielokrotnie postanowiłem wykorzystać diody w inny sposób. Wpadłem na pomysł żeby było to coś związanego ze świętami i zdecydowałem się na gwiazdę . Tak wygląda efekt końcowy: Prezentacja wideo Budowa Gwiazda składa się z 40 diod połączonych katodami tak, że tworzą kształt gwiazdy. Konstrukcja umieszczona jest na kartonowym szablonie. Do sterowania diodami użyłem 5 połączonych rejestrów przesuwnych 74HC595. Każdej diodzie odpowiada również jeden rezystor 1kΩ. Układ zlutowałem na płytce uniwersalnej. Gwiazda jest podłączona do układu za pomocą przewodów połączeniowych żeńsko-męskich. Nie wygląda to zbyt ładnie ale konstrukcję można szybko zdemontować a układu użyć do sterowania innymi rzeczami. W płytkę można również wpiąć 4 tranzystory i sterować 4 warstwami np. sześcianu led. Obwód prezentuje się następująco: Całością steruje Cytron Maker Uno. Podłączenie połączonych rejestrów przesuwnych Rejestry łączymy w następujący sposób: VCC i MR (10 pin rejestru) do 5V GND i OE (13 pin rejestru) do GND DS (14 pin rejestru) pierwszego rejestru do 11 pinu Cytrona ST_CP (12 pin rejestru) wszystkich rejestrów do 10 pinu Cytrona SH_CP (11 pin rejestru) wszystkich rejestrów do 12 pinu Cytrona Q7" do pinu DS kolejnego rejestru Q0 - Q7 do kolejnych diod Oprogramowanie Gwiazdą steruję wysyłając 5 bajtów (1 bajt dla każdego rejestru). Kolejne bity w przesłanym bajcie odpowiadają stanowi kolejnych wyjść rejestru. Trzeba pamiętać, że bajty są przekazywane między rejestrami w taki sposób, że pierwszy bajt trafia do ostatniego rejestru, drugi do przedostatniego itd. Deklaracja pinów które będą użyte do komunikacji z rejestrami: int latchPin = 10; int clockPin = 12; int dataPin = 11; Do ustawiania stanu diod używam dwóch funkcji. Funkcja writeBytes wysyła po kolei otrzymane bajty. Bajty przekazujemy do funkcji jako tablicę liczb (wartość bajtu zapisana dziesiętnie) np. jeśli przekażemy do funkcji 5 wartości 255 wszystkie 40 diod zacznie się świecić ponieważ każdy rejestr otrzyma wartość 11111111. void writeBytes(int bytes[], int numberOfBytes) { digitalWrite(latchPin, LOW); for(int i=0; i<numberOfBytes; i++) { registerState[i] = bytes[i]; shiftOut(dataPin, clockPin, MSBFIRST, bytes[i]); } digitalWrite(latchPin, HIGH); } Funkcja writePin jest prostsza w użyciu, wystarczy podać numer diody (w tym przypadku od 0 do 39) i stan diody (LOW/HIGH). Funkcja odpowiednio zaktualizuje wartości i je wyśle włączając lub wyłączając diodę o podanym numerze. void writePin(int pin, bool state){ int reg = pin / 8; int actualPin = pin - (8 * reg); digitalWrite(latchPin, LOW); for (int i=numOfRegisters; i>=0; i--) { if (i == reg){ bitWrite(registerState[i], actualPin, state); } shiftOut(dataPin, clockPin, MSBFIRST, registerState[i]); } digitalWrite(latchPin, HIGH); } Z użyciem powyższych funkcji można już pisać różne efekty. Dla przykładu funkcja wypełniająca gwiazdę losowo wyglądają następująco: void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void effectJ(int d) { clear(); int state[8*numOfRegisters]; for(int i=0; i<8*numOfRegisters; i++) { state[i] = i; } int r; for(int i=8*numOfRegisters-1; i>0; i--) { r = random(0, i); swap(&state[i], &state[r]); } for(int i=0; i<8*numOfRegisters; i++) { writePin(state[i], HIGH); delay(d); } } Kompletny kod znajduje się w załączniku. Shift_Registers.rar
×
×
  • Utwórz nowe...