WS2812B + enkoder do sterowania jasnością diód - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Konstrukcje (https://forum.arduinopolska.pl/dzial-konstrukcje) +--- Wątek: WS2812B + enkoder do sterowania jasnością diód (/watek-ws2812b-enkoder-do-sterowania-jasno%C5%9Bci%C4%85-di%C3%B3d) Strony:
1
2
|
WS2812B + enkoder do sterowania jasnością diód - przemek_t24 - 13-11-2018 Witam, Proszę o wsparcię w dokończeniu programu uzupełniając go o możliwość sterowania enkoderem obrotowym jasnością diód programowalnych WS2812B. Coś próbowałem dodać jednak niestety brakuje mi już pomysłów na to jak można to dodać. Załączam projekt do UNO. RE: WS2812B + enkoder do sterowania jasnością diód - kaczakat - 13-11-2018 Jaki kurs Arduino skończyłeś? RE: WS2812B + enkoder do sterowania jasnością diód - przemek_t24 - 13-11-2018 (13-11-2018, 20:07)kaczakat napisał(a): Jaki kurs Arduino skończyłeś? Nie skonczyłem żadnego kursu Arduino, kiedyś w szkole programowałem uC AVR. Raczej bardzo amatorsko podchodzę do tenatu RE: WS2812B + enkoder do sterowania jasnością diód - es2 - 13-11-2018 (13-11-2018, 19:15)przemek_t24 napisał(a): Witam, Pokaż te próby, bo jak na razie to liczba możliwych prób jest większa niż liczba atomów we Wrzechświecie. Przypuśćmy, ze znajda się chętni aby dać każdą możliwa odpowiedź, ile tryliandów lat będziesz potrzebował aby je wszystkie przeczytać? Daruj sobie ZIP,linki,ipt, nikt na to nie bedzie marnował czasu. nie jest obowiązkiem forumowiczów rozpakowywać jakieś ZIPy. Wiem z praktyki,ze niktego nie bedzie robił. Umieść kod jak się należy! Czytałeś inne posty zanim napisałeś swój? Na 99,99% nie,a jeśli czytałeś,to bez zrozumienia, jak nie zrozumiałeś,to nawet gdy dostaniesz gotowca, nie dasz rady tergo skompilować. RE: WS2812B + enkoder do sterowania jasnością diód - przemek_t24 - 13-11-2018 (13-11-2018, 20:23)es2 napisał(a):(13-11-2018, 19:15)przemek_t24 napisał(a): Witam, Wstawiam poprawnie kod. Ja rozumiem że napewno jesteście dużo bardziej doświadczeni jeżeli chodzi o programowanie dlatego proszę o wyrozumiałość ale też nie jestem kompletnym tumanem Kod: #include <Adafruit_NeoPixel.h> RE: WS2812B + enkoder do sterowania jasnością diód - kaczakat - 13-11-2018 Ja tez jestem amatorem, kurs znajdziesz tu: https://forbot.pl/blog//kurs-arduino-podstawy-programowania-spis-tresci-kursu-id5290 . Wystarczy zainstalować bibliotekę do encodera i powiązać jego działanie ze zmienną odpowiedzialną za jasność LED. Zmień sobie "#define JASNOSC 50" na zmienną o zakresie zgodnym z tym jakie jasność może przybierać wartości. Zauważ też, że kurs ma dwie części. RE: WS2812B + enkoder do sterowania jasnością diód - Robson Kerman - 16-11-2018 No widzę, że kolega otrzymał wsparcie od naszych przodowników pomagania. Teraz, jak już ochłonąłeś z nadmiaru pomagactwa, zrób jako piszę. Ściągnij sobie bibliotekę Rotary, i w swoim projekcie dopisz parę linijek kodu. Musisz zmienić pin, pod który podpiąłeś pasek z diodami. INT2, oraz INT3 obsługują przerwania sprzętowe i będzie to nam potrzebne. Podepnij więc swój enkoder pod piny 2 i 3. Na samym początku, na górze wpisz Kod: #include <rotary.h> Dołączysz wtedy bibliotekę obsługi enkodera. Teraz stworzymy obiekt klasy Rotary. Kod: Rotary enkoder = Rotary(2,3); // enkoder to nazwa własna i możesz ten obiekt nazwać jak chcesz. Instrukcję Kod: strip.setBrightness(JASNOSC); Napiszemy też funkcję obsługi przerwania od enkodera. To znaczy, gdy obrócisz pokrętłem, na INT2 podany zostanie impuls, który zatrzyma wykonywany program i zacznie wykonywać program obsługi przerwania. Kod: ISR(PCINT2_vect) { I powinno być dobrze. RE: WS2812B + enkoder do sterowania jasnością diód - kaczakat - 17-11-2018 @Robson, jeśli post wygląda tak: "kolega wchodzi na forum remontowe, pokazuje zdjęcie pędzla z google-grafika i prosi o dokończenie malowania pokoju, bo sam nigdy tego nie robił" to raczej nie ma tłumu w kolejce (nawet amatorów jak ja) by umówić się o której mogą podjechać ze swoimi narzędziami i materiałami. Ja tam co najwyżej mogę zaproponować fotkę wzorków, które akurat użyłem w podobnym pokoju, poradę by wcześniej zagruntował i zwykle link do miejsca, gdzie można zdobyć podstawy malowania. Czasami nawet podjadę jak mam nieprzetestowany szprej i namaluję jakieś jaja na ścianie dla próby (choć to rzadko pomaga). Mam nadzieję, że się nie obraził tylko przerabia kurs i wróci dopytać o to czego nie zrozumiał. RE: WS2812B + enkoder do sterowania jasnością diód - Robson Kerman - 17-11-2018 A Ty kolego nie obraź się na mnie. Po prostu przeanalizowałem sobie profil członków naszego zacnego forum i wyszło mi, że jeśli kolega pytacz prosi o wsparcie polegające na dopisaniu paru linijek kodu, to jeśli ktoś ma ochotę napisać tych parę linijek bez uszczerbku na swoim ego, to niech napisze. Z merytorycznego punktu widzenia, pewnie wartość zerowa, ale nie na tym polega idea Arduino. Większość młodzieży nie zdaje sobie sprawy, że każdy błyskawiczny sukces wymaga co najmniej kilkunastu lat przygotowań, ale nie jest to pretekst do zniechęcania ich w realizacji swych marzeń. Prędzej czy później natrafią na ścianę, ale niech będą choć trochę na nią przygotowani. RE: WS2812B + enkoder do sterowania jasnością diód - es2 - 17-11-2018 Ścianą,to jest WS2812 i AVRmega/tiny. Wszystkie biblioteki jakie widziałem dla Arduino, doWS2812, są blokujące i nadają się tylko do zabawy z niewielką ilością LED albo gdy poza sterowaniem LED-am, nie jest robione praktycznie nic. Da się to zrobić na UART, wywołując przerwania blisko 300tysięcy razy na sekundę a stosując pewną sztuczkę połowę tego ale 16MHz to za mało. Wymagane min to 18MHz a wskazane 20.Nawet przy 20MHz z wstawkami ASM obciążenie jest bardzo duże i pojawi się kolejna ściana, jak dobrze zrealizować przerwania od innych USART jeśli są potrzebne. Da się ale jest przy tym dużo roboty: https://youtu.be/h2RKAJZdVl4 https://youtu.be/aM9hy4EpleY https://youtu.be/hBovo7Y0fRY Jak widać, można dekodować DMX, nie tracąc przy tym ramek, sterować nawet 1500led i w tym samym czasie nadawać DMX. Niestety, łatwo nie jest i nie polecam tego robić, bo wstawki ASM, dobra znajomość C, to raczej nie dla początkującego. Lepiej wziąć coś z DMA (XMEGA, ARM) i jest łatwo i przyjemnie. Nie wspominam o użyciu SPI, bo jest zdecydowanie gorsze od USART i to z kilku powodów, natomiast I2C,w AVR, nie nadaje się do WS2812. Tak jak nieporozumieniem jest obsługa na AVR LCD 320x240 kolor 16-bit lub większych bez akceleratora (np FT8xx), czy Fat na uC z 2kB RAM, tak i WS2812 na AVR. Arduino IDE, z tego co czytam w EP 10 i11/2018, wspiera już ARM w sensowny sposób. Należałoby, do poważniejszych zadań, używać ARM, które przeważnie, w lepszych od AVR konfiguracjach, są tańsze od AVR. Co do szybkości, ARM, przy tym samym zegarze co AVR, jest ok 7 razy szybszy. Max zegar AVR,to 20MHz, ARM, zależnie od rodziny, 48, 72, 80, 100MHz (pomija bardziej wypasione 200 czy 600MHz a nawet więcej). Najwolniejszy więc,48MHz ARM, jest szybszy, od najszybszego AVR ok 17 razy, 100MHz ARM ok 35 razy,do tego, niektóre serie, mają FPU. Fakt, ze "zdolni" Arduinowcy, zabiją każda szybkość, przez delay, czy Kod: while( przycisk ): |