// Подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
// Инициализируем объект-экран, передаём использованные
// для подключения контакты на 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);
// конвертируем значения в яркость от 0 до 255
brightness = map(potValue, 0, 1024, 0, 255);
// меняем яркость светодиода в зависимости от значений от потенциметра
analogWrite(ledPin, brightness);
// конвертируем значения яркость в проценты для индикатора от 0 до 17
progress = map(brightness, 0, 255, 0, 17);
if(progress != oldProgress) //данные изменились
{
oldProgress = progress;
// устанавливаем курсор на второй строчке
lcd.setCursor(0, 1);
// очищаем экран
lcd.print(" ");
// выводим индикатор
for (int i = 0; i < progress; i++)
{
lcd.setCursor(i, 1);
lcd.write(byte(0));
}
}
}