Witam,
Widzę, że chyba wszystkim udziela się ostatnio magia świąt, co widać po wzroście zainteresowań wszelkimi inteligentnymi diodami RGB.
![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
Ja zatem nie pozostaję gorszy i prezentuję projekt zegarka-prezentu dla dziewczyny opartego o miktokontroler STM32 z nowej rodziny G0, nad którym pracuję od listopada. Działa on w 99%
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
Pozostało mi do ukończenia dosłownie kilka funkcji narzędziowych, które nie są jakoś specjalnie istotne. Mam nadzieję, że wielu osobom, które tak jak ja przesiadają się na 32-bitowce, uda mi się przy okazji pokazać jak ja podchodzę do wykorzystania ich możliwości, a jak wiadomo wbudowanych peryferiów mają one masę! Dodam tylko na wstępie, że program napisany został bezpośrednio "na rejestrach", także zwolennicy CMSIS powinni być zadowoleni
![Bardzo szczęśliwy :D](https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif)
Do dzieła!
Założenia sprzętowe:- Zasilanie za pomocą 12VDC (zastosowałem dwie przetwornice: A8498 oraz LDO1117 3.3V),
- Wyświetlanie godziny, minuty, aktualnej daty za pomocą WS2812, wyświetlacza multiplexowanego LED,
- Powitalne wiadomości na dolnym wyświetlaczu,
- Możliwość konfiguracji za pomocą USART (w przyszłości umożliwiona rozbudowa o moduł WiFi - serwer NTP i takie bajery
![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
), oraz trzech przycisków tact-switch,
- Dostosowanie kolorów do odpowiedniej pory dnia (rano żółty, po południu ciepła zieleń, wieczem pomarańcz i fiolet, a w nocy ciemny niebieski),
- Płynna regulacja jasności w zależności od oświetlenia w pokoju,
- Możliwość zapisywania danych do zewnętrznej pamięci EEPROM 2kB,
- Wsparcie Battery Backup Domain za pomocą superkondensatora sterowanego mosfetem,
- Buzzer (jako funkcja alarmu i nie tylko
![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
),
- Status LED.
Założenia programowe:- Stworzenie pełnej biblioteki wspierającej WS2812 i ładującej wszystkie dane do jednego bufora (w ten sposób łatwo wzbogacić program o użycie DMA),
- Stworzenie biblioteki do wyświetlania cyfr i znaków (wraz ze scrollowaniem) na alfanumerycznym wyświetlaczu 16-segmentowym,
- Wykorzystanie wewnętrznego zegara RTC oraz możliwość jego ŁATWEJ kalibracji,
- Uniwersalne funkcje do konfiguracji czasu i daty w rejestrach RTC,
- Proste menu konfiguracyjne (wymaga jeszcze dopracowania)
Schemat i model 3D płytki PCB:Znajduje się w pliku załączonym pod postem.
Zdjęcia:![Obrazek](https://obrazkiforum.atnel.pl/thumb/10748/16edd8f3676a1d6aebdcef2a385a12be.JPG)
![Obrazek](https://obrazkiforum.atnel.pl/thumb/10748/042b99a4746a18cf2db2613fb5f45c31.JPG)
![Obrazek](https://obrazkiforum.atnel.pl/thumb/10748/06ef034b87915b8f29028a161cc737b3.JPG)
![Obrazek](https://obrazkiforum.atnel.pl/thumb/10748/c3ff40cf3c9280e8fd06325c7fb3c73f.JPG)
![Obrazek](https://obrazkiforum.atnel.pl/thumb/10748/4a8dc517104a990f9d6b25db87171c32.JPG)
![Obrazek](https://obrazkiforum.atnel.pl/thumb/10748/33adf013fc38e31726cd67954358b29c.JPG)
![Obrazek](https://obrazkiforum.atnel.pl/thumb/10748/78f21cad0ad2674f52fc25e15bb28c9e.JPG)
Pliki źródłowe (z komentarzami) i biblioteki:main.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Biblioteka WS2812ws_lib.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ws_lib.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pliki konfiguracyjne (ustawienia rejestrów STM32)config.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
config.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Biblioteka do obsługi wyświetlacza 16-segsegment_dsp.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
segment_dsp.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Biblioteka do obsługi RTC/konfiguracji/aktualizacji danych czasu:clock.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
clock.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Biblioteka menu (zrobiona na szybko i wymaga jeszcze pracy, także proszę się nie przerażać
)clk_menu.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
clk_menu.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pozdrawiam
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)