Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 10:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 17 sty 2023, o 19:25 
Offline
Nowy

Dołączył(a): 19 paź 2022
Posty: 13
Pomógł: 0

Drodzy forumowicze, zabrałem się za temat wyświetlaczy LCD OLED SPI, I2C. Przestudiowałem poradniki Mirka w tym temacie i "napisałem" :lol: a dokładniej skopiowałem biblotekę (tą uniwersalną na SPI i I2C), którą omawia Mirek w swoich poradnikach. Podłączyłem swojego OLED-a 1.3' I2C i klapa.... Po czasie zorientowałem się że chodzi on na SH1106 :cry: Jak podpowiedział mi wujek googl te sterowniki sa prawie identyczne a różnią sie podobno tylko wielkościa pamięci RAM i SH1106 nie obsługuje scrollingu. Zwiększyłem więc bufor na 1056 ((132x64)/8) i dalej klapa. Porównywałem też stałe z bibliotek Adafruit SSD1306 i Adafruit Sh110x i są one takie same podobnie jak funkcję Init i Display. Rozwiązał ktoś może tą zagwozdkę ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2023, o 19:41 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Masz jakis najprostszy analizator logiczny? Kosztuje niewiele a dużo by Ci pomógł - zobaczyłbyś co się dzieje na liniach komunikacyjnych. Może zły adres wybrałeś? Możesz też na szybko odpalić jakiś przykład na Arduino, żeby zobaczyć czy wyświetlacz w ogóle ruszy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2023, o 19:47 
Offline
Nowy

Dołączył(a): 19 paź 2022
Posty: 13
Pomógł: 0

Dzięki micky za odpowiedż, analizatora oczywiście nie posiadam i nawet na to nie wpadłem, OLED-a testowałem pod Arduino i działa, adresy są dwa na reversie 0x78,0x7A i tez testowałem...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2023, o 02:52 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

A pod jakim adresem Ci dziala pod Arduino?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2023, o 14:55 
Offline
Nowy

Dołączył(a): 19 paź 2022
Posty: 13
Pomógł: 0

hmmm... a jak to sprawdzić ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2023, o 15:15 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3187
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 89

W Arduino masz skrypt Scanner I2C. Wgraj go i poda ci adresy podłączonych urządzeń.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2023, o 16:30 
Offline
Nowy

Dołączył(a): 19 paź 2022
Posty: 13
Pomógł: 0

no faktycznie jest inny, Arduino odczytało adres 0x3C :shock:

i też klapa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2023, o 17:11 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

To jak mogl ci chodzić na Arduino skoro miałeś inny adres? Na bibliotece Mirka pomnóż go przez 2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2023, o 18:01 
Offline
Nowy

Dołączył(a): 19 paź 2022
Posty: 13
Pomógł: 0

nie rozumiem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2023, o 18:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Adres na magistrali I2C jest zawarty w pierwszym wysyłanym bajcie, ale tak na prawdę adres to 7 starszych bitów, bo najmłodszy bit jest bitem zapisu/odczytu. Arduinowcy przjęli sobie ideę, w której adres jest przesunięty w prawo o jeden tak by usunąć ten bit zapisu, więc jak podajesz do funkcji adres to właśnie w takiej formie, a funkcja na powrót przesuwa o jeden w lewo i dokleja bit zapisu/odczytu i dopiero wysyła.
Natomiast szkoła Mirka ma podejście takie, że adres jest podawany w oryginalnej formie z zerowym bitem zapisu/odczytu, przez co w funkcji obsługującej komunikację łatwiej operować na nim bo wystarczy dodać 1 lub nie w zależności czy odczyt czy zapis, a arduinowcy muszą jeszcze przesuwać w lewo nie wiadomo po co :lol:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sty 2023, o 09:12 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 05 lut 2015
Posty: 24
Pomógł: 1

Chyba nie ten trop. Zostaw na razie adresy w spokoju i skup się na samym sterowniku. Jeżeli używasz kodu, który został napisany dla OLEDA SSD1306, to w najlepszym przypadku wyświetlą Ci się jakieś śmieci na ekranie.
Sterownik SH1106 działa ze stronnicowaniem pamięci i trzeba to uwzględnić w swoim programie.

Jeżeli ekran wyświetlacza pozostaje czarny po wgraniu softu może to oznaczać, że inicjalizacja wyświetlacza nie była poprawna.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sty 2023, o 12:06 
Offline
Nowy

Dołączył(a): 19 paź 2022
Posty: 13
Pomógł: 0

chłopaki dzięki wielkie za pomoc i odpowiedzi w Niedzielę znowu zajmę się tematem bo teraz brak czasu chwilowo, nie chcę sie wymądrzać ale też skłaniał bym się bardziej do tezy roger-a że chyba trzeba pogrzebać w inicjalizacji wyświeltacza, co nie oznacza że xentis nie ma racji. Jest to dla mnie jakieś wyzwanie i będę drążył temat (mam nadzieję z Waszą pomocą) bo tak się uczymy...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lut 2023, o 22:07 
Offline
Nowy

Dołączył(a): 19 paź 2022
Posty: 13
Pomógł: 0

no trochę mi zeszło ale to tylko brak czasu, roger miał rację błąd tkwił w inicjalizacji wyświetlacza zapomniałem napisać kilka linii teraz ożył ale na wyświetlaczu mam same paski, a co najlepsze śmiga nie na adresie które wykryło Arduino (0x3C) tylko na (0x78) jak nadrukowano w chinach. Teraz jak zrobic stronicowanie pamięci?, -oto jest pytanie

ObrazekObrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lut 2023, o 23:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

macieju-1974 napisał(a):
nie na adresie które wykryło Arduino (0x3C) tylko na (0x78) jak nadrukowano w chinach
Ale to jest ten sam adres. Wytłumaczył to xentis:
Cytuj:
Adres na magistrali I2C jest zawarty w pierwszym wysyłanym bajcie, ale tak na prawdę adres to 7 starszych bitów, bo najmłodszy bit jest bitem zapisu/odczytu. Arduinowcy przjęli sobie ideę, w której adres jest przesunięty w prawo o jeden tak by usunąć ten bit zapisu, więc jak podajesz do funkcji adres to właśnie w takiej formie, a funkcja na powrót przesuwa o jeden w lewo i dokleja bit zapisu/odczytu i dopiero wysyła.
Natomiast szkoła Mirka ma podejście takie, że adres jest podawany w oryginalnej formie z zerowym bitem zapisu/odczytu, przez co w funkcji obsługującej komunikację łatwiej operować na nim bo wystarczy dodać 1 lub nie w zależności czy odczyt czy zapis, a arduinowcy muszą jeszcze przesuwać w lewo nie wiadomo po co :lol:

Sprawdź sam. Wpisz 0x78 w kalkulator programisty (np w windows) i przesuń o jeden bit w prawo. Dostaniesz... 0x3c



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO