Дублирование параметров автомобильной па

Алгоритмы
Дублирование параметров автомобильной панели приборов


Программа для дублирования параметров автомобильной панели приборов, которую написал некто Urvin. Я лишь немного переделал код для Carduino. Со временем будут ещё небольшие исправления.
Программа

Перед тем, как использовать программу совместно с Carduino, в файле 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.

Скетч для Carduino/Arduino/Freeduino — тут
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 () 
{ 
}  




Схема подключения. Если неправильно подключить диоды, вы рискуете спалить устройство. Исходя из нижеприведённой схемы, катоды диодов нужно подключить к соответствующим индикаторам (лампочкам) со стороны управляющего сигнала. В случаи если индикатор управляется минусом, то в скетче придется проинвертировать соответствующий сигнал.

Оригинал — www.compcar.ru/forum/showthread.php?t=4604
technik 10.12.2009 в 13.51 (обновлен 10.12.2009 в 13.52) комментарии 0 0

комментарии(0)

Комментировать

Для добавления комментария авторизируйтесь.
Последние комментарии:
© 2012 pobot.ru