Подключите 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-экране:
Насколько мне известно, с аппаратной точки зрения все вроде бы правильно, верно?
@Arnau, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы близко. Похоже, у вас есть заурядный клон [не Adafruit], ЖК-дисплей 128 x 64 с интерфейсом / I2C.
- Определите адрес I2C, перевернув его и увидев, с какой стороны находится резистор 0 Ом или капля припоя — 0 или 1. Если он находится на стороне «0», адрес равен 0x3C, если он находится на « 1', это 0x3D.
Вот фото сзади и с адресом 0x3c.
Если ваша задняя панель выглядит совсем иначе, найдите и запустите сканер устройств I2C, чтобы найти адрес вашего дисплея.
- Не используйте код, который вы связали.
Из Arduino IDE установите или обновите библиотеку Adafruit SSD1306. Я использовал для тестирования версию 2.57.
После установки библиотеки загрузите пример SSD1306_128X64_I2C
Найдите эту строку (в начале кода):
#define SCREEN_ADDRESS 0x3D ///< См. спецификацию для адреса; 0x3D для 128x64, 0x3C для 128x32
При необходимости измените 0x3D на 0x3C (как было определено ранее). Я не думаю, что это экран Adafruit, поэтому вы можете игнорировать комментарий.
- Трижды проверьте 4 подключения.
Запустите демонстрацию и громко выдохните - "круто".
PS: мой работает от 3,3 В или 5 В
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Связь Arduino master/slave с использованием RS485
Вы проверили, что ваш код использует правильный адрес 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