Показать сообщение отдельно
Старый 15.03.2013, 12:18   #10
filinmd
Старший Пользователь
 
Аватар для filinmd
 
Регистрация: 20.03.2012
Возраст: 36
Город: Москва
Регион: 77, 97, 99, 177
Машина: Ford Focus 2, Audi Q7
Сообщений: 163
filinmd will become famous soon enoughfilinmd will become famous soon enough
По умолчанию

И так отчитываюсь за проделанную работу.

Ардуиной могу делать с пультом все что угодно

Текущий скетч с демонстрацией возможностей.
PHP код:
#include <SoftwareSerial.h>
SoftwareSerial MMI(4, 2); //TX, RX пульта  

int MMIreceiveByte = 0;          // byte reading from MMI
byte MMIbyte[8] = {0,0,0,0,0,0,0,0}; // key byte sequence 
int Delay = 10; //delay in millisec 
int MMIcom = 0; //boolean value set 1 if comand detected 
int ComID = 0; // comand ID (for easy select case routine) 
int otvet = 0; // id otveta

int incomingByte = 0;      // byte reading from serial port 

//*****************************************************          Системные коды          *******************************************************************

byte START_12V[8] = {0, 0x67, 0xFF, 0x1A, 0x04, 0xFA, 0x27, 0xC5}; // Ответ пульта после подачи +12 67 FF 1A 4 FA 27 C5 
byte Pult_ON[8] = {0, 0x10, 0x02, 0x70, 0x12, 0x10, 0x03, 0xA7}; // Команда включение пульта  10 02 70 12 10 03 A7  

byte Pult_ON_Otvet[8] = {0, 0x67, 0xFF, 0x2A, 0xDF, 0xF2, 0x4B, 0x00 }; // Ответ пульта после программного включения 67 FF 2A DF F2 4B 0 

byte Knopki_ON[8] = {0x10, 0x02, 0x64, 0x99, 0x01, 0x10, 0x03, 0x23}; // Разрешить подсветку  10 02 64 99 01 10 03 23 
byte Podsvetka_ON[8] = {0x10, 0x02, 0x60, 0x9A, 0x01, 0x10, 0x03, 0x20}; // Включение общей  подсветки кнопок  10 02 60 9A 01 10 03 20





//*****************************************************           Коды кнопок          *******************************************************************

byte NAVI_DOWN[8] = {0, 0x67, 0xFF, 0x3E,0xF5, 0xDF, 0xF2, 0x4B}; // Нажатие кнопки  67 FF 3E F5 DF F2 4B                   *Проверено
byte NAVI_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xEA, 0xDF, 0xF2, 0x49}; // Отпустили кнопку 67 FF 3A EA DF F2 49               *Проверено

byte INFO_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xF3, 0xDF, 0xF2, 0x49}; //Нажатие кнопки 67 FF 3E F3 DF F2 49                    *Проверено
byte INFO_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xE6, 0xDF, 0xF2, 0x47}; // Отпустили кнопку 67 FF 3A E6 DF F2 47               *Проверено

byte CAR_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xF1, 0xBE, 0xF2, 0x47}; //Нажатие кнопки  67 FF 3E F1 BE F2 47                    *Проверено
byte CAR_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xE2, 0xBE, 0xF2, 0x45}; // Отпустили кнопку 67 FF 3A E2 BE F2 45                *Проверено

byte SETUP_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xEF, 0xBE, 0xF2, 0x45}; //Нажатие кнопки  67 FF 3E EF BE F2 45                  *Проверено
byte SETUP_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xDE, 0xBE, 0xF2, 0x43}; // Отпустили кнопку 67 FF 3A DE BE F2 43              *Проверено

byte RADIO_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xCF, 0xDF, 0xF2, 0x25}; //Нажатие кнопки  67 FF 3E CF DF F2 25                  *Проверено 
byte RADIO_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0x9E, 0xDF, 0xF2, 0x23}; // Отпустили кнопку 67 FF 3A 9E DF F2 23              *Проверено

