Вот законченный вариант, интересно было бы посмотреть как это реализовать с прерываниями, на выходе как и писал ранее управление штатной подсветкой +12v.
PHP код:
#define LED 9 // выход на управлении подсветкой
#define BUTTON 7 // переключател гараритов
#define Ain 5 // аналоговый вход для измерения сопротивления
int i = 0;
int val = LOW; // состояние переключателя габаритов on - off
int res = 0; // уровень яркости
int old_val = LOW;
int old_res = LOW;
int on = 0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(BUTTON, INPUT);
analogWrite(LED, 0);
}
void loop() {
res = analogRead(Ain)/4;
val = digitalRead(BUTTON); // читаем состояния переключателя
delay(10);
if (val == HIGH && old_val==0) //если подсветку включаем
{
res = analogRead(Ain)/4; // читаем состояние регулятора яркости
for (i = 0; i < res; i++) { // зажигаем плавно подсветку до уровня //выбранной яркости
analogWrite(LED, i);
delay(30);
}
old_val = 1;
on = 1;
}
if ( val == LOW && old_val==1) //если подсветку выключаем
{
res = analogRead(Ain)/4;
for (i = res; i > 0; i--) { // тушим плавно от уровня регулятора яркости //до нуля
analogWrite(LED, i); // set the LED brightness
delay(10); // Wait 10ms
}
old_val = 0;
analogWrite(LED, 0);
on = 0;
}
if(old_res < res and on ==1){
for (i = old_res; i < res; i++) { // loop from 0 to 254 (fade in)
analogWrite(LED, i); // set the LED brightness
delay(10); // Wait 10ms because analogWrite
// is instantaneous and we would
// not see any change
}
}
old_res = res;
}