МиМ. Arduino Nano
Описание и распиновка:
https://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:arduino-nano
Интерфейсы обмена данными:
https://habr.com/ru/companies/otus/articles/798571
Управление светодиодом
Схема

Программа

Отладка с помощью Serial Monitor

Широтно-импульсная модуляция (ШИМ)

Интерфейс I2C
https://soltau.ru/index.php/arduino/item/371-interfejs-i2c-i-arduino%20-%201.12.2019
Подключение LCD
Подключение:

Проверка связи:
#include <Wire.h> /*include Wire.h library*/
void setup()
{
Wire.begin(); /*Wire I2C communication START*/
Serial.begin(9600); /*baud rate set for Serial Communication*/
while (!Serial); /*Waiting for Serial output on Serial Monitor*/
Serial.println("\nI2C Scanner");
}
void loop()
{
byte err, adr; /*variable error is defined with address of I2C*/
int number_of_devices;
Serial.println("Scanning.");
number_of_devices = 0;
for (adr = 1; adr < 127; adr++ )
{
Wire.beginTransmission(adr);
err = Wire.endTransmission();
if (err == 0)
{
Serial.print("I2C device at address 0x");
if (adr < 16)
Serial.print("0");
Serial.print(adr, HEX);
Serial.println(" !");
number_of_devices++;
}
else if (err == 4)
{
Serial.print("Unknown error at address 0x");
if (adr < 16)
Serial.print("0");
Serial.println(adr, HEX);
}
}
if (number_of_devices == 0)
Serial.println("No I2C devices attached\n");
else
Serial.println("done\n");
delay(5000); /*wait 5 seconds for the next I2C scan*/
}

Полная статья здесь: https://linuxhint.com/use-multiple-i2c-devices-arduino/

Отображение текста:
#include <LiquidCrystal_I2C.h>
// Указываем адрес (0x27), количество столбцов (16) и строк (2)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); // Инициализация дисплея
lcd.backlight(); // Включить подсветку
lcd.setCursor(0, 0); // Курсор на 1-ю строку, 1-й символ
lcd.print("Hello, World!");
lcd.setCursor(0, 1); // Курсор на 2-ю строку, 1-й символ
lcd.print("Hello again!");
}
void loop() {
// Здесь можно обновлять данные
}