Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATmega][C][HD44780] Wykres

boss87 08 Sty 2013 01:34 4053 14
  • #1 08 Sty 2013 01:34
    boss87
    Poziom 11  

    Witajcie,

    Przy okazji robienia monitora do kotła CO, zrobiłem funkcję dla hd44780 która pozwala rysować prosty wykres używając 8 własnych znaków użytkownika.

    Na wykresie mieści się 40 próbek, co o tym sądzicie?
    Dodam, że całkiem fajnie działa z enkoderem jako przewijanie góra/dół.

    Był by ktoś zainteresowany? To udostępnię [C]

    [ATmega][C][HD44780] Wykres

  • #2 08 Sty 2013 11:55
    mrsajm0n
    Poziom 13  

    Oczywiście, że znajdą się jacyś zainteresowani. Ale masz zamiar to sprzedać, czy o co chodzi? Bo jak za darmo to wrzuć załącznik. ;)

  • #3 08 Sty 2013 12:45
    boss87
    Poziom 11  

    Kto mi za to zapłaci ? :)
    Chciałem to przygotować trochę staranniej, ale wrzucę w takiej wersji,

    Kod: c
    Zaloguj się, aby zobaczyć kod


    dodajemy nowa próbkę w ten sposób: (0 to nr wykresu, można ich mieć kilka, ale wyświetlać jednocześnie tylko jeden)
    Code:
    dodaj_do_historii(0, wartosc + korekta);


    a rysujemy tak:
    Code:
    rysuj_historie(0, x, y);


    zmienna korekta służy do przewijania góra dol, zmieniamy ją o +-1 i rysujemy od nowa, wtedy ładnie to się przewija

  • #4 08 Sty 2013 14:42
    mrsajm0n
    Poziom 13  

    Mała uwaga ode mnie. Niezbyt sensowne jest robienie ośmiu tablic znakX. Dużo lepiej gdybyś zrobił tablicę wielowymiarową ( Link ). Dalej osiem razy wywołujesz: historia, dwa if i for. Jeszcze dalej osiem razy LCD_ProgrammChar (dwa m to z niemieckiego?). Dzięki tablicy o której wspomniałem wrzucisz to w jedną pętelkę i będzie dużo ładniej. ;)
    Makra (#define) zwyczajowo nazywamy wielkimi literami, czyli w twoim przypadku KOREKTA_POCZATKOWA.

  • #6 08 Sty 2013 14:56
    boss87
    Poziom 11  

    @mrsajm0n racja, jak znajdę chwilę to przerobię na wielowymiarową, nie wiem skąd dwa m w LCD_ProgrammChar, nie ja pisałem tą bibliotekę do lcd :). Generalnie nie jest to zoptymalizowane bo to wersja działająca, a nie wyglądająca, chciałem Wam pokazać ideę wykresu na takim prostym wyświetlaczu jak hd44780:)

    @snnaap nie wiem czy do końca o to Ci chodzi, każdy znak ma 8 pixeli wysokości, mając w tablicy 0,1,2,3,4,5,6,7,8,0 uzyskasz takie coś jak na obrazku, oczywiście próbek może być max 40, (8 znaków)
    [ATmega][C][HD44780] Wykres

  • #7 08 Sty 2013 15:08
    snnaap
    Poziom 25  

    A, to już wiem o co chodzi, jedna próbka to jeden słupek.
    Całkiem fajnie.
    I tu pojawia nam się ograniczenia tego poczciwego wyświetlacza, że można definiować jedynie 8 znaków, powinna być możliwość definiowania min 80 znaków tak aby można było swobodnie zapełnić np wyświetlacz 20x4.

    A tak musimy się męczyć z multipleksowaniem.
    Pozdrawiam

  • #8 08 Sty 2013 16:34
    boss87
    Poziom 11  

    Masz jakiś sprawdzony sposób na multipleksowanie? Walczyłem z tym i nie udało mi się dobrać sensownych czasów, zawsze było widać znaczne migotanie.

  • #10 08 Sty 2013 19:50
    uzi18
    Poziom 22  

    Pomysl fajny, dla czystosci wyswietlacza warto ten jeden znak "wykresu" po lewej usunac - bedzie rowniej ;)

    Wyglada na to, ze mozna spokojnie ta funkcje przerobic aby uzywala
    tylko jednego znaku i wysylala go po w petli jako 0-7, czyli bez tablicy wielowymiarowej.

    np.:

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #11 08 Sty 2013 21:22
    boss87
    Poziom 11  

    @uzi18 Faktycznie niezła poprawka, zaoszczędzone około 650 bajtów :), poprawnie będzie tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    A przy okazji chciałem pokazać jak to działa w ruchu:
    (przykładowo z ADC i potencjometrem)







  • #13 16 Sty 2013 19:27
    boss87
    Poziom 11  

    Dopiero teraz zauważyłem że edytowałeś..
    Rozbiłem ponieważ po każdym LCD_WriteData(); wyświetlacz wraca do pozycji 0,0

  • #15 19 Sty 2013 01:22
    boss87
    Poziom 11  

    No to chyba wszystko w temacie, można zamknąć. Jak by ktoś miał pytania, zapraszam na PW

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme