(04-05-2019, 15:38)kaczakat napisał(a): Komunikacja prze I2C nie jest demonem prędkości.Wysłanie 1kB po I2C, nawet przy 100kHz to ok 92ms. Czas transmisji nie będzie problemem gdy użyje się przerwań. Wtedy obciążenie CPU to co najwyżej kilka procent. RAM'u na bufor wystarczy.
(04-05-2019, 15:38)kaczakat napisał(a): Sprawdź czy działa na 100kHz i ewentualnie spróbuj ustawić na 400kHz.Standardowo biblioteki obsługujące LCD, na czas transmisji do wyświetlacza, ustawiają 400kHz. Po transmisji przywracają poprzednio ustawianą prędkość.
(04-05-2019, 15:38)kaczakat napisał(a): I2C może też chodzić w UNO ok i na 800kHz, trudniej odbierać wtedy dane i nie każdy slave to ogarnie.
Te 800kHz to sobie darujmy na AVR, bo to porada w stylu "AVR można zasilić z 7V i nic się nie stanie). Ponadto, w dokumentacji SSD1306 wyraźnie napisano, min czas cyklu sygnału SCL to 2,5us. Dawno skończyłem szkołę i może się mylę, ale mnie wychodzi 400kHz.
Przez takie "porady" przekraczania dwukrotnie dopuszczalnych parametrów, projekty na Arduino działają u autora, na stole. Próba powielenia takiego "projektu" bardzo często kończy się niepowodzeniem!
W tym przypadku proponowane jest dwukrotne przekroczenie dopuszczalnej prędkości dla AVR (w projekcie widać, że używany jest sprzętowy I2C) jak i LCD. Może do kompletu zaproponować zasilanie uC napięciem 10V i taktowanie zegarem 32MHz?
Jakość Arduino jest taka sama jak jakość (właściwie jej brak) jego użytkowników.