Ten negatywowy wyświetlacz OLED o doskonałej czytelności sprawia, że jego niewielkie rozmiary będą wręcz zaletą. Matryca ma rozmiar zaledwie 0,96″ co stanowi ekran o powierzchni 19 x27mm, i posiada rozdzielczość 128 x64 pikseli. Wyświetlacz zbudowany został na bazie kontrolera SSD1306. Producent zadbał również by liczba wyprowadzeń została zminimalizowana do linii zasilania i magistrali komunikacyjnej TWI (I²C) – łącznie 4.
Moduł może pracować zasilany napięciem do 6V DC i nie wymaga podświetlenia. Jego rewelacyjna czytelność nie zostanie pogorszona nawet przy kącie widzenia do 160°. Następną zaletą jest możliwość pracy w szerokim zakresie temperatur otoczenia -30 do +70°C. Wymiary modułu przedstawia poniższy rysunek:
Dzięki Wojciechowi mi trafił się wyświetlacz OLED firmy HelTec Automaticon o niebieskim kolorze wyświetlanych znaków. Oznaczenie producenta to HTDS-BS96.
Na PCB modułu wyświetlacza można wypatrzeć zworkę w postaci rezystorka 0Ω, do przestawiania adresu bazowego z &H78 na &H7A, co umożliwi przyłączenie do magistrali dwóch egzemplarzy wyświetlacza. Magistrala TWI posiada rezystory podciągające o wartości 10kΩ. Układ wyposażono też w regulator napięcia LDO (Dropout Voltage 250mV @ 100mA) w obudowie SOT-23-3, kodowany 662K. Pełne oznaczenie producentów to LY2508A33M, lub XC6206P332MR.
Typowe zapotrzebowanie na energię modułu wyświetlacza ma mieścić się w zakresie 0,06 do 0,08W – przy pełnym wysterowaniu matrycy. Wypada znacznie lepiej od technologii TFT, LCD i innych.
Gdy już wiadomo co i jak trzeba zabrać się za oprogramowanie by był z tego wyświetlacza pożytek. W tym momencie do wyboru mamy dwie możliwości. Można posłużyć się kodem z forum MCS, lub gotową biblioteką glcdSSD1306-I2C.lib (standardowo w katalogu lib środowiska). Tak się składa, że obydwie te możliwości nie pozwolą na posługiwanie się procedurami do rysowania znaków graficznych np PSET, LINE, BOX, BOXFILL, CIRCLE. Natomiast z powodzeniem można będzie posługiwać się grafikami, ikonami i dowolnie zdefiniowaną czcionką. Biblioteka ma jeszcze parę mankamentów: na chwilę obecną nie działa na µC serii Xmega (testował BARTek), oraz nie umożliwia sterowania dwoma wyświetlaczami, nie da się też nastawić kontrastu wyświetlacza. Dla zmiany adresu i wartości kontrastu trzeba grzebać w kodzie biblioteki. A szkoda 😥
Łącznie z biblioteką dla środowiska Bascom AVR dołączone zostały przykładowe zestawy kroju liter:
• font8x8.font,
• font8x8TT.font,
• font16x16.font
Teraz odpowiem sobie na pytanie ile kodu generuje taka czcionka … i tak każda o rozmiarze 8×8 ze wszystkimi zdefiniowanymi znakami w pełnym zakresie ASCII zajmuje 1788 bajtów, znowu czcionki o rozmiarze 16×16 pikseli 3076 bajtów. Natomiast każde wywołanie / deklaracja użycia czcionki instrukcją SETFONT np Setfont Font8x8tt pochłania 12 bajtów. Jak widać zastosowanie tej funkcjonalności w µC o niewielkiej przestrzeni flash jest niemożliwe, ale czy na pewno ? 😉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
Font8x8TT: $asm .db 1,8,8,2 .db 0,0,0,0,0,0,0,0 ; .db 0,0,6,95,6,0,0,0 ; ! .db 0,7,3,0,7,3,0,0 ; " .db 0,36,126,36,126,36,0,0 ; # .db 0,36,43,106,18,0,0,0 ; $ .db 0,99,19,8,100,99,0,0 ; % .db 0,54,73,86,32,80,0,0 ; & .db 0,0,7,3,0,0,0,0 ; ' .db 0,0,62,65,0,0,0,0 .db 0,0,65,62,0,0,0,0 .db 0,8,62,28,62,8,0,0 ; * .db 0,8,8,62,8,8,0,0 ; + .db 0,0,224,96,0,0,0,0 ; , .db 0,8,8,8,8,8,0,0 ; - .db 0,0,96,96,0,0,0,0 ; . .db 0,32,16,8,4,2,0,0 ; / .db 0,62,81,73,69,62,0,0 ; 0 .db 0,0,66,127,64,0,0,0 ; 1 .db 0,98,81,73,73,70,0,0 ; 2 .db 0,34,73,73,73,54,0,0 ; 3 .db 0,24,20,18,127,16,0,0 ; 4 .db 0,47,73,73,73,49,0,0 ; 5 .db 0,60,74,73,73,48,0,0 ; 6 .db 0,1,113,9,5,3,0,0 ; 7 .db 0,54,73,73,73,54,0,0 ; 8 .db 0,6,73,73,41,30,0,0 ; 9 .db 0,0,108,108,0,0,0,0 ; : .db 0,0,236,108,0,0,0,0 ; ; .db 0,8,20,34,65,0,0,0 ; < .db 0,36,36,36,36,36,0,0 ; = .db 0,0,65,34,20,8,0,0 ; > .db 0,2,1,89,9,6,0,0 ; ? .db 0,62,65,93,85,30,0,0 ; @ .db 0,126,17,17,17,126,0,0 ; A .db 0,127,73,73,73,54,0,0 ; B .db 0,62,65,65,65,34,0,0 ; C .db 0,127,65,65,65,62,0,0 ; D .db 0,127,73,73,73,65,0,0 ; E .db 0,127,9,9,9,1,0,0 ; F .db 0,62,65,73,73,122,0,0 ; G .db 0,127,8,8,8,127,0,0 ; H .db 0,0,65,127,65,0,0,0 ; I .db 0,48,64,64,64,63,0,0 ; J .db 0,127,8,20,34,65,0,0 ; K .db 0,127,64,64,64,64,0,0 ; L .db 0,127,2,4,2,127,0,0 ; M .db 0,127,2,4,8,127,0,0 ; N .db 0,62,65,65,65,62,0,0 ; O .db 0,127,9,9,9,6,0,0 ; P .db 0,62,65,81,33,94,0,0 ; Q .db 0,127,9,9,25,102,0,0 ; R .db 0,38,73,73,73,50,0,0 ; S .db 0,1,1,127,1,1,0,0 ; T .db 0,63,64,64,64,63,0,0 ; U .db 0,31,32,64,32,31,0,0 ; V .db 0,63,64,60,64,63,0,0 ; W .db 0,99,20,8,20,99,0,0 ; X .db 0,7,8,112,8,7,0,0 ; Y .db 0,113,73,69,67,0,0,0 ; Z .db 0,0,127,65,65,0,0,0 ; [ .db 0,2,4,8,16,32,0,0 ; \ .db 0,0,65,65,127,0,0,0 ; ] .db 0,4,2,1,2,4,0,0 ; ^ .db 128,128,128,128,128,128,128,128 .db 0,0,3,7,0,0,0,0 ; ` .db 0,32,84,84,84,120,0,0 ; a .db 0,127,68,68,68,56,0,0 ; b .db 0,56,68,68,68,40,0,0 ; c .db 0,56,68,68,68,127,0,0 ; d .db 0,56,84,84,84,8,0,0 ; e .db 0,8,126,9,9,0,0,0 ; f .db 0,24,164,164,164,124,0,0 ; g .db 0,127,4,4,120,0,0,0 ; h .db 0,0,0,125,64,0,0,0 ; i .db 0,64,128,132,125,0,0,0 ; j .db 0,127,16,40,68,0,0,0 ; k .db 0,0,0,127,64,0,0,0 ; l .db 0,124,4,24,4,120,0,0 ; m .db 0,124,4,4,120,0,0,0 ; n .db 0,56,68,68,68,56,0,0 ; o .db 0,252,68,68,68,56,0,0 ; p .db 0,56,68,68,68,252,0,0 ; q .db 0,68,120,68,4,8,0,0 ; r .db 0,8,84,84,84,32,0,0 ; s .db 0,4,62,68,36,0,0,0 ; t .db 0,60,64,32,124,0,0,0 ; u .db 0,28,32,64,32,28,0,0 ; v .db 0,60,96,48,96,60,0,0 ; w .db 0,108,16,16,108,0,0,0 ; x .db 0,156,160,96,60,0,0,0 ; y .db 0,100,84,84,76,0,0,0 ; z .db 0,8,62,65,65,0,0,0 ; { .db 0,0,0,119,0,0,0,0 ; | .db 0,0,65,65,62,8,0,0 ; } .db 0,2,1,2,1,0,0,0 ; ~ .db 0,60,38,35,38,60,0,0 ; .db 0,30,161,225,33,18,0,0 ; .db 0,61,64,32,125,0,0,0 ; .db 0,56,84,84,85,9,0,0 ; .db 0,32,85,85,85,120,0,0 ; .db 0,32,85,84,85,120,0,0 ; .db 0,32,85,85,84,120,0,0 ;
.db 0,32,87,85,87,120,0,0 ; .db 0,28,162,226,34,20,0,0 ; .db 0,56,85,85,85,8,0,0 ; .db 0,56,85,84,85,8,0,0 ; .db 0,56,85,85,84,8,0,0 ; .db 0,0,1,124,65,0,0,0 ; .db 0,0,2,121,66,0,0,0 ; .db 0,0,1,124,64,0,0,0 ; .db 0,112,41,36,41,112,0,0 ; .db 0,120,47,37,47,120,0,0 ; .db 0,124,84,84,85,69,0,0 ; .db 0,52,84,124,84,88,0,0 ; .db 0,126,9,127,73,73,0,0 ; .db 0,56,69,69,57,0,0,0 ; .db 0,56,69,68,57,0,0,0 ; .db 0,57,69,68,56,0,0,0 ; .db 0,60,65,33,125,0,0,0 ; .db 0,61,65,32,124,0,0,0 ; .db 0,156,161,96,61,0,0,0 ; .db 0,61,66,66,61,0,0,0 ; .db 0,60,65,64,61,0,0,0 ; .db 0,24,36,102,36,0,0,0 ; .db 0,72,62,73,73,98,0,0 ; .db 0,41,42,124,42,41,0,0 ; .db 0,127,9,22,120,16,0,0 ; .db 0,64,136,126,9,2,0,0 ; .db 0,32,84,85,85,120,0,0 ; .db 0,0,0,125,65,0,0,0 ; ¡ .db 0,56,68,69,57,0,0,0 ; ¢ .db 0,60,64,33,125,0,0,0 ; £ .db 0,122,9,10,113,0,0,0 ; € .db 0,122,17,34,121,0,0,0 ; ¥ .db 0,8,85,85,85,94,0,0 ; Š .db 0,78,81,81,78,0,0,0 ; § .db 0,48,72,77,64,32,0,0 ; š .db 0,60,4,4,4,4,0,0 ; © .db 4,4,4,4,4,28,0,0 ; ª .db 0,23,8,76,106,80,0,0 ; « .db 0,23,8,52,42,120,0,0 ; ¬ .db 0,0,48,125,48,0,0,0 ; .db 0,8,20,0,8,20,0,0 ; ® .db 0,20,8,0,20,8,0,0 ; ¯ .db 68,17,68,17,68,17,0,0 ; ° .db 170,85,170,85,170,85,0,0 ; ± .db 187,238,187,238,187,238,0,0 ; ² .db 0,0,0,255,0,0,0,0 ; ³ .db 8,8,8,255,0,0,0,0 ; Ž .db 10,10,10,255,0,0,0,0 ; µ .db 8,255,0,255,0,0,0,0 ; ¶ .db 8,248,8,248,0,0,0,0 ; · .db 10,10,10,254,0,0,0,0 ; ž .db 10,251,0,255,0,0,0,0 ; ¹ .db 0,255,0,255,0,0,0,0 ; º .db 10,250,2,254,0,0,0,0 ; » .db 10,11,8,15,0,0,0,0 ; Œ .db 8,15,8,15,0,0,0,0 ; œ .db 10,10,10,15,0,0,0,0 ; Ÿ .db 8,8,8,248,0,0,0,0 ; ¿ .db 0,0,0,15,8,8,0,0 ; À .db 8,8,8,15,8,8,0,0 ; Á .db 8,8,8,248,8,8,0,0 ;  .db 0,0,0,255,8,8,0,0 ; à .db 8,8,8,8,8,8,0,0 ; Ä .db 8,8,8,255,8,8,0,0 ; Å .db 0,0,0,255,10,10,0,0 ; Æ .db 0,255,0,255,8,8,0,0 ; Ç .db 0,15,8,11,10,10,0,0 ; È .db 0,254,2,250,10,10,0,0 ; É .db 10,11,8,11,10,10,0,0 ; Ê .db 10,250,2,250,10,10,0,0 ; Ë .db 0,255,0,251,10,10,0,0 ; Ì .db 10,10,10,10,10,10,0,0 ; Í .db 10,251,0,251,10,10,0,0 ; Î .db 10,10,10,11,10,10,0,0 ; Ï .db 8,15,8,15,8,8,0,0 ; Ð .db 10,10,10,250,10,10,0,0 ; Ñ .db 8,248,8,248,8,8,0,0 ; Ò .db 0,15,8,15,8,8,0,0 ; Ó .db 0,0,0,15,10,10,0,0 ; Ô .db 0,0,0,254,10,10,0,0 ; Õ .db 0,248,8,248,8,8,0,0 ; Ö .db 8,255,0,255,8,8,0,0 ; × .db 10,10,10,251,10,10,0,0 ; Ø .db 8,8,8,15,0,0,0,0 ; Ù .db 0,0,0,248,8,8,0,0 ; Ú .db 255,255,255,255,255,255,0,0 ; Û .db 240,240,240,240,240,240,0,0 ; Ü .db 255,255,255,0,0,0,0,0 ; Ý .db 0,0,0,255,255,255,0,0 ; Þ .db 15,15,15,15,15,15,0,0 ; ß .db 0,24,36,36,24,36,0,0 ; à .db 0,254,74,74,52,0,0,0 ; á .db 0,127,1,1,3,0,0,0 ; â .db 0,2,126,2,126,2,0,0 ; ã .db 0,99,85,73,99,0,0,0 ; ä .db 0,24,36,36,28,4,0,0 ; å .db 0,252,32,32,28,0,0,0 ; æ .db 0,8,4,120,4,0,0,0 ; ç .db 0,8,85,119,85,8,0,0 ; è .db 0,62,73,73,62,0,0,0 ; é .db 0,76,114,2,114,76,0,0 ; ê .db 0,34,85,89,48,0,0,0 ; ë .db 0,24,36,24,36,24,0,0 ; ì .db 0,24,36,126,36,24,0,0 ; í .db 0,28,42,42,42,0,0,0 ; î .db 0,60,2,2,60,0,0,0 ; ï .db 0,42,42,42,42,0,0,0 ; ð .db 0,0,36,46,36,0,0,0 ; ñ .db 0,81,74,74,68,0,0,0 ; ò .db 0,68,74,74,81,0,0,0 ; ó .db 0,0,0,252,2,4,0,0 ; ô .db 0,32,64,63,0,0,0,0 ; õ .db 0,8,8,42,8,8,0,0 ; ö .db 0,36,18,36,18,0,0,0 ; ÷ .db 0,6,9,9,6,0,0,0 ; ø .db 0,0,24,24,0,0,0,0 ; ù .db 0,0,8,0,0,0,0,0 ; ú .db 0,48,64,62,2,2,0,0 ; û .db 0,1,14,1,14,0,0,0 ; ü .db 0,9,13,10,0,0,0,0 ; ý .db 0,60,60,60,60,0,0,0 ; þ $end asm |
Powyższy kod to zawartość pliku definicji kroju czcionki. Na wstępie można wywalić wszystko po znaku o kodzie 126 albo i wcześniej gdy nie jest planowane używanie znaków innych oprócz standardowych. Jeżeli ktoś będzie chciał modyfikować zawartość pliku definicji czcionki to trzeba wiedzieć, że bardzo istotne są linie o numerach 1 oraz 3. Linia pierwsza to etykieta / nazwa fonta przywoływana później w kodzie instrukcją SETFONT, a linia 3 zawiera dane definiujące parametry liter. W tym przykładzie mamy do czynienia z danymi:
1 |
.db 1,8,8,2 |
gdzie:
• pierwsza cyfra – 1 określa wysokość czcionek w pełnych bajtach,
• druga cyfra – 8 określa szerokość czcionki w pikselach
• trzecia cyfra – 8 rozmiar bloku czcionki
• czwarta cyfra – 2 definiuje odstęp między literami, w pikselach
W tym momencie powiem że, moją uwagę przyciągnęły znikome różnice w zawartości plików z definicją czcionek font8x8TT.font i font8x8.font. Gdzie pierwszy ma zdefiniowany odstęp między literami jako 0 a drugi jako 2. W związku z tym zacząłem eksperymentować z tym parametrem. Oto wynik :
Odstępy między znakami w prezentacji fontów zdefiniowane są na 1, 2, 3, i 4 piksele. Na początku każdej linii widać ikonki, które wykonałem, nie są one istotne dla tej prezentacji. Ciekawym zjawiskiem natomiast jest jaśniejsze świecenie ikonek, w liniach gdzie nie ma napisów. Zaobserwować to można na pierwszej fotce z prezentacją małych liter.
Dla dociekliwych cyfra 0 jako ostatni parametr definiuje odstęp, na połowę szerokości czcionki. Zjada to zasadniczo dużo miejsca, zawężając liczbę znaków jaką możemy zmieścić w jednej linii małego wyświetlacza. Przy małej czcionce odstęp zdefiniowany na 1 piksel to w moim odczuciu zbyt mało i pogarsza czytelność, ale napis w takim przypadku może być zdecydowanie dłuższy. Na witrynie MSC przeczytamy opis tego ostatniego parametru, który ma się nijak do moich obserwacji, bo znajduje zastosowanie do definicji czcionek nie będących typem TT (true type):
The third line contains 4 bytes: 1 (height in bytes of the font) , 8 (width in pixels of the font), 8 (block size of the font) and a 0 which was not used before the 'truetype’ support, but used for aligning the data in memory. This because AVR object code is a word long.
This last position is 0 by default. Except for 'TrueType’ fonts. In BASCOM a TrueType font is a font where every character can have it’s own width. The letter 'i’ for example takes less space then the letter 'w’. The EADOG128 library demonstrates the TrueType option.
In order to display TT, the code need to determine the space at the left and right of the character. This space is then skipped and a fixed space is used between the characters. You can replace the 0 by the width you want to use. The value 2 seems a good one for small fonts.
Pozostałe linie w pliku definicji czcionki to linie danych, określające znaki wyświetlane na wyświetlaczu, mające swoje odpowiedniki według kodów ASCII.
Teraz może przedstawię krótki przykład zastosowania biblioteki do obsługi wyświetlacza oraz małe czary mary z plikiem definicji czcionki:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
'testy kaktusa z wyświetlaczem G-LCD 'A.D. 2016-01-30 $regfile = "m328pdef.dat" $hwstack = 32 $swstack = 32 $framesize = 32 $crystal = 8000000 Config Scl = Portc.5 ' used i2c pins Config Sda = Portc.4 Config Twi = 400000 ' i2c speed I2cinit $lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI $lib "glcdSSD1306-I2C.lib" ' override the default lib with this special one Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306" Cls 'Setfont Font8x8tt ' select font 'Setfont Font8x8 'Setfont Font16x16 Do ' Setfont Font16x16tt1 ' Lcdat 1 , 17 , " kaktus" ' Setfont Font16x16 ' Lcdat 5 , 17 , " kaktus " , 1 ' Setfont Font16x16tt ' Lcdat 3 , 17 , " kaktus" ' Setfont Font16x16tt3 ' Lcdat 7 , 17 , " kaktus" Setfont Test8x8 Lcdat 1 , 17 , " $#$&'% " , 1 ' Setfont Font8x8tt Lcdat 2 , 17 , " $#$&'% " , 1 ' Setfont Font8x8tt3 Lcdat 3 , 17 , " $#$&'% " , 1 ' Setfont Font8x8 Lcdat 4 , 17 , " $#$&'% " , 1 Wait 3 Showpic 0 , 0 , Twk '112 , 0 , Twk ' Wait 3 Showpic 0 , 16 , Tk '112 , 16 , Tk ' Wait 3 Showpic 0 , 32 , Rh '112 , 32 , Rh ' Wait 3 Showpic 0 , 48 , Tp '112 , 48 , Tp Wait 5 Showpic 0 , 0 , Logo Wait 5 Cls Loop End '$include "font8x8TT.font" ' this is a true type font with variable spacing '$include "font8x8TT1.font" ' this is a true type font with variable spacing '$include "font8x8TT3.font" ' this is a true type font with variable spacing '$include "font8x8.font" $include "project6x8.font" '$include "font16x16.font" '$include "font16x16TT.font" ' this is a true type font with variable spacing '$include "font16x16TT1.font" ' this is a true type font with variable spacing '$include "font16x16TT3.font" ' this is a true type font with variable spacing 'Plaatje: ' $bgf "ks108.bgf" Tp: $bgf "T_pokoj_16x16.bgf" Tk: $bgf "T_kominek_16x16.bgf" Twk: $bgf "T_w_kominku_16x16.bgf" Rh: $bgf "Rh_16x16.bgf" Logo: $bgf "logo_kak.bgf" |
Ten kod to brudnopis zawierający dużo zakomentowanych linii, po usunięciu których zostanie parę linijek obsługujących wyświetlacz. Oczywiście jeśli ktoś zechce go przetestować otrzyma u siebie wynik daleki od oczekiwanego, gdyż na wyświetlaczu ukaże mu się napis $#$&’% a nie kaktus jak na fotkach. Definicje i wywołanie ikonek oczywiście trzeba usunąć bądź stworzyć sobie pliki graficzne o takich nazwach. To dlatego, iż jak wcześniej zaznaczyłem w celu zmniejszenia objętości pliku definicji czcionki, jego zawartość poważnie zmodyfikowałem. Te rozwiązanie przedstawię w osobnym opisie bo uważam że warto 😉
Kod jest modyfikacją przykładu załączonego do środowiska IDE. I po zastosowaniu wszystkich dostępnych sztuczek i wyświetlaniu grafik zajmuje 2292 bajtów pamięci flash jednak nadaje się do wyświetlania jedynie sześciu znaków – liter.
A.D. 2016-02-12 Xmega i biblioteka glcdSSD1306-I2C.lib
Jak informuje kolega BARTek, obsługa tego wyświetlacza została naprawiona, w oprogramowaniu występował bug związany z komunikacją I2C. Na chwilę obecną powstały nowy driver i nowa biblioteke Xmega.lib do przetestowania przez BARTka. Pewno trzeba poczekać na oficjalną informację, i udostępnienie plików przez firmę MCS.
A.D. 2016-03-31 Otrzymałem nowy wyświetlacz. Tym razem biały. Ten wydaje się bardziej czytelny, w porównaniu do poprzedniego egzemplarza. Niebieski za to bardziej cieszy oko 😉
A.D. 2017-07-20 Po konsultacjach kolegi Michała mamy nową porcję wiedzy:
Tak wiem, jestem zarejestrowany i zalogowany na forum.
Chyba w takim razie coś nie tak ze mną 🙂Gdy wejdę tutaj: https://wiki.mcselec.com/bavr/Category:LCD_Driverswybieram wyświetlacz SSD1306 – wyświetla mi się strona:jednak na tej stronie są jedynie 2 zdjęcia i link do forum, nie ma tam nic więcej – przynajmniej ja tam nie widzę nic więcej.widzę kilka załączników, przewertowałem wszystkie posty na 4 stronach.Załączniki to głównie programy do konwersji grafiki lub generowania fontów.Na stronie nr.3 – ostatni post na samym dole, napisany przez użytkownika „Mrshilov” jest załącznik w postaci biblioteki o nazwie: SSD1306 buf.zip tyle że ta biblioteka wprawdzie ma obsługę lini i kół, lecz powoduje migotanie wyświetlacza – nie jest to chyba biblioteka o której piszesz w swoim artykule?
Trochę powalczyłem i osiągnąłem pewien „sukces” 🙂Wprawdzie nie udało mi się uzyskać zadowalającego efektu na bibliotece SSD1306 buf.zip pomimo wielu starań wyświetlacz nadal miga – prawdopodobnie coś jest nie tak już w momencie inicjalizacji wyświetlacza, ponieważ gdy już coś na nim wyświetlę i odepnę linie SDA i SCL wyświetlacz nadal wyświetla ostatni obraz i nadal miga – nie jest to więc wina odświeżania zawartości. Kombinowałem również z I2C sprzętowym i programowym, z różnymi prędkościami I2C ale nadal nic.Dodatkowo okazało się że mój wyświetlacz 1,3″ ma kontrolet SH1106 a nie SD1306, są one wprawdzie bliźniacze ale nie każda biblioteka sobie z nim radzi, objawia się to tym że wyświetlacz nie wyświetla nic, albo wyświetla obraz przesunięty o kilka pikseli. Biblioteka SSD1306 buf.zip nie radziła sobie z nim zupełnie, wyświetlacz cały czas był czarny.Pogrzebałem trochę w sieci i znalazłem ten temat na niemieckim forum: https://bascomforum.de/index.php?thread/390-ssd1306-oled-display/ są tam linki do bibliotek a właściwie do całych paczek z przykładami i bibliotekami.Jest tam między innymi biblioteka do SH1106, ale najlepsza jest paczka: SSD1306 128×64-I2C.zip obsługuje ona zarówno SSD1306 jak i SH1106, obsługuje wszystkie polecenia rysowania kół, linii i prostokątów, działa rewelacyjnie z oboma typami wyświetlaczy (nic nie miga, wszystko działa poprawnie), nie ma niestety obsługi kontrastu tak jak SSD1306 buf.zip ale to nie jest mi potrzebne.Jedyna wada to nie jest to biblioteka, a plik przykładu w którym wszystko jest robione na subach, ale moje założenia spełnia w 100% i jestem tym przykładem zachwycony.
nota katalogowa układu LDO
XC6206P332MR.pdf (1556 pobrań)
nota katalogowa kontrolera LCD
SSD1306.pdf (1587 pobrań)
Świetnie. Ja mam takie wyświetlacze po SPI i nie udało mi się wyświetlić grafiki BGF. Czy mógł bym liczyć na jakąś pomoc? Dodam że napisy z czcionkami font wyświetla bez problemu, natomiast jak dodam showpic to kompilator wyrzuca mi błąd 5.
Witaj Marku.
Zaglądnąłem szybciorem tutaj ale nic nie mi nie przychodzi do głowy w tej chwili. Ogólnie mówiąc, każdy błąd zgłaszany przez kompilator, w 99% przypadków spowodowany jest błędami programisty.
Najtrudniejsza i przynoszącą najwięcej satysfakcji z kolei jest sztuka – umiejętność znajdowania swoich błędów. W ten sposób można się bardzo wiele nauczyć. Wiem z autopsji 😀
Powiedz jakbym mógł pomóc w rozwiązaniu Twojego dylematu? Zaznaczam, że nie posiadam wersji tego wyświetlacza z interfejsem SPI.
Witam.
Jest już dostępna biblioteka obsługująca komendy box, pset, line itp jak i rowniez kontrast na forum mcselec.
Dobra wiadomość nigdy nie będzie złą ;-D
Dziękuję za newsa.
Witam.
Nie mogę znaleźć tej biblioteki z obsługą np. pset. Możecie dać namiary?
Z góry dziękuję.
Proszę bardzo: Wiki MCS Category:LCD Drivers
i jeszcze jeden odnośnik link bezpośredni do forum
By cokolwiek pobrać trzeba być zalogowanym na forum.
Ahaaaa. Dziękuję uprzejmie.
Problem w tym, że mam demo a oni chcą dane rejestracji produktu.