/*Это пример программы для проекта ночной светильник с автоярокстью
Алгоритм написания любой программы:
0. Определить во вкладке "Инструменты" плату и номер порта
1. Продумать примерный алгоритм программы. Например для текущей задачи - управление ярокстью светодиода в зависимости от яркости необходимо:
Считать значение с датчика освещенности -> Обработать это значение (С порта A0 значение лежит в интервале от 0..1023, а для управления светодиодом нужен интервал от 0..255)->
Отправить обработанное значение на светодиод.
2. Определить в начале программы заранее известные переменные, например переменные для хранения наименования пинов (по ходу программы будут появляться новые переменные
и их также лучше указывать в самом начале программы и каждую переменную описывать).
3. В блоке setup произвести необходимые настроки микроконтроллера, например задать режим работы пина pin(на прием или отправку данных).
4. Начать писать код программы согласно алгоритму.
P.S. ТАКЖЕ ПРОШУ НЕ ЗАБЫВАТЬ ПРО ОФОРМЛЕНИЕ КОДА! КОД ДОЛЖЕН БЫТЬ ЧИТАЕМЫМ И ПОНЯТНЫМ. ДОЛЖНЫ ПРИСУТСТВОВАТЬ ОТСТУПЫ, ПРОБЕЛЫ, В ОДНОЙ СТРОКЕ ПРОПИСЫВАЕМ ТОЛЬКО ОДНУ КОМАНДУ.
*/
int pin_A0 = A0; //объявляем переменную,которая будет хранить в себе номер аналогового порта
int pin_2 = 2; //объявляем переменную, которая будет хранить в себе номер цифрового порта
int value_light = 0; //хранит значение полученное с датчика освещенности
void setup() {
// данный код выполняется 1 раз при запуске программы
pinMode(pin_A0, INPUT); //настройка порта A0 на прием данных (считывание значения с датчика яркости)
pinMode(pin_2, OUTPUT); //настройка порта 2 на отправку данных (управление ярокостью светодиода, т.е. управление величиной напряжения подаваемого на светодиод)
Serial.begin(9600); //запуск связи по Serial порту на скорости 9600 бит/сек. (нужна данная команда для дальнейшей отладки программы)
}
void loop() {
//данный код выполняется бесконечно пока контроллер подключен к питанию
value_light = analogRead(pin_A0); //читаем значение с порта A0 (значение аналогвое)
//допустим посмотрели в мониторе порта и получили диапозон значений 300..710, где 300 - минимальная яркость, 710 - максимальная яркость
//т.е. необходимо диапазон 300-710 преобразовать в диапозон 0-255.
//самый простой вариант - задать градицию яркостей по 5 диапазоном:
//получим (710-300)/5=82. А 255/4=64. Т.е. при изменении исходного интервала на 82, преобразуемый будем изменять на 64.
//используем оператор выбора switch:
switch(value_light) { //если переменная value_light:
case 300 ... 382: value_light = 0; break; //принадлежит диапазону от 300 до 382, то присвоим ей значени 0.
case 383 ... 464: value_light = 64; break; //принадлежит диапазону от 383 до 464, то присвоим ей значени 64. и так далее до 255
case 465 ... 546: value_light = 128; break;
case 547 ... 628: value_light = 192; break;
case 629 ... 710: value_light = 255; break;
}
analogWrite(pin_2, value_light); // отправляем на светодиод преобразованное значение яроксти
}