Выкладываю программу для дублирования параметров автомобильной панели приборов, написаную Urvin . Мной был подправлен только код для arduino. Обработку прерывания для одометра еще не успел поправить
Программу скачиваем здесь 

Перед использованием программы совместно с arduino необходимо изменить следующие настройки (файл torpedo.ini)
	Код:
	[usb]
useusb=false
...
[com]
name=Com#
baudrate=9600
parity=0
flowcontrol=0
databits=8
stopbits=1
DTR=false
RTS=false
 Com# - имя com-порта, на котором работает ардуино. Например, Com4.
Скетч для  Arduino 
	PHP код:
	
#include <EEPROM.h> 
// Массив значений по портам 
byte resultInput[11]; 
byte i; 
void setup() 
{     
    // Обнуление массива значений 
    for(i=0; i<=10; i++) 
      { 
        resultInput[i]=0;
      } 
     
    // Инициализация цифровых портов 
    for(i=2; i<=13; i++) 
      { 
        pinMode(i,INPUT); 
        digitalWrite(i, HIGH); //Подключить внутренние подтягивающие резисторы
      } 
     
    // Инициализация ком порта 
    Serial.begin(9600); 
     // привязываем 0-е прерывание к функции interrupt() 
 //   attachInterrupt(0, interrupt, CHANGE); 
} 
void loop() 
{ 
    // Сбор данных с пяти АЦП, диапазон значений [0, 255] 
    // 0 - скорость 
    // 1 - тахометр 
    // 2 - температура охлаждающей жидкости 
    // 3 - уровень топлива 
    // 4 - напряжение автомобильной сети 
    for(i=0; i<=4; i++) 
      { 
        resultInput[i]=analogRead(i)/4;   
      } 
    // Чтение данных одометра из EEPROM 
    for(i=0; i<=3; i++) 
      { 
       // resultInput[i+7] = EEPROM.read(i); 
      } 
     
    // Перевод состояний на цифровых входах в общее число 
    // 5 - двоиный код включения лампочек ( 
    // 6 - двоичный код включения лампочек  
    //     + двоичный код включенной передачи (3 старших бита) 
    // 7-10 - текущее значение одометра 
    resultInput[5] = digitalRead(2) + 
             digitalRead(3)*2 + 
             digitalRead(4)*4 + 
             digitalRead(5)*8 + 
             digitalRead(6)*16 + 
             digitalRead(7)*32 + 
             digitalRead(8)*64; 
                   
    resultInput[6] = digitalRead(9) + 
             digitalRead(10)*2 + 
             digitalRead(11)*4 + 
             digitalRead(12)*8 + 
             digitalRead(13)*16;          
// Контроль за отключением питания 
        if (resultInput[4]<180) 
        { 
        // Запись одометра в энергонезависимую память 
            for(i=0; i<=3; i++) 
            { 
             //     EEPROM.write(i, resultInput[i+7]);    
            } 
        } 
// Добавление информации о включенной передаче 
                     byte trm=analogRead(5)/4;
                     byte gear=0b00100000;       // 1 
            if (trm<20)       gear=0;            // N 
            else if (trm<60)  gear=0b11100000;   // R 
            else if (trm<105) gear=0b10100000;   // 5 
            else if (trm<145) gear=0b10000000;   // 4 
            else if (trm<190) gear=0b01100000;   // 3 
            else if (trm<230) gear=0b01000000;   // 2 
            resultInput[6] = (resultInput[6] & 0b00011111) | gear; // накладываем маску и старшие биты 
              
Serial.write(resultInput, 11);     // Передаем данные из массива в компьютер 
delay(300);
} 
//------------------------ Обработка прерываний -----------------------// 
void interrupt () 
{ 
} 
 Схема подключения. При не правильном подключении диодов вы рискуете спалить устройств. По приведенной схеме катоды диодов подключаются к соответствующим индикаторам(лампочкам) со стороны управляющего сигнала. В случаи если индикатор управляется минусом , то в скетче придется проинвертировать  соответствующий сигнал.
Вложение 6388
Исходник программы для PC