#include <LiquidCrystal.h> // Подключаем стандартную библиотеку LiquidCrystal
// Инициализируем объект-экран, передаём использованные
// для подключения контакты на Arduino в порядке:
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int potPin = A0; // потенциометр
const int ledPin = 6; // светодиод на выводе с ШИМ
int potValue = 0; // значение от потенциометра
int brightness = 0; // конвертируем в яркость
int progress = 0; // индикатор прогресса
//Пользовательский символ
byte pBar[8] =
{
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
};
void setup()
{
// устанавливаем размер (количество столбцов и строк) экрана
lcd.begin(16, 2);
// светодиод
pinMode(ledPin, OUTPUT);
// Выводим сообщение в первой строчке
//lcd.print(" LED Brightness");
// Создаем символы для индикатора прогресса
lcd.createChar(0, pBar);
// ощищаем экран
lcd.clear();
// выводим сообщение в первой строчке
lcd.print(" LED Brightness");
}
void loop()
{
static int oldProgress = 0; //старое значение на экране
potValue = analogRead(potPin); // считываем показания с потенциометра
brightness = map(potValue, 0, 1024, 0, 255); // конвертируем значения в яркость от 0 до 255
analogWrite(ledPin, brightness); // меняем яркость светодиода в зависимости от значений от потенциометра
progress = map(brightness, 0, 255, 0, 17); // конвертируем значения яркость в проценты для индикатора от 0 до 17
if(progress != oldProgress) //данные изменились
{
oldProgress = progress;
lcd.setCursor(0, 1); // устанавливаем курсор на второй строчке
lcd.print(" "); // очищаем экран (16 пробелов)
for (int i = 0; i < progress; i++) // выводим индикатор
{
lcd.setCursor(i, 1);
lcd.write(byte(0));
}
}
}