byte MEDIA_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xFB, 0xBE, 0xF2, 0x51}; //Нажатие кнопки  67 FF 3E FB BE F2 51                  *Проверено
byte MEDIA_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xF6, 0xBE, 0xF2, 0x4F}; // Отпустили кнопку 67 FF 3A F6 BE F2 4F              *Проверено 

byte NAME_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xF9, 0xDF, 0xF2, 0x4F}; // Нажатие кнопки  67 FF 3E F9 DF F2 4F                  *Проверено
byte NAME_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xF2, 0xDF, 0xF2, 0x4D}; // Отпустили кнопку 67 FF 3A F2 DF F2 4D               *Проверено

byte TEL_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xF7, 0xBE, 0xF2, 0x4D}; // Нажатие кнопки  67 FF 3E F7 BE F2 4D                   *Проверено
byte TEL_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xEE, 0xBE, 0xF2, 0x4B}; // Отпустили кнопку 67 FF 3A EE BE F2 4B                *Проверено

byte LeftReturn_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xE7, 0xDF, 0xF2, 0x3D}; // Нажатие кнопки  67 FF 3E E7 DF F2 3D            *Проверено
byte LeftReturn_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xCE, 0xDF, 0xF2, 0x3B}; //Отпустили кнопку  67 FF 3A CE DF F2 3B         *Проверено

byte Return_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xE1, 0xDF, 0xF2, 0x37}; // Нажатие кнопки  67 FF 3E E1 DF F2 37                *Проверено
byte Return_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xC2, 0xDF, 0xF2, 0x35}; // Отпустили кнопку 67 FF 3A C2 DF F2 35             *Проверено

byte RightReturn_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xDF, 0xBE, 0xBE, 0xF2}; // Нажатие кнопки  67 FF 3E DF BE BE F2           *Проверено
byte RightReturn_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xBE, 0xBE, 0xBE, 0xF2}; // Отпустили кнопку 67 FF 3A BE BE BE F2        *Проверено 

byte Big_Left[8] = {0, 0x67, 0xFF, 0xBA, 0xF4, 0xBE, 0xF2, 0x11}; // Повернули против часовой  67 FF BA F4 BE F2 11         *Проверено   
byte Big_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xFD, 0xBE, 0xF2, 0x53}; // Нажатие кнопки  67 FF 3E FD BE F2 53                   *Проверено  
byte Big_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xFA, 0xBE, 0xF2, 0x51}; // Отпустили кнопку 67 FF 3A FA BE F2 51                *Проверено  
byte Big_Right[8] = {0, 0x67, 0xFF, 0xBE, 0xF5, 0xBE, 0xF2, 0x13}; // Повернули по часовой 67 FF BE F5 BE F2 13             *Проверено  

byte Small_Left[8] = {0, 0x67, 0xFF, 0xFA, 0xF5, 0xBE, 0xF2, 0x31}; // овернули против часовой  67 FF FA F5 BE F2 31        *Проверено   
byte Small_Right[8] = {0, 0x67, 0xFF, 0xFE, 0xF4, 0xBE, 0xF2, 0x33}; // Повернули по часовой 67 FF FE F4 BE F2 33           *Проверено     
byte Small_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0x8F, 0xBE, 0xF2, 0xE5}; // Нажатие кнопки  67 FF 3E 8F BE F2 E5                 *Проверено   
byte Small_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0x1E, 0xBE, 0xF2, 0xE3}; // Отпустили кнопку 67 FF 3A 1E BE F2 E3              *Проверено       

byte LeftUP_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xEB, 0xDF, 0xF2, 0x41}; // Нажатие кнопки  67 FF 3E EB DF F2 41               *Проверено
byte LeftUP_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xD6, 0xDF, 0xF2, 0x3F}; // Отпустили кнопку 67 FF 3A D6 DF F2 3F            *Проверено

byte LeftDown_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xE9, 0xBE, 0xF2, 0x3F}; // Нажатие кнопки  67 FF 3E E9 BE F2 3F             *Проверено
byte LeftDown_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xD2, 0xBE, 0xF2, 0x3D}; // Отпустили кнопку 67 FF 3A D2 BE F2 3D          *Проверено

byte RightUP_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xE5, 0xBE, 0xF2, 0x3B}; // Нажатие кнопки  67 FF 3E E5 BE F2 3B              *Проверено
byte RightUP_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xCA, 0xBE, 0xF2, 0x39}; // Отпустили кнопку 67 FF 3A CA BE F2 39           *Проверено

byte RightDown_DOWN[8] = {0, 0x67, 0xFF, 0x3E, 0xE3, 0xBE, 0xF2, 0x39}; // Нажатие кнопки  67 FF 3E E3 BE F2 39            *Проверено
byte RightDown_1_DOWN[8] = {0, 0x67, 0xFF, 0x3A, 0xC6, 0xBE, 0xF2, 0x37}; // Отпустили кнопку 67 FF 3A C6 BE F2 37         *Проверено


//*****************************************************           Коды лампочек           *******************************************************************

byte NAVI_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x05, 0x10, 0x03, 0x93}; // 10 02 68 01 05 10 03 93                             *Проверено
byte NAVI_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x05, 0x10, 0x03, 0x92}; // 10 02 68 00 05 10 03 92                            *Проверено        

byte INFO_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x06, 0x10, 0x03, 0x94}; // 10 02 68 01 06 10 03 94                             *Проверено
byte INFO_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x06, 0x10, 0x03 , 0x93}; // 10 02 68 00 06 10 03 93                           *Проверено        

byte CAR_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x07, 0x10, 0x03, 0x95}; // 10 02 68 01 07 10 03 95                              *Проверено
byte CAR_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x07, 0x10, 0x03, 0x94}; // 10 02 68 00 07 10 03 94                             *Проверено

byte SETUP_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x08, 0x10, 0x03, 0x96}; // 10 02 68 01 08 10 03 96                            *Проверено
byte SETUP_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x08, 0x10, 0x03, 0x95}; // 10 02 68 00 08 10 03 95                           *Проверено 

byte RADIO_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x18, 0x10, 0x03, 0xA6}; // > 10 02 68 01 18 10 03 A6                          *Проверено 
byte RADIO_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x18, 0x10, 0x03, 0xA5}; // > 10 02 68 00 18 10 03 A5                         *Проверено      

byte MEDIA_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x02, 0x10, 0x03, 0x90}; // 10 02 68 01 02 10 03 90                            *Проверено
byte MEDIA_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x02, 0x10, 0x03, 0x8F}; // 10 02 68 00 02 10 03 8F                           *Проверено   

byte NAME_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x03, 0x10, 0x03, 0x91}; // 10 02 68 01 03 10 03 91                             *Проверено   
byte NAME_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x03, 0x10, 0x03, 0x90}; // 10 02 68 00 03 10 03 90                            *Проверено   

byte TEL_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x04, 0x10, 0x03, 0x92}; // 10 02 68 01 04 10 03 92                              *Проверено
byte TEL_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x04, 0x10, 0x03, 0x91}; // 10 02 68 00 04 10 03 91                             *Проверено

byte LeftUP_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x0A, 0x10, 0x03, 0x98}; // 10 02 68 01 0A 10 03 98                           *Проверено
byte LeftUP_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x0A, 0x10, 0x03, 0x97}; // 10 02 68 00 0A 10 03 97                          *Проверено    

byte LeftDown_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x0B, 0x10, 0x03, 0x99}; // 10 02 68 01 0B 10 03 99                         *Проверено 
byte LeftDown_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x0B, 0x10, 0x03, 0x98}; // 10 02 68 00 0B 10 03 98                        *Проверено     
  
byte RightUP_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x0D, 0x10, 0x03, 0x9B}; // 10 02 68 01 0D 10 03 9B                          *Проверено
byte RightUP_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x0D, 0x10, 0x03, 0x9A}; // 10 02 68 00 0D 10 03 9A                         *Проверено       

byte RightDown_ON[8] = {0x10, 0x02, 0x68, 0x01, 0x0E, 0x10, 0x03, 0x9C}; // 10 02 68 01 0E 10 03 9C                        *Проверено  
byte RightDown_OFF[8] = {0x10, 0x02, 0x68, 0x00, 0x0E, 0x10, 0x03, 0x9B}; // 10 02 68 00 0E 10 03 9B                       *Проверено   


void setup() 
{ 
  
Serial.begin(9600);           // открываем порт на скорости 9600 для передачи в ПК 
  
MMI.begin(9600);              // открываем порт на скорости 9600 для передачи в MMI
} 


void loop() 
{ 
  if (
Serial.available())
    {
      
MMI.write(Serial.read());
    }  
  if (
MMI.available() && MMIcom==0 )
    { 
      
ReadMMI(); 
    }
   else
  {
    
    switch (
otvet)
      {
        case 
1:
          
delay (5);        
          
WriteMMI(Pult_ON, 8);  
        break;
        
        case 
2: 
          
delay (5);
          
WriteMMI(Podsvetka_ON,8);
          
delay (5);
          
WriteMMI(Knopki_ON, 8); 
        break;
        
        case 
3: 
          
delay (5);
          
WriteMMI(NAVI_ON, 8);  
        break;
        case 
4:
          
delay (5); 
          
WriteMMI(INFO_ON, 8);  
        break;
        case 
5: 
          
delay (5);
          
WriteMMI(CAR_ON, 8);  
        break;
        case 
6: 
          
delay (5);
          
WriteMMI(SETUP_ON, 8);  
        break;
        case 
7: 
          
delay (5);
          
WriteMMI(RADIO_ON, 8);  
        break;
        case 
8: 
          
delay (5);
          
WriteMMI(MEDIA_ON, 8);  
        break;
        case 
9: 
          
delay (5);
          
WriteMMI(NAME_ON, 8);  
        break;
        case 
10: 
          
delay (5);
          
WriteMMI(TEL_ON, 8);  
        break;
        case 
11: 
          
delay (5);
          
WriteMMI(LeftUP_ON, 8);  
        break;
        case 
12: 
          
delay (5);
          
WriteMMI(LeftDown_ON, 8);  
        break;
        case 
13: 
          
delay (5);
          
WriteMMI(RightUP_ON, 8);  
        break;
        case 
14: 
          
delay (5);
          
WriteMMI(RightDown_ON, 8);  
        break;
        case 
15: 
          
delay (5);
          
WriteMMI(SETUP_OFF, 8);  
        break;
        case 
16: 
          
delay (5);
          
WriteMMI(CAR_OFF, 8);  
        break;
        case 
17: 
          
delay (5);
          
WriteMMI(TEL_OFF, 8);  
        break;
        case 
18: 
          
delay (5);
          
WriteMMI(LeftUP_OFF, 8);  
        break;
        case 
19: 
          
delay (5);
          
WriteMMI(LeftDown_OFF, 8);  
        break;
        case 
20: 
          
delay (5);
          
WriteMMI(RightUP_OFF, 8);  
        break;
        case 
21: 
          
delay (5);
          
WriteMMI(RightDown_OFF, 8);  
        break;
        case 
22: 
          
delay (5);
          
WriteMMI(RADIO_OFF, 8);  
        break;
        case 
23: 
          
delay (5);
          
WriteMMI(NAVI_OFF, 8);  
        break;
        
        
       
      } 
      
otvet = 0;
  }  
        
   
  if (
MMIcom==1)
    { 
      switch (
ComID) // обрабатываем команды, Основные Case это 1 и 2 , остальные связаны с кнопками. Сейчас я их использую что бы зажигать лампочки возле кнопок.
     //   ************************************************************** впринципе их можно не использовать, либо использовать если нужна обработка длинных нажатий.  
      
{ 
        case 
100: 
          
SerialPrintKey();
          
MMI.write(06);
        break; 
        
        case 
1:    
          
MMI.write(06);
          
otvet = 1;
        break;   
                
        case 
2:  
          
MMI.write(06);
          
otvet = 2;
        break;  
         
        case 
3: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break; 
        
        case 
4: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 3;
        break;
        
        case 
5: 
          
SerialPrintKey();
          
MMI.write(06);
         
        break;  
         
        case 
6: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 4;
        break; 
        
        case 
7: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break; 
        
        case 
8: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 5;
        break;
        
        case 
9: 
          
SerialPrintKey();
          
MMI.write(06);
         
        break;  
         
        case 
10: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 6;
        break;  
        case 
11: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break; 
        
        case 
12: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 7;
        break;
        
        case 
13: 
          
SerialPrintKey();
          
MMI.write(06);
         
        break;  
         
        case 
14: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 8;
        break;
        
        case 
15: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break; 
        
        case 
16: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 9;
        break;
        
        case 
17: 
          
SerialPrintKey();
          
MMI.write(06);
         
        break;  
         
        case 
18: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 10;
        break;  
        
        case 
19: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break; 
        
        case 
20: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 15;
        break;
        
        case 
21: 
          
SerialPrintKey();
          
MMI.write(06);
         
        break;  
         
        case 
22: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 16;
        break; 
        
        case 
23: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break; 
        
        case 
24: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 17;
        break;
        
        case 
25: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 18;
        break;  
         
        case 
26: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break;
        
        case 
27: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 19;
        break;  
         
        case 
28: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 20;
        break;
        
        case 
29: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 21;
        break; 
        
        case 
30: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 22;
        break;
        
        case 
31: 
          
SerialPrintKey();
          
MMI.write(06);
         
        break;  
         
        case 
32: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 23;
        break; 
        
        case 
33: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break; 
        
        case 
34: 
          
SerialPrintKey();
          
MMI.write(06); 
          
otvet = 11;
        break;
        
        case 
35: 
          
SerialPrintKey();
          
MMI.write(06);
         
        break;  
         
        case 
36: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 12;
        break;  
         case 
37: 
          
SerialPrintKey();
          
MMI.write(06);
          
        break;  
        case 
38: 
          
SerialPrintKey();
          
MMI.write(06);
          
otvet = 13;
        break; 
        
        case 
39: 
          
SerialPrintKey();
          
MMI.write(06); 
          
        break;
        
        case 
40: 
          
SerialPrintKey();
          
MMI.write(06);
         
otvet = 14;
        break;  
         
          
       
    }  
   
   
MMIcom = 0;
   
MMI.flush(); 
  } 
}  

