Еще могу предложить мой вариант прочтения программ от Чипа, если он не возражает.
В данном скетче объединены резистивные кнопки, автоматическая регулировка LED подсветки и добавлена реакция на включение заднего хода.
Отличия от первоисточников:
1. реакция на резистивные кнопки по факту нажатия а не отпускания т.е. практически мгновенно
2. Для регулировки яркости подсветки используется усредненное значение двух замеров при отсутствии дребезга и яркость сдвигается по единичке
3. При включении заднего хода яркость выставляется на максимум
4. Используются условные переходы, поэтому одновременно несколько действий не происходит и поэтому нет поводов для глюков
	PHP код:
	
//AutoLight & Softresbutton & reverslight  
//http://compcar.ru 
#define PIN 5  //номер аналогового порта  
#define LIMIT 10 //предел погрешности сопротивления  
#define DELTA 5 //предел погрешности освещения
byte bytes[2];   
int res_dt1, res_d;
int back_on = 12;    //вход сигнал включения задней скорости
int ledPin = 9;  //номер светодиодного порта
int light = 0;
int reallight = 0;
int oldlight = 0;
int sensVal_dt1 = 0;
int sensVal_d = 0;
void setup()    
{ 
  pinMode(back_on, INPUT); 
  digitalWrite(back_on, HIGH); //Подключить внутренний подтягивающий резистор   
  pinMode(ledPin, OUTPUT);
  TCCR1B = TCCR1B & 0b11111000 | 1;  
  Serial.begin(115200); // настроить скорость com порта
}   
void loop()    
{     
  res_d = analogRead(PIN); // прочитать данные АЦП 
  delay(50); 
  res_dt1 = analogRead(PIN); // прочитать данные АЦП  
  if (res_dt1 > res_d-LIMIT && res_dt1 < res_d+LIMIT && res_dt1 < 900) // если сигнал резистивных кнопок не дребезжит и что-то нажато
  {   
    bytes[0] = res_d & 255;          // преобразовать в 2-байта    
    bytes[1] = (res_d & 768) >> 8;    
    Serial.write( bytes,2); // отправить прочитаное значение компьютеру 
    delay(700);
  }
  else if (digitalRead(back_on) == HIGH)  //если нет сигнала резистивных кнопок надо проверить включен ли задний ход 
  {
    delay(200);
    light = 255; // ежели включен з.х.- сделать яркость на максимум (иначе нифига ночью не видно)
    goto label;
  }
  else
  {
    sensVal_d = analogRead(0); // если нет з.х.- прочитать данные фоторезистора
    delay(100);
    sensVal_dt1 = analogRead(0); // опять прочитать данные фоторезистора
    if(sensVal_dt1 > sensVal_d-DELTA && sensVal_dt1 < sensVal_d+DELTA )  // если разница между замерами незначительна
    {
      reallight = (sensVal_d + sensVal_dt1)/50 + 7; // присваиваем значению которое программа хотела бы отправить на светодиоды сумму этих замеров.
      // можно дополнительно умножить или приплюсовать любое поправочное значение которое подойдет для настройки адекватной яркости
      if(reallight == oldlight) //сравниваем желаемое для программы значение яркости со старым и если они не совпадают, то изменяем по единичке
      {
        light = oldlight; 
      }
      else if(reallight > oldlight) //
      {
        light = ++oldlight;
      }
      else
      {
        light = --oldlight;
      }
    }  
    else
    {
      light = oldlight;
    }
  }
  oldlight = light;
label: 
  constrain(light, 8, 255);
  analogWrite(ledPin, light);
}