// Библиотека для работы с текстовым дисплеем по шине I²C #include // Создаём объект для работы с дисплеем // В параметрах передаём I²C-адрес дисплея, кол-во строк и символов LiquidCrystal_I2C lcd(0x38, 16, 2); // Даём понятное имя пину с потенциометром constexpr int POT_PIN = A0; // Переменная для хранения переводимого числа int value = 0; void setup() { // Инициализируем дисплей lcd.init(); // Включаем подсветку lcd.backlight(); // Печатаем данные на дисплей printDataLCD(value); } void loop() { // Считываем сигнал с потенциометра int valueNow = readPot(POT_PIN); // Если текущее показание потенциометра отличается от предыдущего if (value != valueNow) { // Обновляем показатель value = valueNow; // Печатаем данные на дисплей printDataLCD(value); } } // Функция для считывания аналогового сигнала с потенциометра // с преобразованием в диапазон значений от 0 до 16 int readPot(int pin) { int sensorADC = 0; int sensorValue = 0; // Фильтруем данные а затем делим результат for (int i = 0; i < 32; i++) { sensorADC += analogRead(pin); delay(10); } sensorADC = sensorADC / 32; // Преобразуем выходной сигнал с потенциометра в диапазон значений от 0 до 16 sensorValue = map(sensorADC, 0, 1023, 0, 15); // Возвращаем результат return sensorValue; } // Функция для вывода числа на дисплей в различных системах счисления void printDataLCD(int numberNow) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("DEC:"); lcd.print(numberNow, DEC); lcd.setCursor(8, 0); lcd.print("BIN:"); lcd.print(numberNow, BIN); lcd.setCursor(0, 1); lcd.print("OCT:"); lcd.print(numberNow, OCT); lcd.setCursor(8, 1); lcd.print("HEX:"); lcd.print(numberNow, HEX); }