В этой статье опубликован простой проект, созданный для тестирования подключения к микроконтроллеру AVR через I2C монохромного индикатора OLED 128x64 точки (SSD1306).
Для проверки программы использовалась макетная плата AVR-USB32U4 [1] с микроконтроллером ATmega32U4, однако проект можно легко перенести на любой AVR, у которого на борту есть аппаратный интерфейс I2C (по терминологии Atmel это интерфейс TWI).
Цоколевка индикатора OLED 128x64. При подключении питания к индикатору будьте особенно внимательны, так как разные версии индикатора, которые можно купить на Aliexpress [2] или на Ebay, имеют разную цоколевку.
Очень легко перепутать полярность питания, что может вывести индикатор из строя. Напряжение питания может быть любое в диапазоне от +3 до +5 вольт (подается на ножку VCC относительно GND).
Подключение к ATmega32U4. К микроконтроллеру индикатор подключается 2 сигналами: SCL (такты) и SDA (данные). Сигналы SCL и SDA должны подключаться к ножкам микроконтроллера PD0 и PD1 соответственно, см. рисунок:
Использовался исходный код библиотек от Adafruit, предназначенных для Arduino. Библиотеки были основаны на классах C++, но я для собственного удобства перенес код на стандартный язык C.
При тестировании кода пришлось подбирать адрес подчиненного устройства I2C, который соответствовал моему индикатору. Значение адреса может быть разным: 0x3C, 0x3D, 0x78, 0x7A. В моем случае он оказался 0x78.
Исходный код проекта можно скачать по ссылке [3].
[Ссылки]
1. Макетная плата AVR-USB32U4. 2. OLED I2C 128x64 site:aliexpress.com. 3. 180916SSD1306-test.zip - исходный код, документация. |
Комментарии
microsin: Использовалась Microsoft Visual Studio 2010. Можете взять также более свежую версию студии.
microsin: файлы модулей кода должны быть добавлены при этом в проект. Или если Вы компилируете через командную строку вызовом утилиты make, то нужные модули должны обрабатываться в Makefile.
RSS лента комментариев этой записи