• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Śmieci na ekranie OLED
#1
OLED 1.3 ze sterownikiem SH1106, arduino NANO
Program zajmuje
   

Używana biblioteka
   

I pojawiają się takie oto śmieci na ekranie
   

W tym miejscu (zaznaczonym czerwonym kółkiem)wyświetlany jest wynik 23.5 i na niego nakładają się wyświetlane pixele, co chwilę zmieniające swój układ. Powiększanie objętości programu powoduje że obszar tych zakłóceń przesuwa się w lewą stronę, aż po przekroczeniu około 71 % pamięci następuje reset procesora.

Program nie jest jeszcze skończony i potrzebuje jeszcze trochę miejsca na kod, a tu taka niespodzianka.

Pliss pomóżcie Shy
 
Odpowiedź
#2
Są inne biblioteki do tego ekranu, może będą działać lepiej. Zobacz to: https://github.com/olikraus/u8g2.
 
Odpowiedź
#3
Zabrakło pamięci RAM. Te 40% które podaje kompilator nie obejmuje pamięci alokowanej dynamicznie (malloc). Bufor ekranu dla 128x64 zajmuje 1kB, wiec po dodaniu do 833 alokowanej statycznie, na stos nie zostaje prawie nic. Inna biblioteka musiałaby zapisywać dane bezpośrednio do wyświetlacza, a to dość powolne i skomplikowane. Zostaje chyba tylko zmienić Arduino Uno na inny model.
 
Odpowiedź
#4
Edit: jeśli musisz używać Arduino Uno, to proponuję sprawdzić co zajmuje te 833 bajty RAM oraz co jeszcze przydziela pamięć. Może dałoby się zoptymalizować program tak żeby działał z 2kB pamięci. Ale o wiele łatwiej wybrać inny mikrokontroler. Atmega328 nie najlepiej pasuje do graficznych wyswietlaczy.
 
Odpowiedź
#5
Przesadzasz, użył po prostu lipnej biblioteki gdzie nie ma oszczędności. A są specjalne dedykowane do jak najmniejszego zużycia zasobów choć by https://github.com/lexus2k/ssd1306
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#6
(18-09-2022, 10:28)Jarewa0606 napisał(a): Przesadzasz, użył po prostu lipnej biblioteki gdzie nie ma oszczędności. A są specjalne  dedykowane do jak najmniejszego zużycia zasobów  choć by https://github.com/lexus2k/ssd1306
Ok tylko że sterownik to SH1106 Confused
 
Odpowiedź
#7
Biblioteka podlinkowana przez kolegę @Jarewa0606 raczej działa z różnymi kontrolerami i obsługuje tez SH110x. Tylko trzeba pamiętać, ze przy wyswietlaczu monochromatycznym jeden bajt to 8 pikseli i nie każda współrzędna da się adresować. Dlatego napisałem, ze używanie wyświetlacza bez buforowania jest trudniejsze… ale jak najbardziej możliwe, wtedy nawet Uno da radę. Chociaż nie wiem jakie masz oczekiwania wobec aplikacji i czy na pewno nie lepiej i łatwiej wybrać mocniejszy sprzęt.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości