Подключите OLED SSD1306 к Elegoo Uno R3

Я пытаюсь подключить экран OLED SSD1306 к моему Elegoo Uno R3 и отобразить что-то с помощью Arduino IDE. . Однако по какой-то причине на экране ничего не отображается.

Я подключил каждый контакт следующим образом:

  • VCC: 3,3 В
  • Земля: Земля
  • Материал загрузки: A5
  • ПДД: A4

Вы можете увидеть установку на следующих изображениях:

Затем я использую код из этого руководства, то есть < a href="https://raw.githubusercontent.com/RuiSantosdotme/Random-Nerd-Tutorials/master/Projects/OLED/oled_adafruit_demo.ino">этот код, чтобы проверить правильность настройки, но ничего появляется на экране. Мой вопрос: кто-нибудь знает, правильно ли это сделать? Несмотря на то, что я использую аналоговые контакты, а экрану нужны цифровые, я читаю онлайн что это не имеет значения:

Аналоговые входные контакты могут использоваться как цифровые контакты, обозначаемые как A0, A1 и т. д. Исключением являются контакты A6 и A7 Arduino Nano, Pro Mini и Mini, которые можно использовать только как аналоговые входы.

Я также увидел в руководстве по Elegoo Uno R3, что A4 и Выводы A5 используются для протокола I2C, который используется в этом OLED-экране:

Насколько мне известно, с аппаратной точки зрения все вроде бы правильно, верно?

, 👍0

Обсуждение

Вы проверили, что ваш код использует правильный адрес I2C для вашего конкретного OLED-дисплея? Если вы не уверены в адресе, вы можете запустить скетч примера сканирования I2C, чтобы найти его. Вы можете найти его в Arduino IDE в Examples->Wire->WireScan., @StarCat

@StarCat Да, это адрес 0x3C: «Сканирование... Устройство I2C найдено по адресу 0x3C! сделано`, @Arnau

Вам нужно было изменить какие-либо параметры в образце кода, чтобы он соответствовал вашему дисплею, например, SCREEN_HEIGHT?, @6v6gt

Многие из этих модулей имеют собственный встроенный стабилизатор 3,3 В. Похоже, вы питаете его от 3,3 В, а в учебнике, который вы цитируете, он питается от 5 В. Возможно, он «работает» достаточно с 3,3 В минус регулятор-выпадение, чтобы реагировать на I2C, но недостаточно, чтобы на самом деле зажечь дисплей., @timemage

Что ж, я нашел один из своих дисплеев с похожим (не таким) дизайном, который, как я вижу, имеет регулятор. Казалось, его не заботило, питается ли он от 5 В или 3,3 В. Работал с вашим кодом в обоих случаях. Хотя не знаю, насколько это однозначно. **Если** ваш тип предназначен для работы с 5 В в VCC, я бы все равно попробовал его. Я бы не стал использовать те же цвета, что и вы, но я не вижу ничего технически неправильного в вашей проводке. Мой дисплей тоже реагирует на 3С., @timemage


1 ответ


Лучший ответ:

0

Вы близко. Похоже, у вас есть заурядный клон [не Adafruit], ЖК-дисплей 128 x 64 с интерфейсом / I2C.

  1. Определите адрес I2C, перевернув его и увидев, с какой стороны находится резистор 0 Ом или капля припоя — 0 или 1. Если он находится на стороне «0», адрес равен 0x3C, если он находится на « 1', это 0x3D.

Вот фото сзади и с адресом 0x3c.

Если ваша задняя панель выглядит совсем иначе, найдите и запустите сканер устройств I2C, чтобы найти адрес вашего дисплея.

  1. Не используйте код, который вы связали.

Из Arduino IDE установите или обновите библиотеку Adafruit SSD1306. Я использовал для тестирования версию 2.57.

После установки библиотеки загрузите пример SSD1306_128X64_I2C

Найдите эту строку (в начале кода):

#define SCREEN_ADDRESS 0x3D ///< См. спецификацию для адреса; 0x3D для 128x64, 0x3C для 128x32

При необходимости измените 0x3D на 0x3C (как было определено ранее). Я не думаю, что это экран Adafruit, поэтому вы можете игнорировать комментарий.

  1. Трижды проверьте 4 подключения.

Запустите демонстрацию и громко выдохните - "круто".

PS: мой работает от 3,3 В или 5 В

,