Загрузка данных


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Адрес экрана обычно 0x27 или 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2); 

const int LDR = A0, LED = 9;

void setup() {
  lcd.init();
  lcd.backlight();
  pinMode(LED, OUTPUT);
  
  // Рисуем статичную часть текста один раз
  lcd.setCursor(0, 0);
  lcd.print("Light: ");
}

void loop() {
  int val = analogRead(LDR);
  
  // 1. Яркость светодиода (0-255)
  int br = constrain(map(val, 200, 800, 255, 0), 0, 255);
  analogWrite(LED, br);

  // 2. Уровень света для человека (0-100%)
  int lightPercent = map(val, 0, 1023, 0, 100);

  // Обновляем экран
  static unsigned long timer = 0;
  if (millis() - timer > 250) {
    lcd.setCursor(7, 0);       // Ставим курсор после слова "Light: "
    lcd.print(lightPercent);
    lcd.print("%  ");          // Пробелы в конце стирают старые цифры

    // Визуальная полоска (прогресс-бар) на второй строке
    lcd.setCursor(0, 1);
    int bars = map(lightPercent, 0, 100, 0, 16);
    for (int i = 0; i < 16; i++) {
      if (i < bars) lcd.print("-"); // Символ заполнения
      else lcd.print(" ");          // Пробел
    }
    
    timer = millis();
  }
}