Найти тему
Реальная Сталь

Ардуино с Нуля до Чпу. Эмуляция Символьного LCD по протоколу I2C в Proteus

Протокол I²C  — последовательная асимметричная шина для связи между интегральными схемами. Использует две двунаправленные линии связи (SDA и SCL), применяется для соединения низкоскоростной периферии микроконтроллера, соответственно Ардуино.

Существуют два способа реализации протокола I²C, программный и аппаратный.

Программный работает быстрее, но имеет сложный код, особенно для начинающих.

Аппаратный способ заложен на этапе изготовления. Главным козырем является простота реализации за счет наличия готовых библиотек.

Приобретаем дисплей и интерфейс I²C , согласно распиновки вашего LCD

.
.
.
.

Компоненты где то в пути, не повод ни чего не делать. На помощь приходит ПРОТЕУС. Составляем схему.

.
.

Платы Ардуино используют два пина для работы по интерфейсу I2C. SDA соответствует аналоговый порт A4, а SCL соответствует аналоговый порт A5.
На Ardunio Mega SDA — 20 пин, SCL — 21 пин. Для работы написана библиотека. С чувством благодарности качаем
LiquidCrystal_I2C.h

Распаковываем архив, папку LiquidCrystal_I2C_V112, устанавливаем в Arduino IDE или копируем в папку, обычно по пути C:\Users\имя\Documents\Arduino\libraries . Пуск--> Документы--> Arduino--> libraries

Скетч реализации с данной библиотекой теперь прост, как табуретка. Выражение нашего преподавателя, хотя я возражал, не так она и проста.

.
.

Для копирования

// #include <Wire.h> // Подключаем библиотеку для работы с шиной I2C

#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем по шине I2C

LiquidCrystal_I2C lcd (0x27, 20, 4);// ОБЪЕКТ ( АДРЕС_I2C , КОЛ_СТОЛБЦОВ , КОЛ_СТРОК );

// Если надпись не появилась, замените адрес 0x27 на 0x3F

void setup(){

lcd.begin(20, 4); // Инициируем работу с LCD дисплеем, указывая количество (столбцов, строк)

lcd.backlight(); // Включаем подсветку LCD дисплея

lcd.setCursor(1,0); // первая строка, первый знак

lcd.print(" Hello World"); // вывод строки

lcd.setCursor(1,1);

lcd.print(" Welcome to the ");

lcd.setCursor(1,2);

lcd.print("Real Steel channel,");

lcd.setCursor(1,3);

lcd.print("everything is fine");

delay(5000); //задержка

lcd.noBacklight(); // Гасим подсветку

lcd.clear(); // очистка дисплея

delay(2000);

lcd.backlight(); // Включаем подсветку LCD дисплея

}

void loop(){

lcd.setCursor(1,0);

lcd.print("Line 1 TEST OK ");

lcd.setCursor(1,1);

lcd.print("Line 2 TEST OK ");

lcd.setCursor(1,2);

lcd.print("Line 3 TEST OK ");

lcd.setCursor(1,3);

lcd.print("Line 4 TEST OK ");

delay(2000);

lcd.clear();

}

Компилируем, прошиваем ВИРТУАЛЬНОЕ Ардуино. Как ? Ссылка в конце статьи.

Конечно это демонстрационный код с использованием коварного ДЕЛЕЙ().

Для каждого устройства, при подключении к микроконтроллеру, присваивается уникальный адрес, по этому можно подключить до 127 устройств на одну шину. Адрес вшит в устройство производителем.

Как использовать ПРОТЕУС читать ТУТ

Да с кириллицей пока проблемы, но мы решим этот вопрос будет ТУТ