logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak sterować kropkami i dwukropkiem w wyświetlaczu 7-segmentowym TM1637?

userduino 10 Gru 2016 23:53 3213 18
REKLAMA
  • #1 16118494
    userduino
    Poziom 7  
    Posty: 23
    Witam;)
    Siedzę już długie godziny i szukam jak można za pomocą sterownika TM1637 sterować kropkami i dwukropkiem w wyświetlaczach 7-segmentowych.
    I o ile gdzieś można coś znaleźć o dwukropku (można tez sterować nim osobno z osobnych pinów uC) tak o pojedynczych kropkach od każdej cyfry już nic.
    Czy ktoś wie jak można to wykonać?
    W standardowych bibliotekach od tego wyświetlacza nie ma nic wspomnianego o sterowaniu kropkami.
    A przypadkiem trafiło mi się darmowo kilkadziesiąt sztuk tego sterownika wiec szkoda by było żeby się zmarnował ;)
    Za pomoc serdecznie dziękuję ;)
  • REKLAMA
  • REKLAMA
  • #5 16119230
    userduino
    Poziom 7  
    Posty: 23
    piotrva napisał:
    http://olimex.cl/website_MCI/static/documents/Datasheet_TM1637.pdf

    Wybacz ale jestem początkującym i dopiero ucze się programować w Arduino i niestety sam datasheet nie mówi mi za wiele jak rozwiązać problem kropek i dwukropka :(
  • #6 16119379
    Konto nie istnieje
    Konto nie istnieje  
  • #7 16119536
    namok
    Poziom 25  
    Posty: 529
    Pomógł: 91
    Ocena: 73
    userduino napisał:
    namok napisał:
    Sprawdź tą bibliotekę: https://github.com/avishorp/TM1637


    Już ją sprawdzałem, i podczas kompilacji wyskakuje taki błąd -
    Jak sterować kropkami i dwukropkiem w wyświetlaczu 7-segmentowym TM1637?
    To przyznaj się co nabroiłeś bo u mnie na wersji 1.6.5, 1.6.12 jak i platformio kompiluje się bez błędów.
  • REKLAMA
  • #8 16119565
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 734
    Może powiem trochę bardziej na luzie, niż kol. @Piotrus_999 :

    Może to dobry moment, żeby zgłębić wiedzę na ten temat? To na pewno Ci zaprocentuje w przyszłości.

    Powiedz z jakiej obecnie biblioteki korzystasz, a razem zerkniemy do kodu.
  • REKLAMA
  • #9 16119629
    userduino
    Poziom 7  
    Posty: 23
    Piotrus_999 napisał:
    Analiza kodu , myślenie i nauka - innej drogi nie ma.

    Wszystko fajnie i jak najbardziej jestem nastawiony na naukę ale jeszcze tydzień temu uczyłem się mrugania LEDem a teraz wybacz ale "rzucasz mnie na głęboką wodę" :D Chciałem po prostu zrobić prosty termometr na DS18B20 z wykorzystaniem właśnie 3 cyfrowego wyświetlacza 7 segmentowego z kropką za pomocą sterownika TM1637 ;)
    Datasheeta już dawno przeglądałem i to wiele razy jednak poziom mojej wiedzy jest zbyt mały by móc z samej analizy datasheetu coś wywnioskować ;)

    Dodano po 4 [minuty]:

    piotrva napisał:
    Może powiem trochę bardziej na luzie, niż kol. @Piotrus_999 :

    Może to dobry moment, żeby zgłębić wiedzę na ten temat? To na pewno Ci zaprocentuje w przyszłości.

    Powiedz z jakiej obecnie biblioteki korzystasz, a razem zerkniemy do kodu.

    Jestem jak najbardziej za :)
    Myślę że więcej bym się nauczył gdyby ktoś podał gotowe rozwiązanie ale go przeanalizował dlaczego jest tak a nie inaczej i co się skąd wzięło :)
    A biblioteke mam taką sama jaka podawał kolega namok
    namok napisał:
    Sprawdź tą bibliotekę: https://github.com/avishorp/TM1637

    Korzystałem również z tutoriala z tej stronki :)
  • #10 16119723
    namok
    Poziom 25  
    Posty: 529
    Pomógł: 91
    Ocena: 73
    Nie odnisłeś się do teco co napisałem:
    namok napisał:
    To przyznaj się co nabroiłeś bo u mnie na wersji 1.6.5, 1.6.12 jak i platformio kompiluje się bez błędów.
    Dla pewności spytam, nie zmieniałeś nic w przykładowym programie?. Ten program pochodzi z tej biblioteki która podlinkowałem?
  • #11 16119845
    userduino
    Poziom 7  
    Posty: 23
    namok napisał:
    Nie odnisłeś się do teco co napisałem:
    namok napisał:
    To przyznaj się co nabroiłeś bo u mnie na wersji 1.6.5, 1.6.12 jak i platformio kompiluje się bez błędów.
    Dla pewności spytam, nie zmieniałeś nic w przykładowym programie?. Ten program pochodzi z tej biblioteki która podlinkowałem?


    Wybacz ale jak pisałem wcześniejszego posta to nie zauważyłem Twojego :)
    Odinstalowywałem całe arduino łącznie z bibliotekami i zainstalowałem ponownie i dodałem Twoją bibliotekę i nagle przykład skompilował się bez tego błędu :)
    Dzięki za pomoc w tym :)
    Idąc dalej załączyłem testowy program z tej biblioteki i o dziwo kropki i dwukropek zaczęły świecić :D
    Jednak jak używać ten funkcji?
    showNumberDecEx - Display a decimal number with decimal points or colon
    To znaczy jakie parametry ona przyjmuje? W przykładzie są 3:
    display.showNumberDecEx(0, (0x80 >> k), true);
    display.showNumberDecEx(a, (b), c);
  • #12 16120026
    namok
    Poziom 25  
    Posty: 529
    Pomógł: 91
    Ocena: 73
    Wszystko masz opisane w pliku TM1637Display.h:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #13 16121134
    userduino
    Poziom 7  
    Posty: 23
    namok napisał:
    Wszystko masz opisane w pliku TM1637Display.h:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Czyli dobrze to rozumiem?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    A - numer do wyświetlenia (np. 1234 - przy 4 cyfrowych wyświetlaczu)
    B - nr kropki która ma być wyświetlona 0 - pierwsza kropka ; 3 - czwarta kropka
    C - false lub true; jeżeli true: liczba A jest dopełniana zerami
    D - ilość cyfr w wyświetlaczu
    E - nr wyświetlacza od którego zaczyna się wyświetlanie - 0 - od lewej, 3 - od prawej
  • #14 16122370
    userduino
    Poziom 7  
    Posty: 23
    userduino napisał:
    namok napisał:
    Wszystko masz opisane w pliku TM1637Display.h:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Czyli dobrze to rozumiem?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    A - numer do wyświetlenia (np. 1234 - przy 4 cyfrowych wyświetlaczu)
    B - nr kropki która ma być wyświetlona 0 - pierwsza kropka ; 3 - czwarta kropka
    C - false lub true; jeżeli true: liczba A jest dopełniana zerami
    D - ilość cyfr w wyświetlaczu
    E - nr wyświetlacza od którego zaczyna się wyświetlanie - 0 - od lewej, 3 - od prawej


    Coś nie mogę sobie poradzić z włączaniem tych kropek :(
    Próbuję analizować przykład ale tez nic z tego mi nie wychodzi:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    W jaki sposób można kontrolować zapalanie tych kropek? :)
  • #15 16122434
    namok
    Poziom 25  
    Posty: 529
    Pomógł: 91
    Ocena: 73
    Czy ładowałeś przykładowy projekt z biblioteki do arduino? Kropki się zapalają?
  • #16 16122478
    userduino
    Poziom 7  
    Posty: 23
    namok napisał:
    Czy ładowałeś przykładowy projekt z biblioteki do arduino? Kropki się zapalają?

    Tak wszystko ładnie działa kropki się zapalają najpierw wszystkie później po jednej od lewej do prawej.
    Tylko nie umiem wydzielić sobie funkcji by np zapalać jedną np pierwsza od prawej itp :)
  • #17 16122511
    namok
    Poziom 25  
    Posty: 529
    Pomógł: 91
    Ocena: 73
    To skoro działa to pozostaje analiza programu. Polecenie do zapalania kropek znasz. A jeśli dalej nie zrozumiesz co się dziej w programie to niestety musisz wrócić do podastaw, przerobić jakiś kurs programowania w c/c++.
  • #18 16124445
    userduino
    Poziom 7  
    Posty: 23
    namok napisał:
    To skoro działa to pozostaje analiza programu. Polecenie do zapalania kropek znasz. A jeśli dalej nie zrozumiesz co się dziej w programie to niestety musisz wrócić do podastaw, przerobić jakiś kurs programowania w c/c++.

    Udało mi się z analizować ten przykład i zapalanie poszczególnych kropek :)
    Mam tylko jeszcze jedno pytanie:
    Czy można podpiąć pod jeden uC kilka takich wyświetlaczy z TM1637?
    I w tedy wystarczy tylko zmienić piny dla CLK i DIO?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Czy trzeba je jakoś opisywać np CLK1 i DIO1?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Bo skąd funkcja
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    będzie wiedzieć do którego wyświetlacza się odnosi?
  • #19 16124770
    namok
    Poziom 25  
    Posty: 529
    Pomógł: 91
    Ocena: 73
    Prawie tak jak napisałeś ale prawie robi wielką różnicę ;). W setup() stwórz nowy obiekt typu TM1637Display z nowymi definicjami dla clk i dio i nową nazwą obiektu, nazwa może być dowolna:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    a potem odwołuj się do tego wyświetlacza przez display1. Kłania się tu obiektowość w c++.

Podsumowanie tematu

✨ Użytkownik poszukiwał sposobu na sterowanie kropkami i dwukropkiem w wyświetlaczach 7-segmentowych z użyciem sterownika TM1637. Po kilku próbach i błędach związanych z kompilacją, udało mu się zainstalować odpowiednią bibliotekę, co pozwoliło na aktywację kropek i dwukropka. W dyskusji omówiono funkcję showNumberDecEx, która umożliwia wyświetlanie liczb z kontrolą kropek. Użytkownik zadał pytanie o możliwość podłączenia kilku wyświetlaczy do jednego mikrokontrolera, co zostało potwierdzone, z zaleceniem tworzenia nowych obiektów TM1637Display dla każdego wyświetlacza.
Wygenerowane przez model językowy.
REKLAMA