void ReadMMI() 
{ 
      
MMIreceiveByte = MMI.read();    //read 1-st byte Если 67 то это пульт  
      
if (MMIreceiveByte==0x67) 
      { 
        
MMIbyte[1]=0x67; 
        for (
int i=2; i <= 7; i++)
          {   
            
MMIbyte[i] = MMI.read();    //read  2,3,4,5,6,7 bytes of data   -  читаем следующие байты 
            
delay(Delay); 
          } 
            
        
ComID=100; // по умолчанию не опознаный код
       
        
if(memcmp(MMIbyte, START_12V, 8) == 0 ){ComID=1;} 
        if(
memcmp(MMIbyte, Pult_ON_Otvet, 8) == 0 ){ComID=2;} 
        if(
memcmp(MMIbyte, NAVI_DOWN, 8) == 0 ){ComID=3;} 
        if(
memcmp(MMIbyte, NAVI_1_DOWN, 8) == 0 ){ComID=4;}    
        if(
memcmp(MMIbyte, INFO_DOWN, 8) == 0 ){ComID=5;} 
        if(
memcmp(MMIbyte, INFO_1_DOWN, 8) == 0 ){ComID=6;}
        if(
memcmp(MMIbyte, CAR_DOWN, 8) == 0 ){ComID=7;} 
        if(
memcmp(MMIbyte, CAR_1_DOWN, 8) == 0 ){ComID=8;} 
        if(
memcmp(MMIbyte, SETUP_DOWN, 8) == 0 ){ComID=9;}  
        if(
memcmp(MMIbyte, SETUP_1_DOWN, 8) == 0 ){ComID=10;}  
        if(
memcmp(MMIbyte, RADIO_DOWN, 8) == 0 ){ComID=11;}
        if(
memcmp(MMIbyte, RADIO_1_DOWN, 8) == 0 ){ComID=12;}
        if(
memcmp(MMIbyte, MEDIA_DOWN, 8) == 0 ){ComID=13;}
        if(
memcmp(MMIbyte, MEDIA_1_DOWN, 8) == 0 ){ComID=14;}
        if(
memcmp(MMIbyte, NAME_DOWN, 8) == 0 ){ComID=15;}
        if(
memcmp(MMIbyte, NAME_1_DOWN, 8) == 0 ){ComID=16;}
        if(
memcmp(MMIbyte, TEL_DOWN, 8) == 0 ){ComID=17;}
        if(
memcmp(MMIbyte, TEL_1_DOWN, 8) == 0 ){ComID=18;}
        if(
memcmp(MMIbyte, LeftReturn_DOWN, 8) == 0 ){ComID=19;}
        if(
memcmp(MMIbyte, LeftReturn_1_DOWN, 8) == 0 ){ComID=20;}
        if(
memcmp(MMIbyte, Return_DOWN, 8) == 0 ){ComID=21;}
        if(
memcmp(MMIbyte, Return_1_DOWN, 8) == 0 ){ComID=22;}
        if(
memcmp(MMIbyte, RightReturn_DOWN, 8) == 0 ){ComID=23;}
        if(
memcmp(MMIbyte, RightReturn_1_DOWN, 8) == 0 ){ComID=24;}
        if(
memcmp(MMIbyte, Big_Left, 8) == 0 ){ComID=25;}
        if(
memcmp(MMIbyte, Big_DOWN, 8) == 0 ){ComID=26;}
        if(
memcmp(MMIbyte, Big_1_DOWN, 8) == 0 ){ComID=27;}
        if(
memcmp(MMIbyte, Big_Right, 8) == 0 ){ComID=28;}
        if(
memcmp(MMIbyte, Small_Left, 8) == 0 ){ComID=29;}
        if(
memcmp(MMIbyte, Small_Right, 8) == 0 ){ComID=30;}
        if(
memcmp(MMIbyte, Small_DOWN, 8) == 0 ){ComID=31;}
        if(
memcmp(MMIbyte, Small_1_DOWN, 8) == 0 ){ComID=32;}
        if(
memcmp(MMIbyte, LeftUP_DOWN, 8) == 0 ){ComID=33;}
        if(
memcmp(MMIbyte, LeftUP_1_DOWN, 8) == 0 ){ComID=34;}
        if(
memcmp(MMIbyte, LeftDown_DOWN, 8) == 0 ){ComID=35;}
        if(
memcmp(MMIbyte, LeftDown_1_DOWN, 8) == 0 ){ComID=36;}
        if(
memcmp(MMIbyte, RightUP_DOWN, 8) == 0 ){ComID=37;}
        if(
memcmp(MMIbyte, RightUP_1_DOWN, 8) == 0 ){ComID=38;}
        if(
memcmp(MMIbyte, RightDown_DOWN, 8) == 0 ){ComID=39;}
        if(
memcmp(MMIbyte, RightDown_1_DOWN, 8) == 0 ){ComID=40;}
      
        
MMIcom=1; 
      } 
      else 
      { 
        
MMIcom=0; 
      } 
      
MMI.flush(); 
} 

void SerialPrintKey()  //Вывод команды в сериал порт , тут можно привести ее к привычному для iCar виду
{ 
    for (
int x=1; x <= 7; x++){   
            
Serial.print(MMIbyte[x], HEX); 
            
Serial.print(" "); 
        } 
    
Serial.println(); 
} 

void WriteMMI(byte Mas[], int Byte)   //  Процедуры отправки команд на пульт 
{   
          for (
int i=0; i<Byte; i++) { 
          
MMI.write(Mas[i]);
          
delay(2); 
} 
} 
и видео того что получилось http://youtu.be/TGI83w3t2F8

filinmd вне форума   Ответить с цитированием