No bo 99% tych co takie rzeczy kupują, nigdy ich nie użyją albo użyją przez chwilę, na stole.
jp
No bo 99% tych co takie rzeczy kupują, nigdy ich nie użyją albo użyją przez chwilę, na stole.
jp
...mówili.
Potrzebuję zrobić jedno urządzenie, nic specjalnego - dwie czasówki pokazujące odliczany czas - coś jak minutnik, tylko podwójny. Wezmę sobie jakiś wyświetlacz, jakieś pico, napisze się programik, będzie fajnie. Ale przecież jak zawsze radzi grupa: są gotowce, chińscy bracia chętnie zarobią. Oglądam takie coś:
W dniu 18.12.2025 o 21:00, Mirek pisze:
Opowiem równie absurdalną historię ale jakby w drugą stronę :-)
Sobie robię od czasu do czasu coś do swojego 'czasotermometru', znaczy tego terminala, co pokazuje czas i temperatury. Ja tam koncepcyjnie różne wyświetlacze dopuszczam, ale lepię głównie z tego, co mam pod ręką, czyli zwykle na 4-cyfrowych 7-segmentowych LED. No i problem jaki się jawi w tych 7-segmentowcach to to, że dobrze byłoby mieć zarówno separator dziesiętny dla dziesiętnych części stopni jak i dwukropek między godzinami i minutami. No ale jak się ma wyświetlacz z samymi kropkami to miganiem można ten dwukropek zastąpić.
Mam samodzielną obsługę multipleksowania z jakimś 74595 i automatyczną z TM1637.
No i zachciało mi się tym razem dorobić ściemnianie. Projekt przygotowany był pod ESP32 lub ESP8266. Pod ręką miałem akurat 8266, gdy zwykle było kompilowane pod ESP32 i działało na obu wyświetlaczach. No ale kompiluję, wgrywam i nie chce działać. I widzę, że ten kod pod TM1637 jakiś taki rozsypany jest. No to zamiast zaprogramować ściemnianie zabrałem się za jego pozbieranie. No i poprawiam, a wyświetlacz uparcie nie świeci. Wyświetlacze też jakieś przypadkowe, ale były sprawdzane kiedyś dawno więc powinny działać. No ale nie żaden działa. Więc myślę, na tym ESP32 chyba faktycznie nigdy nie było, pewnie to jego wina. Podejrzenie pada na użyte piny. Bo one są pod TM1637 niezależnie od ESP a w różnych ESP różnie przecież może być z dostępnością. No ale dalej nie działa.
Dobra, wgrywam jakiś prosty program. Eee ... ten ESP restartuje się. Pies go trącał, mam inne. Wymieniam, dalej nie działa. Nosz ... Dobra, ale może te nowe piny co wybrałem też są jakieś problemowe. Zmieniam, zadziałało.
Wbudowuję ściemnianie, ale tylko wykorzystując tego TM1637, na 595 mi się nie chce poprawiać.
Zlutowałem dwa egzemplarze, ale z różnymi wyświetlaczami, do jednego niestety znalazłem wyświetlacz tylko z dwukropkiem, więc zasadniczo do bani. No ale generalnie działa. Jak nabędę jakoś wyświetlacz to se zrobię działający.
Kilka dni leży i ciągle męczy mnie ta kwestia dwukropka i kropek. No bo na tym drugim egzemplarzu co kropki są, jest i dwukropek, ale nie wiadomo jak go załączyć. Szukam po necie, zero informacji. Wszystko wskazuje, że nie da się, że naprawdę w zależności od wykonania świeci to albo to. Zostawiam.
Kilka dni leży, przypadkiem odkrywam, że mam pudełko w którym są kolejne wyświetlacze :-) Dwa normalne, gotowce, ale też 2 takie bez płytki lim-5643SR-2-8, do wlutowania. I tam znowu jest dwukropek i kropki, więc zapewne ma te kropki. Znowu szukam dokumentacji, zero. Więc myślę by przelutować, ale najpierw sprawdzę sobie ten dwukropek i kropki skoro nie jest na płytce pod tego TM to powinno się łatwo mierzyć. No i ... mierzę, mam już 'pin wspólny' jednej cyfry gdzie pozostałe zaświecają segmenty. No ale ... jak to? wyświetlacz ma tylko 7 pinów to ... jeśli ten wspólny wybiera cyfrę to zostaje 6, czyli brakuje jednego segmentu a gdzie w ogóle wybór pozostałych cyfr. Mierzę dalej przypadkowo podłączając, zaświecają się różne segmenty i nawet poszczególne LEDY tego dwukropka, wiwat król! :-) Ale kompletnie nie widzę logiki i jakby to miało multipleksować by wszystko wyświetlić. W końcu podłączam tak, jak na początku rozpoznałem jako wspólny jednej cyfry, ale odwrotnie polaryzacją. Zaświecają się segmenty drugiej cyfry :-) No dobra, ale nadal bez tego brakującego segmentu. To nie może być normalne multipleksowanie cyfra/segment. Jakbym chciał go użyć to musiałbym każdy z 7 pinów kluczować +/-.
Wyświetlacz jest wylutowany nie mogę skojarzyć z czego, jakbym wiedział to bym go nie wylutowywał tylko z resztą elektroniki wyrzucił. Wymiękam :-)
Spędziłem kupę czasu na dochodzenie jakiejś pierdoły, której i tak nie będę realizował bo bez sensu jest jak gotowy wyświetlacz można kupić na Ali pewnie za mniej niż 1zł. No tyle, że dalej chyba nie wiadomo jak ten wyświetlacz zmusić do wyświetlania dwukropka razem z kropkami :-)
Nawet myślałem przy rozpoznawaniu tych pinów wyświetlacza o co chodzi, ale sprzętowo to nie ma sensu, jak wcześniej pisałem, potrzeba zmieniać =/- na każdym z 7 pinów, czyli jakieś klucze jeszcze zrobić. No chyba, że jest jakiś gotowiec, ale ja nie spotkałem się.
Tak w ogóle te wyświetlacze 7-segmentowe wyświetlają mi też litery i tyle już czasu nad tym spędziłem i gdybym miał teraz np dorobić mapowanie na to nowe multipleksowanie to bym chyba kolejne dni/tygodnie marnował. A to w ogóle nie jest dla pieniędzy. Tzn ja szukam takiego zajęcia dla pieniędzy, ale by na tym naprawdę wszyscy zarobili a nie tylko namachał się i na koniec stwierdził, że udało się.
W sumie najlepiej coś prostego robić w rodzaju rąbania drewna :-)
W dniu 20.12.2025 o 23:06, io pisze:
To powinno być proste. Podłącz te 7 pinów do procka, możesz przez jakieś rezystory, ale Chińczycy wolą bez. Przeleć wszystkie 128 kombinacji, aczkolwiek tylko niektóre będą zapalać pojedynczy segment. Te zanotuj i następnie z nich zrób pętle multipleksowania. Powinny się świecić wszystkie. Teraz wystarczy w miejsce segmentów, które nie mają się świecić wstawiać zera i gotowe.
W dniu 20.12.2025 o 23:45, Mirek pisze:
:-)
Potem trzeba zrobić multipleksowanie, bo raczej nie 1 segment z 42 w jednej chwili tylko więcej. Być może sprzętowo by nie zużyć 7 pinów procka. Jedyna wartość dodana to by było zapewnienie możliwości jednoczesnego wyświetlania dwukropka i kropek dziesiętnych czego jakoś nie udaje się rozpoznać w gotowych modułach wyświetlaczy, ale co pewnie gdzieś jest dostępne i udokumentowane.
MZ lepiej ogarnąć jakieś większe współcześniejsze zagadnienie :-)
Co w tym dziwnego? Ludzie dawno zauważyli że klasyczne multipleksowanie jest mało efektywne, tzn. że można sterować mając mniej pinów. Przy
7 nóżkach wyświetlacza są 42 różne pary uporządkowane nóżek. Do każdej pary podłączasz diodę, anodę do pierwszej nóżki z pary, katodę do drugiej. W efekcie 7 nóżek wystarcza, a w klasycznej wersji trzeba 13. 7 nóżek to pojedynczy 595. 595 albo 7 linii procka.Programowanie zajmuje czas, zwykle dużo więcej czasu niż początkowe oszacowanie. Ale jeśli taka zmiana jest kłopotliwa to masz źle zorganizowany kod. Tzn. jedna cześć to driwer który steruje pinami wyświetlacza. W tej części trzeba zmienić informację idącą do pinów, to powinna być zmiana tabelki, z minimalną zmianą kodu.
P.S. Ja sobie zrobiłem kod do sterowania popularnych LCD 2x16 po I2C. To się zaczeło od kodu z Arduino, potem jeden projekt to zmodyfikował, ja zmodyfikowałem dalej. Przez jakoś czas miałem kłopt, działo mi z zegarem I2C poniżej 18 kHz, ale z szybszymi zegarami były problemy. Podejrzewałem różne rzeczy, np. że źle ustawiam czasy dla sterownika I2C czy jakieś problemy elektryczne na szynie. W końcu znalazłem że przez I2C wysyłałem złe sygnały, dziwne że w ogóle cokolwiek działało (a że działoło poniżej 18 kHz to tego wcześniej nie podejrzewałem). No ale w końcu mam sterowanie które bardzo fajnie działa (wyszło że 360 kHz działa bez problemu, mimo że oficjalny maks chipa I2C to 100 kHz).
W innych przypadkach czegoś takiego nie miałem, tzn. błędy w kodzie wychodzą dość szybko, a jak je poprawię to kod działa.
No ale problem nie polega na tym by multipleksować tylko by świecić :-)
1/42 czasu świecenia to jednak znacznie mniej niż 1/4. Nie wiem, może to da się zrekompensować większym prądem.No tak, pewnie taka jest idea.
To nie tłumaczy dlaczego rąbaniu drewna nie towarzyszy taka prawidłowość :-)
No ale po kija mi było dotąd sterowanie pinami? Poziom mojego kodu to było wykorzystanie różnych wyświetlaczy 'sterowalnych segmentowo' (nie parowo!) i to zostało zrealizowane. On korzysta właśnie z gotowych sterowników programowych czy sprzętowych. I można napisać kolejny sterownik, może nawet przesadziłem z ilością potrzebnego czasu, ale zauważ, że już Mirek coś odpisał, Ty odpisałeś 'a czas leci' :-) Może gdzieś jest gotowy sterownik. A wspominałem, że ja mam takie 2 wyświetlacze i nie zanosi się na kolejne.
Co się nadumałeś to 'twoje' :-)
To jesteś do przodu :-)
<wycięte>
Masz 1/7. Tzn. jeden pin wybiera grupę do 6 segmentów, pozostałe
6 wybierają które segmenty z grupy się świecą.Mała korekta: sam 595 nie wystarczy, potrzebna jest możliwość selektywnego ustawiania pinów w stan wysokiej impledancji. Czyli nóżki procka, lub odpowiedni chip I/O (np. MCP23017). Albo jakaś rzeźba w co ja bym nie wchodził. Tak naprawdę to ja bym to podłączał bezpośrednio do procka, bo odpowiedni procek mogę kupić taniej niż MCP23017.
Normalnie to nie programujesz dwa razy tego samego w ten sam sposób, raz zaprogramujesz a potem używasz. Czyli programowanie to zwykle czynność niepowtarzalna. Jak masz coś powtarzalnego, to można oszacować czas na podstawie przeszłego doświadczenia. Jak ktoś pierwszy raz w życiu rąbie drewno to też może się mocno pomylić z oszacowaniem potrzebnego czasu. A to że nowe zadanie zajmuje więcej czasu niż pierwotne oszacowanie to dość ogólna prawidłowość psychologiczna.
No, nie wiem po co je kupiłeś. Dla niektórych użycie 7 linii zamiast 12 czy 13 to zaleta. Jak tobie to nie robi różnicy (np. bo masz moduł gdzie faktycznie steruje oddzielny chip) to nie wiem czy chcesz w to wchodzić.
W dniu 21.12.2025 o 00:27, io pisze:
Nie zastanawiałem się nad tym dłużej niż 5 minut, ale skoro 7 bitów steruje 42, to nie ma innej możliwości jak świecić jeden na raz. Chyba, że ograniczysz możliwości wyświetlania do określonych kombinacji
- ale to byłby już wyświetlacz z dekoderem.
W dniu 21.12.2025 o 03:28, io pisze:
Nie mieszajmy myślowo dwóch systemów walutowych ;) Twój projekt jest hobbystyczny, więc czas jest po twojej stronie. Im dłużej masz ciekawe zagadnienie tym lepiej. Ja miałem zlecenie, jak to przy zleceniu zwykle jest termin. Unikam jak ognia sztywnych terminów przy takich pracach, ale cierpliwość zamawiającego z gumy nie jest.
W dniu 21.12.2025 o 11:06, Mirek pisze:
Każdym segmentem sterują 2 piny z 7-miu, więc pozostałe 5 może zapalać inne segmenty zupełnie niezależnie od wybranych 2 i jeszcze zależnie zapalać jakieś segmenty do tych wybranych 2. Bo 1 pin może stanowić anodę lub katodę dla 6-ciu segmentów. Ale jak tak sobie będziesz wyświetlał więcej to jeszcze musi być tak samo często by świeciło równie mocno jak inne kombinacje. I tylko najprościej zaświecać jeden segment w danej chwili, ale wtedy będzie 1/42 jasności.
Multipleksowanie, ale nie przez proste wybieranie cyfr i wszystkich segmentów tych cyfr.
W dniu 21.12.2025 o 11:13, Mirek pisze:
Kiedy takich hobbystycznych zagadnień są tysiące a doba ma ciągle 24h i mogę do końca życia nie wyrobić się z nimi :-) nie mówiąc o tym, że jeśli hobby pochłania pieniądze a nie przynosi to trzeba skądś mieć na to co pochłonie :-)
No i żeby hobby cieszyło, bo taka jest jego rola, to też trzeba mieć z niego jakiś 'zwrot' a nie tylko zwalczać kolejne problemy.
...
No tak, wydaje się, że 1/7 co ma znacznie większy sens niż 1/42.
A ja to myślę, że najlepiej użyć modułu z tym TM, ale ciągle nie mam rozwiązania dla jednoczesnego używania dwukropka i kropki bo dotąd mnie to nie ruszało za bardzo i jakoś nie udało mi się znaleźć odpowiedzi a już mi się odechciało szukać skoro kropki wystarczają :-)
No ale to programujesz już tyle lat co drewno rąbiesz i nadal nie umiesz oszacować. Widać w szczegółach to nie jest to samo.
No to pisałem, że wylutowane :-) Nabyłem je jakoś, może nawet kupiłem jako składnik jakiego sprzętu, który się skończył a ja w duchu pro-eko wylutowałem wydające się przydatne części. No tyle, że okazują się problemowo-odkrywcze, odkryłem że są jednak wyświetlacze gdzie można zaświecić dwukropek zegara razem z kropką dziesiętną :-) ale nie mogę tego przenieść na typowe wyświetlacze z multipleksowniem calych cyfr. To se mogę popisać, może ktoś coś o tych dwukropkach i kropkach wie i napisze :-) Ale sprawdzony w praktyce bo teorii mnóstwo można wymyśleć.
W dniu 21.12.2025 o 04:16, Waldek Hebisch pisze:
Zgadza się - można zapalać po 6, ale wychodzi na to, że rezystorów nie może być, bo prąd się rozpływa. Idealnie by było żeby rezystory były wewnątrz wyświetlacza przy każdej parze diodek... ale czy są? Mam taki wyświetlacz 3 cyfrowy od termostatu, ale w nim właśnie popaliły się niektóre segmenty. Podłączając do procka bez rezystorów też może być dziwnie, bo sam port też ma ograniczenie prądowe. Czyli co? W zależności ile segmentów w grupie się świeci tyle jednostek czasu świecimy, potem następna grupa?
Powiem wam że jest wyzwanie żeby to sobie rozrysować w miarę przejrzyście i się nie walnąć ;) Trzeba sobie wkleić do
-------------------------------------------------------------------------
$ 1 0.000005 10.20027730826997 50 5 50 5e-11 w 640 640 640 688 0 w 832 640 832 688 0 w 896 640 896 688 0 w 960 640 960 688 0 w 1024 640 1024 688 0
162 640 640 704 640 2 default-led 1 0 0 0.01 162 704 640 768 640 2 default-led 1 0 0 0.01 162 768 640 832 640 2 default-led 1 0 0 0.01 162 832 640 896 640 2 default-led 1 0 0 0.01 162 896 640 960 640 2 default-led 1 0 0 0.01 162 960 640 1024 640 2 default-led 1 0 0 0.01 162 1024 608 960 608 2 default-led 1 0 0 0.01 162 960 608 896 608 2 default-led 1 0 0 0.01 162 896 608 832 608 2 default-led 1 0 0 0.01 162 832 608 768 608 2 default-led 1 0 0 0.01 162 768 608 704 608 2 default-led 1 0 0 0.01 162 704 608 640 608 2 default-led 1 0 0 0.01 162 1024 560 896 560 2 default-led 1 0 0 0.01 162 896 560 768 560 2 default-led 1 0 0 0.01 162 768 560 640 560 2 default-led 1 0 0 0.01 162 640 528 768 528 2 default-led 1 0 0 0.01 162 768 528 896 528 2 default-led 1 0 0 0.01 162 896 528 1024 528 2 default-led 1 0 0 0.01 w 640 608 640 560 0 w 640 640 640 608 0 w 704 640 704 608 0 w 768 640 768 608 0 w 768 528 768 560 0 w 768 560 768 608 0 w 832 608 832 640 0 w 896 608 896 640 0 w 896 608 896 560 0 w 896 560 896 528 0 w 1024 528 1024 560 0 w 1024 560 1024 608 0 w 1024 608 1024 640 0 w 960 640 960 608 0 162 1024 640 1088 640 2 default-led 1 0 0 0.01 162 1088 608 1024 608 2 default-led 1 0 0 0.01 162 960 480 1088 480 2 default-led 1 0 0 0.01 162 832 480 960 480 2 default-led 1 0 0 0.01 162 704 480 832 480 2 default-led 1 0 0 0.01 162 1088 448 960 448 2 default-led 1 0 0 0.01 162 960 448 832 448 2 default-led 1 0 0 0.01 162 832 448 704 448 2 default-led 1 0 0 0.01 w 1088 640 1088 608 0 w 1088 608 1088 480 0 w 1088 480 1088 448 0 w 1088 192 640 192 0 w 960 448 960 480 0 w 928 512 928 576 0 w 960 608 928 576 0 w 960 480 928 512 0 w 832 448 832 480 0 w 832 480 800 512 0 w 832 608 800 576 0 w 800 512 800 576 0 w 704 480 672 512 0 w 704 608 672 576 0 w 672 512 672 576 0 w 704 448 704 480 0 162 896 400 1088 400 2 default-led 1 0 0 0.01 162 1088 368 896 368 2 default-led 1 0 0 0.01 162 704 400 896 400 2 default-led 1 0 0 0.01 162 896 368 704 368 2 default-led 1 0 0 0.01 w 704 368 704 400 0 w 704 400 704 448 0 w 896 368 896 400 0 w 896 400 864 432 0 w 896 528 864 512 0 w 864 432 864 512 0 162 640 336 832 336 2 default-led 1 0 0 0.01 162 832 304 640 304 2 default-led 1 0 0 0.01 162 832 336 1024 336 2 default-led 1 0 0 0.01 162 1024 304 832 304 2 default-led 1 0 0 0.01 w 832 304 832 336 0 w 1024 304 1024 336 0 w 832 336 832 448 0 w 1024 528 1056 512 0 w 1056 512 1056 352 0 w 1056 352 1024 336 0 s 480 736 640 736 0 1 false w 640 736 640 768 0 w 768 864 768 896 0 v 480 592 416 592 0 0 40 5 0 0 0.5 w 480 800 480 864 0 w 480 864 480 928 0 w 480 928 480 992 0 w 480 736 480 800 0 w 704 640 704 688 0 w 480 992 480 1056 0 w 480 1056 480 1120 0 w 1088 448 1088 400 0 w 1088 400 1088 368 0 w 1088 368 1088 192 0 w 640 192 640 304 0 w 640 304 640 336 0 w 640 528 640 336 0 w 640 560 640 528 0 w 704 800 704 832 0 w 832 688 832 928 0 w 832 928 832 960 0 w 896 992 896 1024 0 w 896 992 896 688 0 w 960 1088 960 1056 0 w 1024 1152 1024 1120 0 162 704 256 1024 256 2 default-led 1 0 0 0.01 162 1024 224 704 224 2 default-led 1 0 0 0.01 w 1024 224 1024 256 0 w 1024 256 1024 304 0 w 704 256 704 368 0 w 704 224 704 256 0 162 960 688 784 688 2 default-led 1 0 0 0.01 162 784 720 960 720 2 default-led 1 0 0 0.01 w 960 688 960 720 0 w 784 720 704 720 0 w 704 688 704 720 0 w 784 688 704 688 0 w 704 720 704 800 0 162 768 768 960 768 2 default-led 1 0 0 0.01 162 960 800 768 800 2 default-led 1 0 0 0.01 w 768 640 768 768 0 w 768 768 768 800 0 w 768 800 768 864 0 w 960 720 960 768 0 w 960 768 960 800 0 w 960 800 960 1056 0 162 1024 896 768 896 2 default-led 1 0 0 0.01 162 768 864 1024 864 2 default-led 1 0 0 0.01 w 1024 688 1024 864 0 w 1024 864 1024 896 0 w 1024 896 1024 1120 0 r 640 736 640 688 0 1000 r 640 832 704 832 0 1000 r 640 896 768 896 0 1000 r 640 960 832 960 0 1000 r 640 1024 896 1024 0 1000 r 640 1088 960 1088 0 1000 r 640 1152 1024 1152 0 1000 w 640 1120 640 1152 0 w 640 1056 640 1088 0 w 640 992 640 1024 0 w 640 928 640 960 0 w 640 864 640 896 0 w 640 800 640 832 0 w 640 768 400 768 0 w 640 832 400 832 0 w 640 896 400 896 0 w 640 960 400 960 0 w 640 1024 400 1024 0 w 640 1088 400 1088 0 w 640 1152 400 1152 0 s 480 864 640 864 0 1 false s 480 928 640 928 0 1 false s 480 992 640 992 0 1 false s 480 1056 640 1056 0 1 false s 480 1120 640 1120 0 1 false s 480 800 640 800 0 1 false s 240 768 400 768 0 1 false s 240 832 400 832 0 1 false s 240 896 400 896 0 1 false s 240 960 400 960 0 1 false s 240 1024 400 1024 0 1 false s 240 1088 400 1088 0 1 false s 240 1152 400 1152 0 1 false w 240 592 416 592 0 w 240 592 240 768 0 w 240 768 240 832 0 w 240 832 240 896 0 w 240 896 240 960 0 w 240 960 240 1024 0 w 240 1024 240 1088 0 w 240 1088 240 1152 0 w 480 592 480 736 0--------------------------------------------------------------------------
No, rezystory mogą być, ale przez jeden będzie płynął sumaryczny prąd, więc równy podział prądu zależy od zgrania charakterystyk segmentów.
Pewnie tak. Tzn. dzielisz czas na 42 jednostki, świecisz grupę przez tyle jednostek ile segmentów w grupie, potem jeśli trzeba odczekujesz tak by początek następnej grupy był 6 jedostek po początku poprzedniej.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required