Принесли мне какой-то для одного из проектов oled-дисплей размером 128×64 пикселя с интерфейсом I2C. Раньше с такими дисплеями я делал много проектов и проблем не возникало. Но в этот раз на экране была только рябь и чёрная полоса наверху, в которой периодически проскакивали какие-то символы.
Сначала я проверил правильность подключения дисплея и не нашёл ошибок.
Следующим шагом залил в ардуинку скетч “I2C-сканер” . Сканер показал наличие устройства с адресом 0x3C – вроде всё как обычно для этих дисплеев.
Дальше я решил попробовать другую библиотеку для экранов ssd1306 – результат был примерно таким же. Попробовал запустить дисплей вообще без библиотеки, отправляя команды по I2C. Результат примерно тот же – белый фон с черными точками.
Я уже начал подумывать, что мой дисплей сломан, но случайно наткнулся на одном англоязычном ресурсе на похожую картинку.
Как оказалось, наши китайские братья делают дисплей с контроллером SH1106, который как брат-близнец похож на экран с контроллером SSD1306.
В менеджере библиотек программы Arduino IDE я ввёл в строку поиска “SH1106” и выбрал из списка библиотеку Adafruit SH1106. Установил библиотеку, залил скетч с примером для экрана I2C 128×64 и получил на экране различные анимированные картинки.
Надеюсь, что эта статья кому-то поможет в аналогичной ситуации. Если остались вопросы – задавайте в комментариях.