Elementarni vysvetleni - podivej se do te knihovny Adafruit_SSD1306 - pouziva wire->write pro vystup, zatimco ta knihovna SoftI2CMaster pro podobnou operaci pouziva i2c_write , takze Adafruit ti vesele jeda na originalnim HW (analogovem) Wire, zatimco novy softI2C proste lezi ladem a nic ho nepouziva.
Slozite reseni - bud prepis knihovnu Adafruit na pouzivani SoftI2C, nebo se podivej co dela (pripadne konzultuj datasheet SSD1306) a napis si vlastni knihovnu na praci s timto chipem (vyhoda - pochopis, co se ti tam vlastne deje a proc, nevyhoda - da to praci a budes se muset ledacos naucit)
Alternativni reseni - zkus googlit ruzne kombinace SSD1306 SoftI2C bit banging I2C a doufej, ze nekde narazis na knihovnu, ktera ti bude vyhovovat. (vyhoda - nemusis nic umet, nevyhoda - musis doufat, ze to uz nekdo napsal, ty na to narazis a pouzijes to nahodou zpusobem, ktery bude fungovat)
(Osobne bych pouzi SoftI2C, z Adafruit a datasheetu vytahnul zakladni prikazy a napsal si knihovnu svoji. S prislusnym HW (pro testovani) a trochou stesti bych to treba tak za tyden mel pouzitelne pro vlastni ucely. Varovani - mam tendenci na Arduino hledet spis jako na Atmega328P s nejakyma neprilis povedenyma knihovnama v zakladu pro prvni rozjezd, nez se to clovek nauci skutecne pouzivat)
0,96" OLED využití DI místo AI?
Re: 0,96" OLED využití DI místo AI?
Myslím si, že knihovna Adafruit_SSD1306 umožňuje do konstruktoru zadat ukazatel na objekt TwoWire, tedy například ukazatel na objekt SoftWire. Kód by vypadal asi takto:
Kód: Vybrat vše
#include <SoftWire.h>
#include <Adafruit_SSD1306.h>
SoftWire softwire(2,3);
Adafruit_SSD1306 display(128,64,&softwire);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.print("Ahoj svete");
display.display();
}
void loop() {
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host