/* Считывание сигнала с sensorPin и если уровень на нём LOW, то изменяется коэффициент заполнения ШИМ на PWMPin от 0 до 255, а после времени timeout коэффициент заполнения ШИМ на PWMPin изменяется от 255 до 0. Текст программы написал и отладил Andro. */ // назначение номеров выводов: const byte sensorPin = 12; // номер вывода для подключения датчика const byte PWMPin = 11; // номер вывода для подключения светодиода // установка времени включения в секундах #define ontime 7 // сколько времени будет светиться светодиод // после достижения максимальной яркости // переменные byte brightness = 0; // начальная яркость светодиода long timeout = ontime*1000; // конвертирование времени включённого состояния // из секунд в миллисекунды // функция начальной настройки void setup() { // настройка PWMpin как выход: pinMode(PWMPin, OUTPUT); // установка начальной яркости: analogWrite(PWMPin, brightness); // настройка sensorPin как вход: pinMode(sensorPin, INPUT); // включение подтягивающего резистора: digitalWrite(sensorPin, HIGH); } // основной цикл программы void loop() { // проверка срабатывания датчика: if (digitalRead(sensorPin) == LOW) { // увеличение яркости от 0 до 255 с шагом в 5 делений: for (int fadeValue = ((brightness/5)*5)+5 ; fadeValue <= 255; fadeValue += 5) { brightness = fadeValue; // изменение яркости analogWrite(PWMPin, brightness); // ожидание 5 миллисекунд до следующего шага: delay(5); } delay(timeout); // ожидание на установленное время включения } // уменьшение яркости от 255 до 0 с шагом в одно деление: for (int fadeValue = brightness-1 ; fadeValue >= 0 && digitalRead(sensorPin) != LOW; fadeValue -= 1) { brightness = fadeValue; // изменение яркости analogWrite(PWMPin, brightness); // ожидание 15 миллисекунд до следующего шага: delay(15); } }