Fórum témák
» Több friss téma |
Fórum » SSD1306 OLED I2C
Sziasztok!
Van egy ESP8266-ra direktbe kötött SSD1306 IIC OLED kijelző. Arduino GUI-ban programozva. (DHT22-vel készítettem hő és páratartalom kijelzőt) A kijelző szépen működött napokon át, majd tegnap gondolt egyet - működés alatt - nem jelezte ki minden második sort! (128x64-es kijelző) Találkoztatok ilyennel? (Nem az Adafruit OLED library-t használom, hanem Daniel Eichhorn félét) Default inicializálás. Milyen infóra van még szükség? Köszönöm, Roland
Szia!
Fizikai sérülés nincs a kijelző üveglapján? Én jártam úgy, hogy az egyik alsó sarka megrepedt - szemmel alig észrevehetően - és utána mutatott hasonló tüneteket. (Az egyik oldalon mennek a páros, a másikon a páratlan sorokat vezérlő felgőzölt vezetősávok) A hozzászólás módosítva: Dec 19, 2016
Szia!
Nem látom... Van olyasmi "teszt" jellegű dolog, ahol minden sort kijelzek? Valami OFFSET beállításon gondolkodom. Ha itt se láthatóak a sorok, akkor hw error. Köszi, Roland
Szia!
Sajnos ebben nem tudok segíteni, én saját OLED vezérlőt írtam, Arduino-val nem barátkoztam eddig. Egyébként a "nem jelezte ki minden második sort" pixelben kell érteni, vagy karaktereket tartalmazó sorokban? (1 karakter 8 pixel magas)
Pixelben kell érteni. Délután felteszek egy képet erről.
Próbáltam mindenféle iniciálizálást próbálni, de a hiányzó pixelsorok megvannak
Ha adsz neki inverz kijelzés parancsot, akkor is ugyan azok a sorok hiányoznak?
Biztos van olyan kész rutin ami az egész képet 0xff-ekkel beszínezi.
Ha nincs, akkor csinálj egy képet, mármint át kell konvertálni "LCDAssistant" programmal a képet és a megfelelő rutinnal kiíratni.
Hali, szerintem is hardveres hiba lesz, próbáld megnyomkodni óvatosan.
Nyomkodtam, ütögettem finoman, semmi változás.
Ha virtuálisan kiveszed az üres sorokat, akkor egy fél, de jó képet kapsz, vagy pedig fél, de összenyomott képet?
Magyarán a kijelzőn megjelenő pl. karakter dupla magas, vagy normál, de minden második sor hiányzik?
Hát a képek alapján nagyon hardver hiba
Fél, összenyomott képet kapok, erről nincs fotó.
Nem feltétlen HW hiba, persze ezt csak próbálgatással, vagy a program alapos áttanulmányozásával lehet eldönte.
Ebben tudsz tippeket adni?
Azon lepődtem meg, hogy előtte napokig jól ment, majd egyik pillanatról a másikra ez lett. Nagy naívan, ha valami sw okozhatta, egy reset (tápelvétel) megoldotta volna, de nem...
Azon gondolkodom, hogy lehet a pixel oszlopszám nem 128, hanem pl. 256? Azaz minden
második sor "el van tolva"? Ám akkor eddig miért nem volt? Valami túlcsordult, valami beállítás? De újraindulásra miért nem "lett jó", ha ez van?
Tisztelt fórumozók!
Én is vettem egy SSD1306 IIC OLED kijelzőt 128x64 felbontással. Amikor képet akartam feltenni, az alsó fele mindég lemeredt. Készítettem vonalakat tesztre és láss csodát. A függőleges felbontás csak 32 lett. Ez hogyan lehetséges? A kivitelezése megegyezik az eredetivel, tehát nem a 128x32 méret. Esetleg valakinek ötlete? Előre is megköszönöm.
"lemeredt" az mit jelent? A konfigurációt lefuttatva másik kijelző jól működik?
Bocs még egy kérdés: a felső fele nem volt nagyon fényes? A hozzászólás módosítva: Feb 9, 2018
Bocsi! Helyesen "lemaradt", mivel csak minden 2. sor működik. A neten utána néztem és ez egy valós probléma a "noname" kijelzőknél, amire van szoftveres megoldás, de nekem nem jöttek be. Sajnos másik kijelzőm nincs az ellenőrzéshez. Köszönöm, hogy egyáltalán reagáltál a kérdésemre, mivel ez a fórum már több mint egy éve nem volt aktív.
Sokat nem foglalkoztam a kijelzővel, de a kulcsszó amit keresel, az az interlaced.
Tud interlaced üzemmódot? (szerintem nem..vagy csak mindig átugrottam) Nekem eddig mind működött elsőre, jó lenne játszani egy ilyen "hibással". Ha majd meg tudod nézni az inic folyamatot, akkor kukkold már meg, hogy a 0xA8 és a 0xDA parancsra mi megy ki.
Nincs már ilyen kijelzőm, az egereknek adtam házimozi gyanánt.
Már nagyon nem emlékszem, mi volt a megoldás de biztos, hogy ebben az irányban kellett elindulni.
Igazad lett! Beírtam a Google-be "interlaced arduino" és már lett megoldás is egy, mellyel minden sor látható. Kitűnő a kijelző. Mellékelem is az ino-t. Csak egy baja van, elviszi az Uno dinamikus memóriája 80%-át. Ezt írja ki "Kevés elérhető memória, stabilitási probléma fordulhat elő." Biztos van más megoldás is.
#include <IIC_without_ACK.h> #include "oledfont.c" //codetab #define OLED_SDA A4 #define OLED_SCL A5 IIC_without_ACK lucky(OLED_SDA, OLED_SCL); //A4 -- sda, A5 -- scl void setup() { lucky.Initial(); delay(10); } void loop() { lucky.Fill_Screen(0xff); delay(2000); lucky.Fill_Screen(0xf0); delay(2000); lucky.Fill_Screen(0x00); lucky.Char_F6x8(0,0,"HelTec AutoMation"); lucky.Char_F6x8(0,2,"cn.heltec@gmail.com"); lucky.Char_F6x8(0,4,"Made in china"); delay(5000); lucky.Fill_Screen(0x00); lucky.Draw_BMP(0,0,128,8,BMP1); delay(5000); }
Sziasztok!
Vettem egy ilyen OLED kijelzőt: SSD1306 OLED I2C. Link CO2-kijelzőt akarok építeni arduino Pro Micro-val. Ez alapján: link Összeállítottam próbapadon, de nem világít az OLED, így nem tudom, hogy az OLED nem hibás-e? Egyáltalán kell-e világítania, ha a Vin-en és GND-n megvan 4,8 V, vagy csak akkor ad életjelet, ha a Pro Microvezérli? Nagyon kezdő vagyok a témában
Bekapcsoláskor nem mutat semmit, kell neki a vezérlés, hogy melyik pixeleket kapcsolja be.
Csak azután indul be, ha már megtörtént az inicializálása. A PIC kezdőknek topikba feltettem tavaly valamikor azt a kódot, ami nekem működik pic18f25j50 mikrovezérlőn xc8 fordítóval. Ha arduinoval akarod meghajtani, akkor az adafruit lib-et nézd meg és egészítsd ki a VCC_PUMP bekapcsolása paranccsal (csak ezt hagyták ki belőle), utána be fog indulni.
Köszönöm a segítséget.
Most jobban megnézve a kapott Pro micro szerintem 3,3 V-os (J1 jumper nyitott), pedig 5 V-ost rendeltem. Nem ez lehet a baj, hogy nem illeszkedik az OLED-del?
Én gombelemről (cr2032 - 3V) használom és működik. De már az előbb is leírtam, hogy a VCC_PUMP beindítása is kell (0x8D utasítás), különben nem fog menni. Szórakoztam én is vele eleget, mikor végre össze-vissza pontok megjelentek nagy volt a boldogság, addig is a Logic segített nézni az i2c kommunikációt, hogy mi megy ki ténylegesen a vonalon.
Az én inicializáló kódom így néz ki, rendben működik (pic18f25j50 mikrovezérlőn):
A hozzászólás módosítva: Feb 23, 2018
Idézet: „VCC_PUMP beindítása is kell (0x8D utasítás)” Ez már benne van az Adafruit1306-ban.cpp-ben és Adafruit1306-ban.h-ban is.
Amikor én néztem a githubon utoljára, akkor még nem volt. Ajánlom figyelmedbe, hogy az adatlapot el lehet érni a neten és elég értelmesen le van benne írva minden utasítás. A displayallon utasítás minden pixelt bekapcsol, nekem már azért van kikommentelve, mert már tudom, hogy működik a bekapcsolás, viszont tesztelésre jó volt.
De nem tudom te mit küldesz ki az i2c vonalain, egyáltalán az adatvonalak (SCL, SDA) fel vannak-e húzva egy-egy ellenálláson keresztül tápvonalra? Van véletlenül logikai analizátorod (fillérekért lehet kapni alin), amivel tudod nézni mi történik az adatvonalaidon? Az ilyen problémákon rengeteget tud ám segíteni, ha meg tudod nézni mi történik!
Kösz, hogy ennyit segítesz!
Közben olvasva a doksikat a neten találtam olyat, hogy az OLED-nek be kell állítani címet: ez az eredeti: display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x64) átjavítottam, mert az én OLED-em hátoldalán ez van: display.begin(SSD1306_SWITCHCAPVCC, 0x78); // initialize with the I2C addr 0x3C (for the 128x64) de így sem ment. Hogy kizárjam a Pro micro hibáját rátöltöttem egy led villogtatót, az tökéletesen működik (hál Isten). Az adatvonalak fel vannak húzva a tápvonalra egy-egy 5,1k-os ellenállásokon át. (Az eredeti kapcsolás még egy 47n-os kondit is emleget, de azt még nem raktam be, remélem nem az a baj, valakinek anélkül is működött. Merre tovább? displayall -t még megnézem. A hozzászólás módosítva: Feb 23, 2018
Megint megkérdezem. Van logikai analizátorod, amivel a kommunikációt tudod figyelni? Ha nincs, akkor sincs veszve semmi, csak trükközni kell kicsit.
Lehet, hogy nem beszélget a két eszközöd a rossz címzés miatt. Én simán írnék egy annyi programot, ami megpróbál kommunikálni minden létező címen egymás után (egy ciklus), s ha valamelyiken van válasz, akkor ott megáll. Mindezt persze úgy, hogy közben soros portra írnám a címeket kb. így 0x3A - NACK, 0x3B - NACK, 0x3C - ACK, ezzel a módszerrel legalább a címét meg tudnád találni. Egyébként az 5.1k kicsit sok is lehet, én 2k2-vel szoktam ezt megoldani. Próbáld meg lecserélni, előfordulhat, hogy emiatt nem megy a kommunikáció. Ha pedig jobban megnézed a panelt, akkor láthatod rajta azt is, hogy melyik átkötést kellene máshova forrasztanod, hogy címet válts |
Bejelentkezés
Hirdetés |