Протокол 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 устройств на одну шину. Адрес вшит в устройство производителем.
Как использовать ПРОТЕУС читать ТУТ
Да с кириллицей пока проблемы, но мы решим этот вопрос будет ТУТ