Wyświetlacze LED 7 segmentowe moim zdaniem wyglądają bardzo dobrze, szczególnie kiedy chcemy wyświetlać jakieś cyfry (np. czas). Jeśli mam okazje to sięgam po nie, a że są dość tanie (1zł za sztukę) to tym lepiej. Aby umilić sobie przygodę z nimi w przyszłości to postanowiłem stworzyć sobie moduł do nich oraz napisać bibliotekę do ich obsługi.
Moduł potrafi obsłużyć maksymalnie 8 wyświetlaczy (czyli 8 cyfr). Z racji na dużą ilość pinów potrzebnych do wyświetlania jednej cyfry (8) to łącznie by dawało 8*8=64 piny! To stanowczo zbyt wiele, dlatego dane wyświetlać będziemy za pomocą multipleksera [link]. Zminimalizuje nam to ilość wyjść do 16. Można też wykorzystać [ekspander], aby tych pinów było jeszcze mniej.
Wykonałem dwa rodzaje modułu: wspólna katoda oraz wspólna anoda. Oba steruje się podobnie. Wystarczy w kodzie ustawić odpowiedni bit w funkcji init, a w podłączeniu nic nie trzeba zmieniać. Schematy płytek: (pliki eagle dostępne są w źródle strony na dole artykułu).
(anoda)
(katoda)
Aktualizacja #1:
Został dorobiony punkt 1 z planów na przyszłość: regulacja analogowa na razie bez cyfrowej gdyż nie ma takiej potrzeby. Został dodany potencjometr 1kOm na zasilanie wyświetlacza LED. Nie jest dobre rozwiązanie ale z racji prostoty zostało zastosowane gdyż spełnia mniej więcej swoją funkcje. Stosując ograniczenie prądu od razu przy zasilaniu ustawiamy barierę ogólną, tzn nieważne czy będą świecić wszystkie wyświetlacze, czy tylko jeden, natężenie prądu będzie cały czas takie same, co sprawi, że mogą być różnice w jasności. Z racji iż to jest tylko moduł, to zdecydowałem się na takie rozwiązanie.
Jak to powinno wyglądać poprawnie?
Powinno się ograniczać prąd na każdym wyświetlaczu osobna ale zachowując ją taką samą (coś jakby po-ósmy potencjometr z jedną gałką). Albo po prostu ograniczyć jasność programowo (częstotliwość multipleksera).
Podsumowanie:
- Moduł jest bardzo użyteczny z tym, że można jedynie używać pojedynczych wyświetlaczy. Gotowe kilku-segmentowe mają inny rozstaw pinów i nie będą pasować do wyprowadzeń. Na tą chwile nie przychodzi mi do głowy żaden pomysł jak to rozwiązać.
Plany na przyszłość:
- Dodanie możliwości regulacji jasności (programowe, oraz
analogowe). - Integracja z ekspanderami wyjść PCF8574, w celu zmniejszenia ilości potrzebnych pinów
- Wprowadzenie możliwości wyświetlania liter, oraz kilku znaków specjalnych. [50ZL, ABC]
- Dostosowanie wyświetlacza do liczb ujemnych. [-123]
- Dostosowanie wyświetlacza do liczb zmiennoprzecinkowych. [12.54, -23.5]
Źródła i linki:
Spis treści, GitHub, Eagle (anoda, katoda), Youtube