// Библиотека для работы с фоторезистором #include // Библиотека для работы с текстовым дисплеем по шине I²C #include // Даём понятное имя пину с потенциометром constexpr int POT_PIN = A2; // Даём понятное имя пину с фоторезистором constexpr int LDR_PIN = A3; // Создаём объект для работы с фоторезистором TroykaLight ldr(LDR_PIN); // Создаём объект для работы с дисплеем // В параметрах передаём I²C-адрес дисплея, кол-во строк и символов LiquidCrystal_I2C lcd(0x38, 16, 2); void setup() { // Инициализируем дисплей lcd.init(); // Включаем подсветку lcd.backlight(); } void loop() { // Считываем аналоговый сигнал с потенциометра int potADC = analogRead(POT_PIN); // Преобразуем значение с потенциометра в диапазон освещённости // для порог срабатывания подсветки long limitLight = map(potADC, 0, 1023, 0, 100000); // Создаём переменную для хранения гистерезиса int hyster = limitLight * 0.1 + 50; // Считываем данные с фоторезистора ldr.read(); // Запрашиваем освещенность у фоторезистора long ldrLight = ldr.getLightLux(); // Выводим на дисплей // порог освещенности срабатывания подсветки и текущую освещенность printDataLCD(limitLight, ldrLight); if (ldrLight < limitLight - hyster) { // Если текущее показание фоторезистора ниже нижней границы гистерезиса, // включаем подсветку lcd.backlight(); } else if (ldrLight > limitLight + hyster) { // Если текущее показание фоторезистора выше верхней границы гистерезиса, // выключаем подсветку lcd.noBacklight(); } delay(1000); } // Функция для вывода на дисплей // порога освещенности срабатывания подсветки и текущую освещенность void printDataLCD(long limitLight, long ldrLight) { String limitLightStr = longToStr(limitLight, 6); String ldrLightStr = longToStr(ldrLight, 6); lcd.setCursor(0, 0); lcd.print("P = "); lcd.print(limitLightStr); lcd.print(" Lx"); lcd.setCursor(0, 1); lcd.print("L = "); lcd.print(ldrLightStr); lcd.print(" Lx"); } // Функция для преобразования переменной типа long в переменную String, // оставляя при этом заданное количество знаков. String longToStr(long value, int countDigits) { String strValue; int lenValue = String(value).length(); for (int i = countDigits; i > lenValue; i--) { strValue += "0"; } strValue += String(value); return strValue; }