Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino - TM1637 - kropka, dwukropek

10 Gru 2016 23:53 1989 18
  • Poziom 4  
    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ę ;)
  • Użytkownik usunął konto  
  • Poziom 25  
    userduino napisał:
    namok napisał:
    Sprawdź tą bibliotekę: https://github.com/avishorp/TM1637


    Już ją sprawdzałem, i podczas kompilacji wyskakuje taki błąd -
    Arduino - TM1637 - kropka, dwukropek
    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.
  • Moderator na urlopie...
    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.
  • Poziom 4  
    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 :)
  • Poziom 25  
    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?
  • Poziom 4  
    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);
  • Poziom 25  
    Wszystko masz opisane w pliku TM1637Display.h:
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 4  
    namok napisał:
    Wszystko masz opisane w pliku TM1637Display.h:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Czyli dobrze to rozumiem?
    Kod: 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
  • Poziom 4  
    userduino napisał:
    namok napisał:
    Wszystko masz opisane w pliku TM1637Display.h:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Czyli dobrze to rozumiem?
    Kod: 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
    Zaloguj się, aby zobaczyć kod

    W jaki sposób można kontrolować zapalanie tych kropek? :)
  • Poziom 25  
    Czy ładowałeś przykładowy projekt z biblioteki do arduino? Kropki się zapalają?
  • Poziom 4  
    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 :)
  • Poziom 25  
    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++.
  • Poziom 4  
    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
    Zaloguj się, aby zobaczyć kod

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

    Bo skąd funkcja
    Kod: c
    Zaloguj się, aby zobaczyć kod

    będzie wiedzieć do którego wyświetlacza się odnosi?
  • Poziom 25  
    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
    Zaloguj się, aby zobaczyć kod

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