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.

OLED SSD1306 0,96" - oszczędzanie zasobów arduino

maras2003 27 Lip 2017 14:25 687 11
  • #1 27 Lip 2017 14:25
    maras2003
    Poziom 29  

    Witam,

    Zakupiłem na testy OLED na SSD1306, ma on 128x64 pikseli i 0,96".
    Zrobiłem bardzo prosty (w zasadzie zmodyfikowałem przykładowy) program do obsługi tego OLEDa, ale martwi mnie zużycie pamięci na Uno.


    "Szkic używa 11232 bajtów (34%) pamięci programu. Maksimum to 32256 bajtów.

    Zmienne globalne używają 1354 bajtów (66%) pamięci dynamicznej, pozostawiając 694 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów."

    Kod: c
    Zaloguj się, aby zobaczyć kod



    To biblioteka tego wyświetlacza tyle zjada. Czy są może jakieś oszczędniejsze biblioteki ? Potrzebuję w zasadzie sam tekst, ewentualnie słupki grubości kilku pikseli.

  • #2 27 Lip 2017 14:46
    michalko12
    Specjalista - Mikrokontrolery

    Obsługa tego wyświetlacza w 2kB powinna się zmieścić, ale to arduino i jego durne biblioteki więc nie ma co się dziwić. Rozwiązaniem jest odcięcie się od arduino, ewentualnie szukanie bibliotek o mniejszych potrzebach.

  • #3 27 Lip 2017 15:06
    maras2003
    Poziom 29  

    Czyli pisanie w C i użycie płytki arduino tylko jako "gotowej podstawki do MEGA328P" ?

  • #4 27 Lip 2017 15:23
    michalko12
    Specjalista - Mikrokontrolery

    maras2003 napisał:
    Czyli pisanie w C i użycie płytki arduino tylko jako "gotowej podstawki do MEGA328P" ?

    No jak Cię przerażają te liczby pożeranej pamięci przez gotowe "biblioteki" to to jest jakieś wyjście z tej sytuacji. Samo środowisko Arduino pewnie nie jest takie złe, tylko trzeba samemu wszystko na piechotę robić i trzymać się z dala od wszelkich bibliotek i wtedy też powinno być OK. Największą zaletą a zarazem problemem bibliotek arduino jest ich uniwersalność i idiotoodporność. To te dwa czynniki sprawiają, że większość bibliotek jest prawie nieużywalna i nie współoperatywna.

  • #6 28 Lip 2017 19:59
    maras2003
    Poziom 29  

    Biblioteka od oled zawiera bibliotekę GFX, gdzie są "pomocnicy" do wypełniania figur.
    Albo ją odchudzę, albo poszukam faktycznie innej :)

    Podgląd bibliotek w załączniku

  • #7 28 Lip 2017 20:17
    michalko12
    Specjalista - Mikrokontrolery

    Dobre...

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Bo pamięć i tak nigdy nie jest "pusta"...

  • #8 29 Lip 2017 13:41
    maras2003
    Poziom 29  

    Czy to wskazówka dla mnie od czego zacząć czyszczenie :) ?
    W bilbliotece jest logo, które można wywołać jedną funkcją - może ten fragment kodu ?

    Biblioteka ACROBOTIC zajmuje również dużo pamięci, ma błędy i nie ma interesującej mnie czcionki (ok. 20pix)
    Biblioteka U8glib już zajmuje rozsądniejszą ilość pamięci, ale również ma zbyt małe czcionki

  • #10 29 Lip 2017 18:31
    Piotrus_999
    Poziom 39  

    @maras2003 A może byś tak wpadł na pomysł napisania sobie potrzebnych funkcji. Już byś to zrobił 2 razy dla tak prostego wyświetlacza, a ile byś się nauczył. To jest właśnie to o czym pisał michalko na temat Arduino.

  • #11 07 Sie 2017 12:01
    maras2003
    Poziom 29  

    Testowo napisałem 50% tego co chciałem w u8b2, czyli nowszej wersji u8glib, wykorzystałem czcionkę "u8g2_font_unifont_t_symbols", która ma dość przyjazne litery, ponadto gamę symboli z których bardzo łatwo rysuje sobie słupek (wizualizacja ciśnienia od min do max).
    O dziwo zmieściłem się w wersji beta w pamięci - 90% programu i 75% ram :D

    Problem w tym, że rysowanie na OLED w przypadku tej funkcji usypia całą resztę programu na zbyt długo. Rysowanie odbywa się za pomocą pętli do while. Póki co odpada, szukam dalej, możliwe że starsza wersja będzie dla moich celów lepsza :)


    Kurcze widzę że stara biblioteka rysuje tak samo :)
    A utrzymania działania programu w czasie prawie rzeczywistym i bez zbędnej zwłoki jest dla mnie istotne bo jest to 'centralka' pilota bezprzewodowego do sterowania zawieszeniem w samochodzie :)

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME