Witam,
Opracowałem bardzo prosty sterownik diody LED RGB w obudowie 5050.
Układ losuje kolor, płynnie przechodzi do niego, wyświetla przez jakiś czas, następnie cykl się powtarza. W celu urozmaicenia układu dodałem diodę led białą, czyli mamy w zasadzie RGBW. Sterowanie odbywa się 4-kanałowym programowym generatorem PWM, z użyciem korekcji jasności.
Schemat:
Zaprojektowana płytka PCB:
Kody źródłowe (napisane i skompilowane w Atmel Studio 6.1):
Fusebity: hFuse: 0xFD; lFuse: 0x7A; (9,6MHz, bez podziału na 8; BOD ustawiony na 1,8V).
Kod bazuje na:
-programie MkAVRCalculator jeśli chodzi o korekcję gamma;
-Generator liczb losowych by miszcz310
-Software PWM on the ATtiny13
Kod zajmuje (z włączoną optymalizacją -Os):
Po złożeniu prototypu na płytce stykowej, wygląda że program funkcjonuje poprawnie. Prototyp zasilany jest z USB 5V, docelowo układ będzie zasilany z baterii CR2032 lub akumulatorka (Li-Ion albo 2xNiMH). Procesor ATTINY13A posiadam w tej "szerszej" obudowie SMD.
Uprzejmie proszę o sprawdzenie schematu, projektu płytki oraz programu pod kątem błędów, optymalizacji oraz ulepszeń.
Chciałbym jeszcze zaimplementować obsługę przycisku na PortB.3. Przycisk (ew. czujnik drgań na sprężynce) miałby pełnić jakąć dodatkową rolę sterującą, np. zatrzymanie zmian koloru, lub wyłączanie/włączanie lampki. Przycisk będzie wymagał eliminacji drgań styków, chociaż chyba można tu wykorzystać blok kodu, który jest realizowany co ok. 0,5 sekundy. Niestety zostało już bardzo mało wolnej pamięci (84 bajty), głównie przez tablicę korekcji jasności diod.
W załączniku wsad (hex).
Opracowałem bardzo prosty sterownik diody LED RGB w obudowie 5050.
Układ losuje kolor, płynnie przechodzi do niego, wyświetla przez jakiś czas, następnie cykl się powtarza. W celu urozmaicenia układu dodałem diodę led białą, czyli mamy w zasadzie RGBW. Sterowanie odbywa się 4-kanałowym programowym generatorem PWM, z użyciem korekcji jasności.
Schemat:
Zaprojektowana płytka PCB:
Kody źródłowe (napisane i skompilowane w Atmel Studio 6.1):
Kod: C / C++
Fusebity: hFuse: 0xFD; lFuse: 0x7A; (9,6MHz, bez podziału na 8; BOD ustawiony na 1,8V).
Kod bazuje na:
-programie MkAVRCalculator jeśli chodzi o korekcję gamma;
-Generator liczb losowych by miszcz310
-Software PWM on the ATtiny13
Kod zajmuje (z włączoną optymalizacją -Os):
Program Memory Usage : 940 bytes 91,8 % Full
Data Memory Usage : 15 bytes 23,4 % FullPo złożeniu prototypu na płytce stykowej, wygląda że program funkcjonuje poprawnie. Prototyp zasilany jest z USB 5V, docelowo układ będzie zasilany z baterii CR2032 lub akumulatorka (Li-Ion albo 2xNiMH). Procesor ATTINY13A posiadam w tej "szerszej" obudowie SMD.
Uprzejmie proszę o sprawdzenie schematu, projektu płytki oraz programu pod kątem błędów, optymalizacji oraz ulepszeń.
Chciałbym jeszcze zaimplementować obsługę przycisku na PortB.3. Przycisk (ew. czujnik drgań na sprężynce) miałby pełnić jakąć dodatkową rolę sterującą, np. zatrzymanie zmian koloru, lub wyłączanie/włączanie lampki. Przycisk będzie wymagał eliminacji drgań styków, chociaż chyba można tu wykorzystać blok kodu, który jest realizowany co ok. 0,5 sekundy. Niestety zostało już bardzo mało wolnej pamięci (84 bajty), głównie przez tablicę korekcji jasności diod.
W załączniku wsad (hex).
