Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.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

27 Lip 2017 14:25 1725 11
  • 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.
  • BotlandBotland
  • 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.
  • BotlandBotland
  • Poziom 29  
    Czyli pisanie w C i użycie płytki arduino tylko jako "gotowej podstawki do MEGA328P" ?
  • 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.
  • Użytkownik usunął konto  
  • 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
  • Specjalista - Mikrokontrolery
    Dobre...
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Bo pamięć i tak nigdy nie jest "pusta"...
  • 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
  • Użytkownik usunął konto  
  • 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 :)
  • Użytkownik usunął konto