LCD OLED 1306 0.96

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
Henryk
Posty: 357
Rejestracja: 22 sty 2018, 17:20

LCD OLED 1306 0.96

Post autor: Henryk » 14 gru 2025, 13:32

Witam po krótkiej przerwie .
Miało być łatwo i przyjemnie a jest kłopot z lcd oled . Wgrałem do procka prosty przykład z forum MCS zmieniając początkowo tylko procesor .
  1. '-------------------------------------------------------------------------------
  2. '                       SSD1306-I2C.BAS
  3. '                     (c) MCS Electronics 1995-2015
  4. '          Sample to demo the 128x64 I2C OLED display
  5. '
  6. '-------------------------------------------------------------------------------
  7. $regfile = "m8def.dat"
  8. $hwstack = 32
  9. $swstack = 32
  10. $framesize = 32
  11. $crystal = 8000000
  12. 'Config Clockdiv = 1                                         ' make sure the chip runs at 8 MHz
  13.  
  14. Config Scl = Portc.5                                        ' used i2c pins
  15. Config Sda = Portc.4
  16. 'Config Twi = 400000                                         ' i2c speed
  17. I2cinit
  18.  
  19. '$lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI
  20. $lib "glcdSSD1306-I2C.lib"                                  ' override the default lib with this special one
  21.  
  22. #if _build < 20784
  23.   Dim ___lcdrow As Byte , ___lcdcol As Byte                 ' dim these for older compiler versions
  24. #endif
  25.  
  26. Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
  27.  do
  28. Cls
  29. waitms 2000
  30. Setfont Font8x8tt                                           ' select font
  31. Lcdat 1 , 1 , "BASCOM-AVR"
  32. Lcdat 2 , 10 , "1995-2015"
  33. Lcdat 8 , 5 , "MCS Electronics" , 1
  34. Waitms 3000
  35. Showpic 0 , 0 , Plaatje
  36. waitms 5000
  37. loop
  38.  
  39. End
  40.  
  41.  
  42. $include "font8x8TT.font"                                   ' this is a true type font with variable spacing
  43.  
  44.  
  45. Plaatje:
  46.    $bgf "ks108.bgf"                                         ' include the picture data
Okazało się że mój lcd nie ma ochoty na jakakolwiek aktywność jeśli biblioteka i2c_twi.lbx jest dołączona do kodu.
Nie potrafię określić czy trafił mi się bubel lcd czy mam do czynienia z jakimś konfliktem adresowym .
Mój lcd ma ustawiony adres 0x3C a przykłady jakie przeglądałem mają 0x78 .
Nie mam za bardzo pojęcia gdzie szukać błędu i jak to naprawić . Wyświetlacz startuje tylko po kilkukrotnym włączeniu i wyłączeniu zasilania i po kilkunastu sekundach się zawiesi , wyświetlacz bubel czy jakiś konflikt ? Henryk .
IMG_20251214_111320.jpg
IMG_20251214_123816.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Henryk
Posty: 357
Rejestracja: 22 sty 2018, 17:20

Re: LCD OLED 1306 0.96

Post autor: Henryk » 16 gru 2025, 16:56

Poradziłem sobie z problemem .
Wyświetlacz zawieszał się z powodu podłączonych rezystorów podciągających na liniach scl i sda , były zbędne bo lcd na płytce ma własne .
Po i ch odłączeniu wyświetlacz zaczął działać i nie musiałem razy kilka włączać zasilanie , wystarczyło raz i nacisnąć reset .
Dalej nie dawało mi to spokoju i drążyłem dalej problem dlaczego niby mam naciskać reset ?
Problem był z I2cinit , wstawiłem dwa opóźnienia 50 ms i problem znikł , teraz wyświetlacz startuje tak jak powinien .
  1. '-------------------------------------------------------------------------------
  2. '                       SSD1306-I2C.BAS
  3. '                     (c) MCS Electronics 1995-2015
  4. '          Sample to demo the 128x64 I2C OLED display
  5. '
  6. '-------------------------------------------------------------------------------
  7. $regfile = "m8def.dat"
  8. $hwstack = 32
  9. $swstack = 32
  10. $framesize = 32
  11. $crystal = 8000000
  12. Config Scl = Portc.5                                        ' used i2c pins
  13. Config Sda = Portc.4
  14. Config Twi = 400000
  15. waitms 50
  16.  I2cinit                                                    ' i2c speed
  17. waitms 50
  18. $lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI
  19. $lib "glcdSSD1306-I2C.lib"                                  ' override the default lib with this special one
  20.  
  21. Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
  22.  do
  23.   Cls
  24.  
  25.     Waitms 2000
  26.    Setfont Font8x8tt                                        ' select font
  27.      Lcdat 1 , 1 , "BASCOM-AVR"
  28.       Lcdat 2 , 10 , "1995-2015"
  29.      Lcdat 8 , 5 , "MCS Electronics" , 1
  30.    Waitms 3000
  31.   Showpic 0 , 0 , Plaatje
  32.  waitms 5000
  33. loop
  34.  
  35. End
  36.  
  37. $include "font8x8TT.font"                                   ' this is a true type font with variable spacing
  38.  
  39. Plaatje:
  40.    $bgf "ks108.bgf"                                         ' include the picture data
Pozdrawiam Henryk .
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD OLED 1306 0.96

Post autor: niveasoft » 16 gru 2025, 17:04

Przepraszam, że czasem odpisze z opóźnieniem, ale kombinacja adresu email na gmail i powiadomienia to sie kłóci.
Faktycznie wszystkie moduły teraz maja właczone podciąganie rezystorami a wystarczyłoby raz i jak masz moduł który ma też współpracować z prockiem 3V3 to one maja 3K3 a nie 4K7 i przy 5V to juz wiecej jak jeden robi problem dla procka który z siebie moze wydać 20mA na pin i 100mA na port.

Wystarczy moduł OLED z rezystorami 3K3 i RTC (typowe połaczenie) i juz sie prosimy o kłopoty.
Awatar użytkownika
Henryk
Posty: 357
Rejestracja: 22 sty 2018, 17:20

Re: LCD OLED 1306 0.96

Post autor: Henryk » 16 gru 2025, 17:15

Witam Panie Bartku .
Jeszcze jeden problem chodzi mi po głowie , dlaczego wyświetlacz wyświetla wysyłane teksty skoro ma ustawiony adres ?
Normalnie to powinienem poprzedzić co chcę wysłać jego adresem .
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD OLED 1306 0.96

Post autor: niveasoft » 16 gru 2025, 18:40

Bibloteka domyslna ma ustawiony adres na stałe (coś okoł &H78 albo cos około tego).
Jest alternatywna biblioteka stworzona przez uzytkownika forum MCS o nicku O-Family i tam masz zdefiniować jeden bajt dla adresu i potem zmieniać jego wartość jak chcesz cos wysłac do innego wyświetlacza.
ODPOWIEDZ