Бортовой компьютер для Опель Зафира.

viki13viki
Offline
Зарегистрирован: 14.11.2016
Доброе время суток. Делаю проэкт - Бортовой компьютер для Опель Зафира А 2001, Y20DTH дизель. Застрял на адаптерах K-Line. Уже месяц бьюсь. Сделал шесть разных адаптеров. 1. на МАХ232 (понял что он не TTL a RS232)   2. на 4N25    3. на 4N35    4. на BC547    5. на MC33290    6. на L9637D ( на него была последняя надежда что авто заговорит). Не один из них не разговорил машину. Толи адаптеры не верно работают, толи нет нормального скетча для разговора с авто, может нужно правильную инициализацию и запрос написать в скетче. Железо - мега 2560 + 6 адаптеров + OBD2 c Iso9141-2 + TFT 3,95(но это потом).
.......................................
Схемы прилагаю. Описание напряжений.
1.МАХ232 
только питание 12в
   К-Line : +9,6v   RX:-8,25v   TX:0v
питание 12в + ардуино
   К-Line : 0v      RX:+5,4v    TX:+4,65v
тест с COMMTEST скачки напряжения
   К-Line : 0v-(+9,14v)      RX:+5,4v-(-0,75v)    TX:+4,65v-(-0,56v)
 
.....................................................................
2.4N25 
только питание 12в
   К-Line:+11,72v   RX:0v   TX:0v
питание 12в + ардуино
   К-Line:+11,5v    RX:+2,98v    TX:+4,65v
тест с COMMTEST скачки напряжения
   К-Line:+11,5v-(+4,43v)    RX:+2,98v-(+2,28v)    TX:+4,65v-(0v)
.......................................................................
3.4N35 
только питание 12в
   К-Line:0v   RX:0v   TX:0v
питание 12в + ардуино
   К-Line:+12,22v    RX:+0,15v    TX:+4,58v
тест с COMMTEST скачки напряжения
   К-Line:+12,22v-(0v)    RX:+0,15v-(+4,65v)    TX:+4,58v-(0v)
..........................................................................
4.BC547 
только питание 12в
   К-Line:0v   RX:-1,4v   TX:0v
питание 12в + ардуино
   К-Line:+8,87v      RX:+5,29v    TX:+4,65v
тест с COMMTEST скачки напряжения
   К-Line:+8,87v-(0v)      RX:+5,29v-(0v)    TX:+4,65v-(0v)
..........................................................................
5.MC33290
только питание 12в
   К-Line:+10,5v   RX:+10,46v   TX:0v
питание 12в + ардуино
   К-Line:+4,68v      RX:+4,44v    TX:+4,68v
тест с COMMTEST скачки напряжения
   К-Line:+4,68v-(+4,68v)      RX:+4,44v-(+4,44v)    TX:+4,68v-(+1,01v)
...............................................................................
6.L9637 
только питание 12в
   К-Line:+9,5v   RX:+4,96v   TX:+4,91v
питание 12в + ардуино
   К-Line:+9,52v      RX:+4,63v    TX:+4,63v
тест с COMMTEST скачки напряжения
   К-Line:+9,52v-(+9,37v)      RX:+4,63v-(+4,63v)    TX:+4,63v-(+1,03v)
...................................................................................
Покажите где я затупил. я уже и запутался во всем. Укажите какой из адаптеров работает правильно и может кто-то может подкинуть скетч для проверки, например чтобы я его загрузил в ардуино и подключил к авто и чтобы я хоть что-то уже увидел в терминале, хоть какие то ответы от авто. Как закончу проэкт, выложу его полностью с отчетом. Я только начинал работать с ардуино, прошу не пинать если что не так сказал. Спасибо. 
viki13viki
Offline
Зарегистрирован: 14.11.2016

извените ошибочка вышла в 6 адаптере

6.L9637 

только питание 12в

К-Line:+12,4v RX:+5,01v TX:+4,96v

питание 12в + ардуино

К-Line:+12,4v RX:+4,69v TX:+4,69v

тест с COMMTEST скачки напряжения

К-Line:+12,4v-(+2,58v) RX:+4,69v-(+4,18v) TX:+4,63v-(+1,00v)

uu4juw
Offline
Зарегистрирован: 17.01.2017

Попробуйте собрать K-line адаптер на микросхеме  l9637D

uu4juw
Offline
Зарегистрирован: 17.01.2017

Вот есчё схема для работы через com порт 

http://cxema21.ru/publ/avtoehlektronika/k_l_line_adapter_na_max232_i_l9637d/25-1-0-215

если надо через usb выкидывайте MAX 232 и ставьте FT232RL

viki13viki
Offline
Зарегистрирован: 14.11.2016

Спасибо. Но я уже собрал на l9637d, один из шести собраны, фото и схемы выше. И мне не юсб и не сом. У меня связка obd2-->adapter-->mega2560--> IDE por(в будущем экран 3.95).

uu4juw
Offline
Зарегистрирован: 17.01.2017

пришлите схему в лучшем качестве на uu4juw собака yandex.ru на схеме очень плохо видно  

viki13viki
Offline
Зарегистрирован: 14.11.2016

Ок. Завтра вышлю. У меня все на рабочем компе.

uu4juw
Offline
Зарегистрирован: 17.01.2017

ок, по возможности гляну, если на работу не выдернут на выходных

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

и так, подправил схему, добавил кандеры .

адаптер проверял разными способами, программами для ком портов, так же напряжение и скачки напряжений при запросе. эхо тоже работает. короче адаптер вроде как работет корректно. значит пробелма в инициализации.

нарыл на одном форуме скетч. у человека тоже мега2560 и L9637 и у него с этим скетчем проходит инициализация. у меня же машина упорно молчит, обидилась наврерно :). выкладываю скетч. может кто посмотрит и чета подскажет

//#include <SoftwareSerial.h> 

#define rxPin 3  
#define txPin 2 
#define K_IN  17 
#define K_OUT 18 

#define READ_ATTEMPTS 125 

//SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin); 
char command;                                                 //Terminal Commands 

char pid_reslen[] =                                         //PID Lengths 
{ 
  // pid 0x00 to 0x1F 
  4,4,2,2,1,1,1,1,1,1,1,1,2,1,1,1, 
  2,1,1,1,2,2,2,2,2,2,2,2,1,1,1,4, 

  // pid 0x20 to 0x3F 
  4,2,2,2,4,4,4,4,4,4,4,4,1,1,1,1, 
  1,2,2,1,4,4,4,4,4,4,4,4,2,2,2,2, 

  // pid 0x40 to 0x4E 
  4,8,2,2,2,1,1,1,1,1,1,1,1,2,2 
}; 

long tempLong; 
char str[40]; 

void setup()  { 
  pinMode(rxPin, INPUT); 
  pinMode(txPin, OUTPUT); 
  digitalWrite(txPin, HIGH); 
  delay(500); 
  pinMode(K_IN, INPUT); 
  pinMode(K_OUT, OUTPUT); 
  pinMode(13, OUTPUT); 
  Serial.begin(19200); 
  Serial.println("-=Arduino OBD2 Terminal=-"); 
} 

void loop() { 
  command = Serial.read(); 
  switch (command) { 
  case '1': 
    obdConnect(); 
    break; 
  case '2': 
    Serial.println("MIL Selected"); 
    get_pid(0x01, str, &tempLong); 
    break; 
  case '3': 
    Serial.println("RPM Selected"); 
    get_pid(0x03, str, &tempLong); 
    break; 
  case '4': 
    Serial.println("MAF Selected"); 
    get_pid(0x10, str, &tempLong); 
    break; 
  case '5': 
    Serial.println("Volt"); 
    get_pid(0x14, str, &tempLong); 
    break; 

  } 
} 


int obdConnect(){ 
  Serial.println("Attempting ECU initialization..."); 
  if (iso_init() == 0){ 
    Serial.println("PASS"); 
    return 0; 
  } 
  else{ 
    Serial.println("FAIL"); 
    return 1; 
  } 
} 


byte iso_init() 
{ 
  byte b; 

  //serial_tx_off();                             //disable UART so we can "bit-Bang" the slow init. 
  //serial_rx_off(); 
  Serial1.end();
  Serial2.end();
  
  
  delay(3000);                                 //k line should be free of traffic for at least two secconds. 
   
   
  digitalWrite(K_OUT, HIGH);                // drive K line high for 300ms 
  delay(300); 

  // send 0x33 at 5 bauds 
   
  digitalWrite(K_OUT, LOW);                  // start bit 
  delay(200); 

  b=0x33; 
  for (byte mask = 0x01; mask != 0; mask <<= 1) 
  { 
    if (b & mask)  
      digitalWrite(K_OUT, HIGH);  
    else 
      digitalWrite(K_OUT, LOW); 
    delay(200); 
  } 

  digitalWrite(K_OUT, HIGH);                // stop bit + 60 ms delay 
  delay(260); 

   
  Serial1.begin(10400);                        // switch now to 10400 bauds 
  Serial2.begin(10400);
   
  byte i=0;                                    // wait for 0x55 from the ECU (up to 300ms) 
  while(i<3 && !iso_read_byte(&b)){ 
        i++; 
  } 
  Serial1.write(b); 
  if(b != 0x55){ 
        return 1; 
  } 
   
  iso_read_byte(&b); 
  Serial.print("In Synch: ");
  Serial.println(b, HEX);                    // wait for kw1 and kw2 
  
  iso_read_byte(&b); 
  Serial.print("In KW1: ");
  Serial.println(b, HEX); 
  
  iso_read_byte(&b); 
  Serial.print("In KW2: ");
  Serial.println(b, HEX);
  
  Serial.print ("Out ~KW2: "); 
  //Serial.println(~b, HEX);
  iso_write_byte(~b);                         // send ~kw2 (invert of last keyword) 
  //delay (10);
  iso_read_byte(&b); 
  //Serial.print ("In Addr: ");
  Serial.println(b, HEX);          // ECU answer by 0xCC (~0x33) 
  if(b!=0xCC) 
    return 1; 
   
  return 0; 
} 



void serial_rx_off() { 
  UCSR0B &= ~(_BV(RXEN0));   
} 

void serial_tx_off() { 
   UCSR0B &= ~(_BV(TXEN0));   
   delay(20);                                 //allow time for buffers to flush 
} 

void serial_rx_on() { 
  Serial.begin(10400); 
} 


boolean iso_read_byte(byte * b) 
{ 
  int readData; 
  boolean success = true; 
  byte t=0; 

  while(t != READ_ATTEMPTS  && (readData=Serial1.read())==-1) { 
    delay(1); 
    t++; 
  } 
  if (t>=READ_ATTEMPTS) { 
    success = false; 
  } 
  if (success) 
  { 
    *b = (byte) readData; 
  } 

  return success; 
} 

void iso_write_byte(byte b) 
{ 
  //serial_rx_off(); 
  Serial1.write(b); 
  delay(15);     
  //serial_rx_on(); 
} 


byte iso_checksum(byte *data, byte len) 
{ 
  byte i; 
  byte crc; 

  crc=0; 
  for(i=0; i<len; i++) 
    crc=crc+data[i]; 

  return crc; 
} 

byte iso_write_data(byte *data, byte len) 
{ 
  byte i, n; 
  byte buf[20]; 

                      // ISO header 
  buf[0]=0x68; 
  buf[1]=0x6A;        // 0x68 0x6A is an OBD-II request 
  buf[2]=0xF1;        // our requesterХs address (off-board tool) 


  // append message 
  for(i=0; i<len; i++) 
    buf[i+3]=data[i]; 

  // calculate checksum 
  i+=3; 
  buf[i]=iso_checksum(buf, i); 

  // send char one by one 
  n=i+1; 
  for(i=0; i<n; i++) 
  { 
    iso_write_byte(buf[i]); 
  } 

  return 0; 
} 

// read n byte(s) of data (+ header + cmd and crc) 
// return the count of bytes of message (includes all data in message) 
byte iso_read_data(byte *data, byte len) 
{ 
  byte i; 
  byte buf[20]; 
  byte dataSize = 0; 

  for(i=0; i<len+6; i++) 
  { 
    if (iso_read_byte(buf+i)) 
    { 
      dataSize++; 
    } 
  } 
   
  memcpy(data, buf+5, len); 
  delay(55);    //guarantee 55 ms pause between requests 
  return dataSize; 
} 

boolean get_pid(byte pid, char *retbuf, long *ret) 
{ 
  byte cmd[2];                                                    // to send the command 
  byte buf[10];                                                   // to receive the result 
   
  byte reslen = pid_reslen[pid];                                 // receive length depends on pid 
  
  cmd[0]=0x01;                                                    // ISO cmd 1, get PID 
  cmd[1]=pid; 
   
  iso_write_data(cmd, 2);                                         // send command, length 2 
   
  if (!iso_read_data(buf, reslen))                                 // read requested length, n bytes received in buf 
  { 
      Serial.println("ISO Read Data Error."); 
      return false;  
  } 

  *ret=buf[0]*256U+buf[1];                                         // a lot of formulas are the same so calculate a default return value here 
   
  Serial.print("Return Value "); 
  Serial.print(pid, HEX); 
  Serial.print(" : "); 
  Serial.println(*ret, DEC); 
   
  return true; 
}  

правда не пойму почему закоментирована библиотека софтвара и еще некоторые строки, и почему он использовал RX1 и RX2 а не ТХ1 и RХ1 ........ но главное что у него инициализируется. у меня же машина молчит. дальше ....

логический 0 и1 уровни напряжения. значит напряжение должно быть на к линии -логическая "1" это от 9.6в до 12в и логический "0" от 2.4в до 0в. ардуино на ТХ и RХ логическая "1" от 3.5в до 5в и логический "0" от 1.5в до 0в. мой адаптер справляется на УРА.

и инициализация 

 

описание инициализации
1. отправляем 33h на К-линию на скорости 5boud, что значит 5 бит в секунду
2. ответ ЭБУ будет 55h на скорости 10400 бит в секунду(boud)
3. ЭБУ посылает ключевое солов 1, это 08h
4. ЭБУ посылает ключевое слово 2, это 08h
5. OBD2 ответ кода читателя, с которым обратное последовательное слово F7h
6. ответ ЭБУ CCh
7. теперь можно посылать запросы по схеме ниже
извенити перевел с английского как мог

вроде как в скетче вся инициализация соблюдена. какие-то мысли господа?

viki13viki
Offline
Зарегистрирован: 14.11.2016

продолжаем штудировать инициализацию. произошла непонятка. подключил ОПКОМ. показывает протокол kwp2000 и при инициализации показало keyword 2027 protocol, keyword1 - 6B , keyword2 - 8F . по утверждению документов это протокол ISO14230. но этот протокол использовался на машинах с 2003 года, а моя машина 2001. вот выдержка

ISO14230-4 (KWP2000)

Very common protocol for 2003+ vehicles using ISO9141 K-Line. Uses pin 7.

Two variants of ISO14230-4 exist. They differ only in method of communication initialization. All use 10400 bits per second.

  • ISO 14230-4 KWP (5 baud init,10.4 Kbaud)
  • ISO 14230-4 KWP (fast init,10.4 Kbaud)

ISO9141-2

Older protocol used mostly on European vehicles between 2000 and 2004. Uses pins 7 and optionally 15.

как такое возможно? разве что машине мозги меняли с какой-то зафиры 2003-2004 года. фантастика..... продолжаю штурмовать. у этого протокола другая инициализация, даже две, быстрая и медленная. попробую с ними...... так же нарыл оф документ по ISO 14230 и там есть 

как раз то что мне показал ОПКОМ  keyword 2027 protocol, keyword1 - 6B , keyword2 - 8F . странности продолжаются....

но вот нашел еще однин документ и в нем с 2000 года уже ISO 14230 

 

  • 1987: Introduction of diagnostics, one K-Line for all ECU‘s, ISO 9141-1, RB-KW71, blink code
  • 1989: Opel Keyword 81
  • 1992: Opel Keyword 82
  • 1994: 4 separate K-Lines SAE J 1962-Diagnostic Connector (ISO 15031-3)
  • 1996: KWP 2000, Flash Programming
  • 1997: OBD II: ISO 9141-2, US-Cadillac Catera
  • 2000: EOBD: ISO 14230-4 Diagnostics via KWP 2000
  • 2002: Diagnostics on CAN incl. EOBD
  • так что возможно что у меня ISO 14230 . учим дальше......
viki13viki
Offline
Зарегистрирован: 14.11.2016

Доброе время суток. Извеняюсь за долгое отсутсвие, дела, заботы. И так..... я продвинулся вперед. выяснил что действительно у меня KWP 2000. выяснил подсоединив тестер к К-линии всесте с ОП-КОМ и посмотрел скачки напряжения они оказались быстрыми и короткими и не падали ниже 11 вольт. вывод , быстарая инициализация, так как при медленнной падает до 3 вольт (проверено). едем дальше..... вывод: Fast init KWP2000. инициализация происходит так:

Initial state – Tidle 300ms  //задержка на 300мс в "1"
Tlow for 25ms //задержка на 25мс в "0"
Thigh for 25ms //задержка на 25мс в "1"
10400 Baud. //переходим на скорость 10400 
Start communication request from Tester to ECU  //отправляем сообщение для связи
Start communication response from ECU to Tester. //принимаем ответ положительный или отрицательный
Normal Communication/Diagnostics  //отправляем сообщение для входа в режим диагностики
Теперь мы можем посылать запросы (PID)
 
Что касается адаптера. Остановился на L9637D. Работает на ура..... Проверить или вообще адаптер работает с помощью программы OpenDiagFree. В ардуино заливаем пустой скетч и конектим ТХ и RХ в порт 0 и 1. В настройках выбрать порт и проверить, если выдает на таком-то порту найден адаптер, значит все ништяк, если нет попробуйте поменять ТХ и RХ местами (может перепутали). 
 
Едем дальше.......
Теперь проблема накопать или нарисовать скетч.... Для начала нужно узнать адрес ЭБУ и Адаптера.
Делаем так. Берем программу FindECU (найдете на просторах инета). Заливаем пустой скетч конектим ТХ и RХ в порт 0 и 1, цепляем адаптер к машине и к компу, включаем зажигание и жмем сканировать. когда ЭБУ найдется вы это увидите на экране, потом в папке с программой найдете лог, вот в нем и будет вся инфа. И так у меня выдало следующее:
open com 3
TXD(ЭХО): 81 31 F1 81 24  //сообщение для соединения
         RXD: 83 F1 31 C1 E9 8F DE //положительный ответ С1
Fast init OK  //быстрая инициализация
ECUADOR=31 KW1=E9 KW2=8F // адрес ЭБУ и два ключа (чуток странно OP-COM выдавал KW1=6В KW2=8F)
TXD(ЭХО): 81 31 F1 3E E1  //режим присутствия адаптера, на сколько понял чтобы не рвалась связь
         RXD: 81 F1 31 7E 21  //положительный ответ 7Е
Так же вычитал в доках про kwp2000 что запрос на режим диагностики это "10" а значит наш запрос на диагностику будет выглядеть так : 81 31 F1 10 24 (81+31+F1+10=24 контрольная сумма). Вроде бы все есть.
Ну что же, теперь скетч.... много их перебрал наверно с сотню, и попал на один который сработал. 
Первый вариант (интересует именно он, не налеплено куча всего и четко работает, один раз выдает ответ)
#define TX 18


byte message[6] = {
 0x81,0x31,0xF1,0x81,0x24};
int length = 5;
int counter;
int mode;

void setup() {
 Serial.begin(57600);
 pinMode(TX, OUTPUT);
}

void loop() {
 fastinit();
 sendrequest();
 //delay(50);
 recievedata();
}

void fastinit(){
 if (!mode) {
   digitalWrite (TX, HIGH);  // makes K-line high 3
   delay(2000);             // wait for K-line to be clear 3
   digitalWrite (TX, LOW);  // makes K-line low  3
   delay(25);
   digitalWrite (TX, HIGH); // makes K-line high  3
   delay(25);               //last delay before first message
   Serial1.begin(10400);  // baud rate of the OBD
   mode++;
 }
}
void sendrequest() {
 if (counter < length) {
   Serial1.write(message[counter]);
   // delay(1);
   counter++;
 }
}
void recievedata() {
 if (Serial1.available()){
   Serial.print(Serial1.read(),HEX);
 }
}

и второй вариант ( не очень интересует, много всего и он делает все циклично, по новой и поновой и......)


#define TX 18

//variables
int dotdelay = 1000;
int timeout = 10000;
int timeold;



int messagelength = 5;
byte message[5] = {
  0x81,0x31,0xF1,0x81,0x24
};
int responselength = 7;
byte message_response[7] = {
  0x83,
  0xF1,
  0x31,
  0xC1,
  0x9E,
  0x8F,
  0xDE
};


int mode;


void setup() {
    Serial.begin(57600);
  pinMode(TX, OUTPUT);
}

void loop() {
  fastinit();
  sendrequest();
  recievedata();
}

void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  // makes K-line high 3
    Serial.println("Set K-Line High");
    delay(3000);             // wait for K-line to be clear 3
    digitalWrite (TX, LOW);  // makes K-line low  3
    Serial.println("Set K-Line Low");
    delay(25);
    digitalWrite (TX, HIGH); // makes K-line high  3
    Serial.println("Set K-Line High");
    delay(25);               //last delay before first message
    Serial1.begin(10400);  // baud rate of the OBD
    Serial.println("starting serial comunication");
    mode++;
  }
}

void sendrequest() {
  Serial.println("send request");
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    Serial1.write(message[i]);
    Serial.print("sending data: ");
    Serial.println(message[i], HEX);
  } 
  Serial.println("request sent");
}

void recievedata() {
  int i = 0;
  int req = 0;
  int data = 0;
  int dataok = 0;
  Serial.println("waiting for data");
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("TIMEOUT");
      mode = 0;
      Serial1.end();
      return;     
    }
    if (Serial1.available()) {
      byte inByte = Serial1.read();
      Serial.print("recieving data: ");
      Serial.println(inByte,HEX);
      if (inByte == message[i]) {
        i++;
        Serial.println("OK");
        if (messagelength == i) {
          Serial.println("request ok");
          req++;
          i = 0;
        }
      }
      if ((req) & (inByte == message_response[i])) {
        i++;
        Serial.println("OK");
      }
      if (responselength == i) {
        data++;
        i = 0;
        dataok++;
        Serial.println("Communication OK");
      }
    }
  }
}

Значит так, что делает этот скетч, он проходит инициализацию и получает положительный ответ на первое сообщение. Теперь вот на чем я застрял. Как я не пытался в этот скетч влепить второе сообщение для для присутствия адаптера, ничего не работает. Вот пробовал так:


#define TX 18
int length = 5; 
int counter; 
int mode;

byte message[6] = { 0x81,0x31,0xF1,0x81,0x24}; 
byte message2[6] = { 0x81,0x31,0xF1,0x3E,0xE1}; 

void setup() { 
  Serial.begin(57600); 
  pinMode(TX, OUTPUT); 
 } 

void loop() { 
  fastinit(); 
  sendrequest(); 
  recievedata(); 
  sendpresent(); 
  recievedata(); 
} 

void fastinit(){
    if (!mode) { 
    digitalWrite (TX, HIGH); // makes K-line high 3 
    delay(360); // wait for K-line to be clear 3 
    digitalWrite (TX, LOW); // makes K-line low 3 
    delay(25); 
    digitalWrite (TX, HIGH); // makes K-line high 3 
    delay(25); //last delay before first message 
    Serial1.begin(10400); // baud rate of the OBD 
    mode++; 
   } 
  } 

void sendrequest() { 
  if (counter < length) { 
  Serial1.write(message[counter]);
  // delay(1); 
  counter++; 
  } 
} 

void sendpresent() { 
  if (counter < length) { 
  Serial1.write(message2[counter]); 
  // delay(1); 
  counter++; 
  } 
} 

void recievedata() { 
  if (Serial1.available()){ 
  Serial.print(Serial1.read(),HEX); 
  } 
}

 

добавил byte message2[6] и void sendpresent() 

 должен получить положительный 8131F1812483F131C1E98FDE где "С1" положительный ответ и на второе сообщение 8131F13EE181F1317E21 где "7E" положительный ответ. но теперь у меня не приходит положителный ответ на первый пакет ни на второй пакет ,  приходит вот это 8131F13E24 и почему-то в конце контрольная сумма от первого пакета. Что-то не так.....

 
Подскажите кто нибудь, сделайте конкретный пример с отправкой двух сообщений. Как их правильно добавить.  Буду очень признателен за помощь.
 
viki13viki
Offline
Зарегистрирован: 14.11.2016

Похоже я сам с собой тут разговариваю, ну и ладно, может мой труд пригодится таким как я, новичкам. Я все таки добился рабочего скетча, теперь я получаю ответы на все посылы.

Отправляю 81 31 F1 81 24 получаю 83 F1 31 C1 E9 8F DE //запрос соединения где С1 соединение ОК

Отправляю 81 31 F1 3E E1 получаю 81 F1 31 7E 21           //запрос присутсвия где 7E присутсвие ОК 

что такое //запрос присутсвия где 7E присутсвие ОК ? вот ответ : Если обмен данными с клиентом в течение длительного времени не происходит, блок управления (ECU) автоматически выходит из текущего сеанса и возвращается к «сеансу по умолчанию» назад. Поэтому существует дополнительная услуга, целью которой является сигнализация устройству о том, что клиент все еще присутствует.

вот скетч с коментариями......

#define TX 18  //пин отправки данных в К-линию (Serial1- TX 18,RX 19).подключение RX-TX,TX-RX
int mode;

int dotdelay = 1000;      //вроде как не нужно, но пока оставил
int timeout = 10000;      //время ожидания данных в мили секунд
int timeold;              //относится к ожиданию данных
int messagelength = 5;    //длинна отправляемого сообщения


byte message1[5] = {0x81,0x31,0xF1,0x81,0x24};//запрос на соединение
byte message2[5] = {0x81,0x31,0xF1,0x3E,0xE1};//запрос присутсвия (что бы не терялась связь)

void setup() {
    Serial.begin(57600);    //скорость порта компа
    pinMode(TX, OUTPUT);    //пин отправки даннх в К-линию
}

void loop() {
  fastinit();      //инициализация
  sendrequest();   //запрос на подключение
  delay(50);       //обязательная задержка на 50мс, иначе не работает
  sendpresent();   //запрос присутсвия
  recievedata();   //получение ответов
}

void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  
    delay(360);             
    digitalWrite (TX, LOW);  
    delay(25);
    digitalWrite (TX, HIGH); 
    delay(25);              
    Serial1.begin(10400); 
    Serial.println("starting serial comunication");
    mode++;
  }
}
//запрос на соединение
void sendrequest() {    
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    Serial1.write(message1[i]);
    Serial.print(message1[i],HEX);
  } 
}
//запрос присутсвия (что бы не терялась связь)
void sendpresent() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    Serial1.write(message2[i]);
    Serial.print(message2[i],HEX);
  } 
}

//проверка получение данных из авто, если данные перестают 
//поступать идет ожидание 10000мс, если нет то идет перезагрузка void loop(), 
//тоесть новая инициализация
void recievedata() {
  int i = 0;
  int dataok = 0;
  Serial.println("   waiting for data");  
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("   TIMEOUT");  
      mode = 0;
      Serial1.end();
      return;     
    }
    if (Serial1.available()) {
      byte inByte = Serial1.read();
      Serial.print("");
      Serial.print(inByte,HEX);       //получение данных
    }
    if (Serial.available()) {
      byte inByte = Serial.read();
      Serial1.print("");
      Serial1.print(inByte,HEX);    //отправка данных из порта
    }
  }
}

Теперь изучаю как выйти на опрос датчиков. сделал запрос 82 31 F1 01 00 A5 чтобы узнать потдерживаемые параметры, пока глухо. В терминале выводит  83F317F11136 (где 7F это ошибка запроса) . Штудирую дальше. Если кто может подсказать как сделать запрос хотябы для температуры охлаждающей жидкости, чтобы уловаить суть...... буду очень признателен.

viki13viki
Offline
Зарегистрирован: 14.11.2016

Привет всем. продолжаю разговор сам с собой. Значит так, по способу описаному выше нашел два адреса это 28 (блок ABS) и 31 (блок напряжений). А блок мотора так и не нашелся. Я подцепил OP-COM в ардуино залил написаный скетч для прослушки К-линии и подцепился в OP-COMе на К-линию и массу. В итоге он подцепился по адресу 11 (81 11 F1). Обрадывался написал скетч инициализации а адаптер не инитится. Долго мучился и вспонил что kwp2000 имеет fast init и fast init 5baud, никогда не мог подумать что блоки могут иметь разную инициализацию. Написал скетч fast init 5baud и о чудо я зацепился, попробовал температуру посмотреть        82  11 F1 01 05 8A и сново чудо, получил 83 11 F1 41 05 4C 17, где 4С это температура , формула расчета это: 4С(HEX)=76(DEC), 76-40=36 градусов.   Вот как-то так. следующая задача это найти все параметры , нарисовать скетч и вывести это все на экран TFT 3,95. 

Выкладываю все скетчи:

Написал скетч для проверки всех 220-и возможных адресов. просто заливаете в ардуино, цепляетесь к ОБД2 и ждете 15 минут, в сериале порта вы увидите к каким блокам он подцепился, будет что-то типи 83 F1 31 C1 E9 8F DE , где С1 это положительный ответ,смотрите перед ответом какой запрос и с каким адресом был отправлен. Так же не забываем что он может найти как у меня разные блоки но не моторный блок, возможно что у вас он тоже на fast init 5baud, не растраиваемся и пробуем 5baud c адресами: с 10 до 17 вроде как вычитал что это моторные адреса, поищите в инете возможные варианты адресов к вашей машине. Этот скетч только для fast init. 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;

//-----variables------------------------------------------------------------------
int dotdelay = 1000;
int timeout = 4000;
int timeold;
int messagelength = 5;
//int messagelength2 = 6;
//int messagelength3 = 8;

//-----PAQUETES HEX---------------------------------------------------------------

byte message1[5] = {0x81,0x01,0xF1,0x81,0xF4};             //COMUNICACION// 
byte message2[5] = {0x81,0x02,0xF1,0x81,0xF5};             //COMUNICACION//
byte message3[5] = {0x81,0x03,0xF1,0x81,0xF6};             //COMUNICACION//
byte message4[5] = {0x81,0x04,0xF1,0x81,0xF7};             //COMUNICACION//
byte message5[5] = {0x81,0x05,0xF1,0x81,0xF8};             //COMUNICACION//
byte message6[5] = {0x81,0x06,0xF1,0x81,0xF9};             //COMUNICACION//
byte message7[5] = {0x81,0x07,0xF1,0x81,0xFA};             //COMUNICACION//
byte message8[5] = {0x81,0x08,0xF1,0x81,0xFB};             //COMUNICACION// 
byte message9[5] = {0x81,0x09,0xF1,0x81,0xFC};             //COMUNICACION//
byte message10[5] = {0x81,0x10,0xF1,0x81,0x03};             //COMUNICACION//
byte message11[5] = {0x81,0x11,0xF1,0x81,0x04};             //COMUNICACION//
byte message12[5] = {0x81,0x12,0xF1,0x81,0x05};             //COMUNICACION//
byte message13[5] = {0x81,0x13,0xF1,0x81,0x06};             //COMUNICACION//
byte message14[5] = {0x81,0x14,0xF1,0x81,0x07};             //COMUNICACION//
byte message15[5] = {0x81,0x15,0xF1,0x81,0x08};             //COMUNICACION// 
byte message16[5] = {0x81,0x16,0xF1,0x81,0x09};             //COMUNICACION//
byte message17[5] = {0x81,0x17,0xF1,0x81,0x0A};             //COMUNICACION//
byte message18[5] = {0x81,0x18,0xF1,0x81,0x0B};             //COMUNICACION//
byte message19[5] = {0x81,0x19,0xF1,0x81,0x0C};             //COMUNICACION//
byte message20[5] = {0x81,0x20,0xF1,0x81,0x13};             //COMUNICACION//
byte message21[5] = {0x81,0x21,0xF1,0x81,0x14};             //COMUNICACION//
byte message22[5] = {0x81,0x22,0xF1,0x81,0x15};             //COMUNICACION// 
byte message23[5] = {0x81,0x23,0xF1,0x81,0x16};             //COMUNICACION//
byte message24[5] = {0x81,0x24,0xF1,0x81,0x17};             //COMUNICACION//
byte message25[5] = {0x81,0x25,0xF1,0x81,0x18};             //COMUNICACION//
byte message26[5] = {0x81,0x26,0xF1,0x81,0x19};             //COMUNICACION// 
byte message27[5] = {0x81,0x27,0xF1,0x81,0x1A};             //COMUNICACION//
byte message28[5] = {0x81,0x28,0xF1,0x81,0x1B};             //COMUNICACION//
byte message29[5] = {0x81,0x29,0xF1,0x81,0x1C};             //COMUNICACION//
byte message30[5] = {0x81,0x30,0xF1,0x81,0x23};             //COMUNICACION// 
byte message31[5] = {0x81,0x31,0xF1,0x81,0x24};             //COMUNICACION//
byte message32[5] = {0x81,0x32,0xF1,0x81,0x25};             //COMUNICACION//
byte message33[5] = {0x81,0x33,0xF1,0x81,0x26};             //COMUNICACION//
byte message34[5] = {0x81,0x34,0xF1,0x81,0x27};             //COMUNICACION// 
byte message35[5] = {0x81,0x35,0xF1,0x81,0x28};             //COMUNICACION//
byte message36[5] = {0x81,0x36,0xF1,0x81,0x29};             //COMUNICACION//
byte message37[5] = {0x81,0x37,0xF1,0x81,0x2A};             //COMUNICACION//
byte message38[5] = {0x81,0x38,0xF1,0x81,0x2B};             //COMUNICACION//
byte message39[5] = {0x81,0x39,0xF1,0x81,0x2C};             //COMUNICACION//
byte message40[5] = {0x81,0x40,0xF1,0x81,0x33};             //COMUNICACION//
byte message41[5] = {0x81,0x41,0xF1,0x81,0x34};             //COMUNICACION// 
byte message42[5] = {0x81,0x42,0xF1,0x81,0x35};             //COMUNICACION//
byte message43[5] = {0x81,0x43,0xF1,0x81,0x36};             //COMUNICACION//
byte message44[5] = {0x81,0x44,0xF1,0x81,0x37};             //COMUNICACION//
byte message45[5] = {0x81,0x45,0xF1,0x81,0x38};             //COMUNICACION//
byte message46[5] = {0x81,0x46,0xF1,0x81,0x39};             //COMUNICACION//
byte message47[5] = {0x81,0x47,0xF1,0x81,0x3A};             //COMUNICACION//
byte message48[5] = {0x81,0x48,0xF1,0x81,0x3B};             //COMUNICACION// 
byte message49[5] = {0x81,0x49,0xF1,0x81,0x3C};             //COMUNICACION//
byte message50[5] = {0x81,0x50,0xF1,0x81,0x43};             //COMUNICACION//
byte message51[5] = {0x81,0x51,0xF1,0x81,0x44};             //COMUNICACION//
byte message52[5] = {0x81,0x52,0xF1,0x81,0x45};             //COMUNICACION//
byte message53[5] = {0x81,0x53,0xF1,0x81,0x46};             //COMUNICACION//
byte message54[5] = {0x81,0x54,0xF1,0x81,0x47};             //COMUNICACION//
byte message55[5] = {0x81,0x55,0xF1,0x81,0x48};             //COMUNICACION// 
byte message56[5] = {0x81,0x56,0xF1,0x81,0x49};             //COMUNICACION//
byte message57[5] = {0x81,0x57,0xF1,0x81,0x4A};             //COMUNICACION//
byte message58[5] = {0x81,0x58,0xF1,0x81,0x4B};             //COMUNICACION//
byte message59[5] = {0x81,0x59,0xF1,0x81,0x4C};             //COMUNICACION// 
byte message60[5] = {0x81,0x60,0xF1,0x81,0x53};             //COMUNICACION//
byte message61[5] = {0x81,0x61,0xF1,0x81,0x54};             //COMUNICACION//
byte message62[5] = {0x81,0x62,0xF1,0x81,0x55};             //COMUNICACION//
byte message63[5] = {0x81,0x63,0xF1,0x81,0x56};             //COMUNICACION// 
byte message64[5] = {0x81,0x64,0xF1,0x81,0x57};             //COMUNICACION//
byte message65[5] = {0x81,0x65,0xF1,0x81,0x58};             //COMUNICACION//
byte message66[5] = {0x81,0x66,0xF1,0x81,0x59};             //COMUNICACION//
byte message67[5] = {0x81,0x67,0xF1,0x81,0x5A};             //COMUNICACION// 
byte message68[5] = {0x81,0x68,0xF1,0x81,0x5B};             //COMUNICACION//
byte message69[5] = {0x81,0x69,0xF1,0x81,0x5C};             //COMUNICACION//
byte message70[5] = {0x81,0x70,0xF1,0x81,0x63};             //COMUNICACION//
byte message71[5] = {0x81,0x71,0xF1,0x81,0x64};             //COMUNICACION//
byte message72[5] = {0x81,0x72,0xF1,0x81,0x65};             //COMUNICACION//
byte message73[5] = {0x81,0x73,0xF1,0x81,0x66};             //COMUNICACION//
byte message74[5] = {0x81,0x74,0xF1,0x81,0x67};             //COMUNICACION// 
byte message75[5] = {0x81,0x75,0xF1,0x81,0x68};             //COMUNICACION//
byte message76[5] = {0x81,0x76,0xF1,0x81,0x69};             //COMUNICACION//
byte message77[5] = {0x81,0x77,0xF1,0x81,0x6A};             //COMUNICACION//
byte message78[5] = {0x81,0x78,0xF1,0x81,0x6B};             //COMUNICACION//
byte message79[5] = {0x81,0x79,0xF1,0x81,0x6C};             //COMUNICACION//
byte message80[5] = {0x81,0x80,0xF1,0x81,0x73};             //COMUNICACION//
byte message81[5] = {0x81,0x81,0xF1,0x81,0x74};             //COMUNICACION// 
byte message82[5] = {0x81,0x82,0xF1,0x81,0x75};             //COMUNICACION//
byte message83[5] = {0x81,0x83,0xF1,0x81,0x76};             //COMUNICACION//
byte message84[5] = {0x81,0x84,0xF1,0x81,0x77};             //COMUNICACION//
byte message85[5] = {0x81,0x85,0xF1,0x81,0x78};             //COMUNICACION//
byte message86[5] = {0x81,0x86,0xF1,0x81,0x79};             //COMUNICACION//
byte message87[5] = {0x81,0x87,0xF1,0x81,0x7A};             //COMUNICACION//
byte message88[5] = {0x81,0x88,0xF1,0x81,0x7B};             //COMUNICACION// 
byte message89[5] = {0x81,0x89,0xF1,0x81,0x7C};             //COMUNICACION//
byte message90[5] = {0x81,0x90,0xF1,0x81,0x83};             //COMUNICACION//
byte message91[5] = {0x81,0x91,0xF1,0x81,0x84};             //COMUNICACION//
byte message92[5] = {0x81,0x92,0xF1,0x81,0x85};             //COMUNICACION// 
byte message93[5] = {0x81,0x93,0xF1,0x81,0x86};             //COMUNICACION//
byte message94[5] = {0x81,0x94,0xF1,0x81,0x87};             //COMUNICACION//
byte message95[5] = {0x81,0x95,0xF1,0x81,0x88};             //COMUNICACION//
byte message96[5] = {0x81,0x96,0xF1,0x81,0x89};             //COMUNICACION// 
byte message97[5] = {0x81,0x97,0xF1,0x81,0x8A};             //COMUNICACION//
byte message98[5] = {0x81,0x98,0xF1,0x81,0x8B};             //COMUNICACION//
byte message99[5] = {0x81,0x99,0xF1,0x81,0x8C};             //COMUNICACION//
//-----------------------------------------------------------------------------------------
byte message101[5] = {0x81,0x0A,0xF1,0x81,0xFD};             //COMUNICACION// 
byte message102[5] = {0x81,0x1A,0xF1,0x81,0x0D};             //COMUNICACION//
byte message103[5] = {0x81,0x2A,0xF1,0x81,0x1D};             //COMUNICACION//
byte message104[5] = {0x81,0x3A,0xF1,0x81,0x2D};             //COMUNICACION//
byte message105[5] = {0x81,0x4A,0xF1,0x81,0x3D};             //COMUNICACION//
byte message106[5] = {0x81,0x5A,0xF1,0x81,0x4D};             //COMUNICACION//
byte message107[5] = {0x81,0x6A,0xF1,0x81,0x5D};             //COMUNICACION//
byte message108[5] = {0x81,0x7A,0xF1,0x81,0x6D};             //COMUNICACION// 
byte message109[5] = {0x81,0x8A,0xF1,0x81,0x7D};             //COMUNICACION//
byte message110[5] = {0x81,0x9A,0xF1,0x81,0x8D};             //COMUNICACION//
byte message111[5] = {0x81,0xA0,0xF1,0x81,0x93};             //COMUNICACION//
byte message112[5] = {0x81,0xA1,0xF1,0x81,0x94};             //COMUNICACION//
byte message113[5] = {0x81,0xA2,0xF1,0x81,0x95};             //COMUNICACION//
byte message114[5] = {0x81,0xA3,0xF1,0x81,0x96};             //COMUNICACION//
byte message115[5] = {0x81,0xA4,0xF1,0x81,0x97};             //COMUNICACION// 
byte message116[5] = {0x81,0xA5,0xF1,0x81,0x98};             //COMUNICACION//
byte message117[5] = {0x81,0xA6,0xF1,0x81,0x99};             //COMUNICACION//
byte message118[5] = {0x81,0xA7,0xF1,0x81,0x9A};             //COMUNICACION//
byte message119[5] = {0x81,0xA8,0xF1,0x81,0x9B};             //COMUNICACION//
byte message120[5] = {0x81,0xA9,0xF1,0x81,0x9C};             //COMUNICACION//
byte message121[5] = {0x81,0x0B,0xF1,0x81,0xFE};             //COMUNICACION//
byte message122[5] = {0x81,0x1B,0xF1,0x81,0x0E};             //COMUNICACION// 
byte message123[5] = {0x81,0x2B,0xF1,0x81,0x1E};             //COMUNICACION//
byte message124[5] = {0x81,0x3B,0xF1,0x81,0x2E};             //COMUNICACION//
byte message125[5] = {0x81,0x4B,0xF1,0x81,0x3E};             //COMUNICACION//
byte message126[5] = {0x81,0x5B,0xF1,0x81,0x4E};             //COMUNICACION// 
byte message127[5] = {0x81,0x6B,0xF1,0x81,0x5E};             //COMUNICACION//
byte message128[5] = {0x81,0x7B,0xF1,0x81,0x6E};             //COMUNICACION//
byte message129[5] = {0x81,0x8B,0xF1,0x81,0x7E};             //COMUNICACION//
byte message130[5] = {0x81,0x9B,0xF1,0x81,0x8E};             //COMUNICACION// 
byte message131[5] = {0x81,0xB0,0xF1,0x81,0xA3};             //COMUNICACION//
byte message132[5] = {0x81,0xB1,0xF1,0x81,0xA4};             //COMUNICACION//
byte message133[5] = {0x81,0xB2,0xF1,0x81,0xA5};             //COMUNICACION//
byte message134[5] = {0x81,0xB3,0xF1,0x81,0xA6};             //COMUNICACION// 
byte message135[5] = {0x81,0xB4,0xF1,0x81,0xA7};             //COMUNICACION//
byte message136[5] = {0x81,0xB5,0xF1,0x81,0xA8};             //COMUNICACION//
byte message137[5] = {0x81,0xB6,0xF1,0x81,0xA9};             //COMUNICACION//
byte message138[5] = {0x81,0xB7,0xF1,0x81,0xAA};             //COMUNICACION//
byte message139[5] = {0x81,0xB8,0xF1,0x81,0xAB};             //COMUNICACION//
byte message140[5] = {0x81,0xB9,0xF1,0x81,0xAC};             //COMUNICACION//
byte message141[5] = {0x81,0x0C,0xF1,0x81,0xFF};             //COMUNICACION// 
byte message142[5] = {0x81,0x1C,0xF1,0x81,0x0F};             //COMUNICACION//
byte message143[5] = {0x81,0x2C,0xF1,0x81,0x1F};             //COMUNICACION//
byte message144[5] = {0x81,0x3C,0xF1,0x81,0x2F};             //COMUNICACION//
byte message145[5] = {0x81,0x4C,0xF1,0x81,0x3F};             //COMUNICACION//
byte message146[5] = {0x81,0x5C,0xF1,0x81,0x4F};             //COMUNICACION//
byte message147[5] = {0x81,0x6C,0xF1,0x81,0x5F};             //COMUNICACION//
byte message148[5] = {0x81,0x7C,0xF1,0x81,0x6F};             //COMUNICACION// 
byte message149[5] = {0x81,0x8C,0xF1,0x81,0x7F};             //COMUNICACION//
byte message150[5] = {0x81,0x9C,0xF1,0x81,0x8F};             //COMUNICACION//
byte message151[5] = {0x81,0xC0,0xF1,0x81,0xB3};             //COMUNICACION//
byte message152[5] = {0x81,0xC1,0xF1,0x81,0xB4};             //COMUNICACION//
byte message153[5] = {0x81,0xC2,0xF1,0x81,0xB5};             //COMUNICACION//
byte message154[5] = {0x81,0xC3,0xF1,0x81,0xB6};             //COMUNICACION//
byte message155[5] = {0x81,0xC4,0xF1,0x81,0xB7};             //COMUNICACION// 
byte message156[5] = {0x81,0xC5,0xF1,0x81,0xB8};             //COMUNICACION//
byte message157[5] = {0x81,0xC6,0xF1,0x81,0xB9};             //COMUNICACION//
byte message158[5] = {0x81,0xC7,0xF1,0x81,0xBA};             //COMUNICACION//
byte message159[5] = {0x81,0xC8,0xF1,0x81,0xBB};             //COMUNICACION// 
byte message160[5] = {0x81,0xC9,0xF1,0x81,0xBC};             //COMUNICACION//
byte message161[5] = {0x81,0x0D,0xF1,0x81,0x00};             //COMUNICACION//
byte message162[5] = {0x81,0x1D,0xF1,0x81,0x10};             //COMUNICACION//
byte message163[5] = {0x81,0x2D,0xF1,0x81,0x20};             //COMUNICACION//
byte message164[5] = {0x81,0x3D,0xF1,0x81,0x30};             //COMUNICACION//
byte message165[5] = {0x81,0x4D,0xF1,0x81,0x40};             //COMUNICACION//
byte message166[5] = {0x81,0x5D,0xF1,0x81,0x50};             //COMUNICACION// 
byte message167[5] = {0x81,0x6D,0xF1,0x81,0x60};             //COMUNICACION//
byte message168[5] = {0x81,0x7D,0xF1,0x81,0x70};             //COMUNICACION//
byte message169[5] = {0x81,0x8D,0xF1,0x81,0x80};             //COMUNICACION//
byte message170[5] = {0x81,0x9D,0xD9,0x81,0x90};             //COMUNICACION//
byte message171[5] = {0x81,0xD0,0xD0,0x81,0xC3};             //COMUNICACION//
byte message172[5] = {0x81,0xD1,0x0D,0x81,0xC4};             //COMUNICACION//
byte message173[5] = {0x81,0xD2,0x9D,0x81,0xC5};             //COMUNICACION// 
byte message174[5] = {0x81,0xD3,0x8D,0x81,0xC6};             //COMUNICACION//
byte message175[5] = {0x81,0xD4,0x7D,0x81,0xC7};             //COMUNICACION//
byte message176[5] = {0x81,0xD5,0x6D,0x81,0xC8};             //COMUNICACION//
byte message177[5] = {0x81,0xD6,0x5D,0x81,0xC9};             //COMUNICACION//
byte message178[5] = {0x81,0xD7,0x4D,0x81,0xCA};             //COMUNICACION//
byte message179[5] = {0x81,0xD8,0x3D,0x81,0xCB};             //COMUNICACION//
byte message180[5] = {0x81,0xD9,0x2D,0x81,0xCC};             //COMUNICACION// 
byte message181[5] = {0x81,0x0E,0x1D,0x81,0x01};             //COMUNICACION//
byte message182[5] = {0x81,0x1E,0xF1,0x81,0x11};             //COMUNICACION//
byte message183[5] = {0x81,0x2E,0xF1,0x81,0x21};             //COMUNICACION//
byte message184[5] = {0x81,0x3E,0xF1,0x81,0x31};             //COMUNICACION//
byte message185[5] = {0x81,0x4E,0xF1,0x81,0x41};             //COMUNICACION//
byte message186[5] = {0x81,0x5E,0xF1,0x81,0x51};             //COMUNICACION//
byte message187[5] = {0x81,0x6E,0xF1,0x81,0x61};             //COMUNICACION// 
byte message188[5] = {0x81,0x7E,0xF1,0x81,0x71};             //COMUNICACION//
byte message189[5] = {0x81,0x8E,0xF1,0x81,0x81};             //COMUNICACION//
byte message190[5] = {0x81,0x9E,0xF1,0x81,0x91};             //COMUNICACION//
byte message191[5] = {0x81,0xE0,0xF1,0x81,0xD3};             //COMUNICACION// 
byte message192[5] = {0x81,0xE1,0xF1,0x81,0xD4};             //COMUNICACION//
byte message193[5] = {0x81,0xE2,0xF1,0x81,0xD5};             //COMUNICACION//
byte message194[5] = {0x81,0xE3,0xF1,0x81,0xD6};             //COMUNICACION//
byte message195[5] = {0x81,0xE4,0xF1,0x81,0xD7};             //COMUNICACION// 
byte message196[5] = {0x81,0xE5,0xF1,0x81,0xD8};             //COMUNICACION//
byte message197[5] = {0x81,0xE6,0xF1,0x81,0xD9};             //COMUNICACION//
byte message198[5] = {0x81,0xE7,0xF1,0x81,0xDA};             //COMUNICACION//
byte message199[5] = {0x81,0xE8,0xF1,0x81,0xDB};             //COMUNICACION//
byte message200[5] = {0x81,0xE9,0xF1,0x81,0xDC};             //COMUNICACION// 
byte message201[5] = {0x81,0x0F,0xF1,0x81,0x02};             //COMUNICACION//
byte message202[5] = {0x81,0x1F,0xF1,0x81,0x12};             //COMUNICACION//
byte message203[5] = {0x81,0x2F,0xF1,0x81,0x22};             //COMUNICACION//
byte message204[5] = {0x81,0x3F,0xF1,0x81,0x32};             //COMUNICACION//
byte message205[5] = {0x81,0x4F,0xF1,0x81,0x42};             //COMUNICACION// 
byte message206[5] = {0x81,0x5F,0xF1,0x81,0x52};             //COMUNICACION//
byte message207[5] = {0x81,0x6F,0xF1,0x81,0x62};             //COMUNICACION//
byte message208[5] = {0x81,0x7F,0xF1,0x81,0x72};             //COMUNICACION//
byte message209[5] = {0x81,0x8F,0xF1,0x81,0x82};             //COMUNICACION//
byte message210[5] = {0x81,0x9F,0xF1,0x81,0x92};             //COMUNICACION// 
byte message211[5] = {0x81,0xF0,0xF1,0x81,0xE3};             //COMUNICACION//
byte message212[5] = {0x81,0xF1,0xF1,0x81,0xE4};             //COMUNICACION//
byte message213[5] = {0x81,0xF2,0xF1,0x81,0xE5};             //COMUNICACION//
byte message214[5] = {0x81,0xF3,0xF1,0x81,0xE6};             //COMUNICACION//
byte message215[5] = {0x81,0xF4,0xF1,0x81,0xE7};             //COMUNICACION//
byte message216[5] = {0x81,0xF5,0xF1,0x81,0xE8};             //COMUNICACION//
byte message217[5] = {0x81,0xF6,0xF1,0x81,0xE9};             //COMUNICACION//
byte message218[5] = {0x81,0xF7,0xF1,0x81,0xEA};             //COMUNICACION// 
byte message219[5] = {0x81,0xF8,0xF1,0x81,0xEB};             //COMUNICACION//
byte message220[5] = {0x81,0xF9,0xF1,0x81,0xEC};             //COMUNICACION//

//-----------------------------------------------------------------------------------
void setup() {
    Serial.begin(57600);
  pinMode(TX, OUTPUT);
}
//-----------------------------------------------------------------------------------
void loop() {
  fastinit();
  comunicacion1();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion2();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion3();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion4();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion5();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion6();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion7();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion8();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion9();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion10();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion11();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion12();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
    fastinit();
  comunicacion13();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion14();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion15();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion16();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion17();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion18();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion19();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion20();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion21();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion22();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion23();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion24();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion25();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion26();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion27();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion28();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion29();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion30();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion31();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion32();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion33();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion34();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion35();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion36();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion37();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion38();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion39();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion40();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion41();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion42();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion43();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion44();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion45();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
    fastinit();
  comunicacion46();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion47();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion48();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion49();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion50();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion51();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion52();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion53();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion54();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion55();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion56();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion57();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion58();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion59();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion60();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion61();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion62();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion62();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion64();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion65();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion66();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion67();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion68();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion69();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion70();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion71();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion72();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion73();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion74();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion75();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion76();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion77();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion78();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
    fastinit();
  comunicacion79();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion80();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion81();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion82();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion83();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion84();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion85();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion86();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion87();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion88();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion89();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion90();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion91();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion92();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion93();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion94();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion95();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion96();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion97();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion98();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion99();
  delay(50);
  recievedata();
  delay(360);
  //--------------------------------------------------------------------------------------------------------
  fastinit();
  comunicacion101();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion102();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion103();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion104();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion105();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion106();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion107();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion108();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion109();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion110();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion111();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion112();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
    fastinit();
  comunicacion113();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion114();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion115();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion116();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion117();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion118();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion119();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion120();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion121();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion122();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion123();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion124();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion125();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion126();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion127();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion128();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion129();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion130();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion131();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion132();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion133();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion134();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion135();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion136();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion137();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion138();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion139();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion140();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion141();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion142();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion143();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion144();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion145();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
    fastinit();
  comunicacion146();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion147();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion148();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion149();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion150();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion151();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion152();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion153();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion154();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion155();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion156();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion157();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion158();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion159();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion160();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion161();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion162();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion163();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion164();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion165();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion166();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion167();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion168();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion169();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion170();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion171();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion172();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion173();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion174();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion175();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion176();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion177();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion178();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
    fastinit();
  comunicacion179();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion180();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion181();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion182();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion183();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion184();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion185();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion186();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion187();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion188();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion189();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion190();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion191();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion192();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion193();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion194();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion195();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion196();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion197();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion198();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion199();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion200();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion201();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion202();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion203();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion204();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion205();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion206();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion207();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion208();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion209();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion210();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion211();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion212();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion213();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion214();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion215();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion216();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion217();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion218();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  fastinit();
  comunicacion219();
  delay(50);
  recievedata();
  delay(360);
  fastinit();
  comunicacion220();
  delay(50);
  recievedata();
  delay(360);
  Serial.println("");
  Serial.println("FIN COMUNICACION PRUEBA");
  //fincomun();
  //delay(50);
  recievedata();
  delay(50000);
}

//-----FAST INIT---------------------------------------------------------------------
void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  
    delay(360);             
    digitalWrite (TX, LOW);  
    delay(25);
    digitalWrite (TX, HIGH); 
    delay(25);               
    mySerial.begin(10400);  
    Serial.println("starting serial comunication");
    mode++;
  }
}

//-----ENVIO DE PAQUETES-------------------------------------------------------------
void comunicacion1() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message1[i]);
    Serial.print(message1[i],HEX);
  } 
}
void comunicacion2() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message2[i]);
    Serial.print(message2[i],HEX);
  } 
}
void comunicacion3() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message3[i]);
    Serial.print(message3[i],HEX);
  } 
}
void comunicacion4() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message4[i]);
    Serial.print(message4[i],HEX);
  } 
}
void comunicacion5() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message5[i]);
    Serial.print(message5[i],HEX);
  } 
}
void comunicacion6() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message6[i]);
    Serial.print(message6[i],HEX);
  } 
}
void comunicacion7() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message7[i]);
    Serial.print(message7[i],HEX);
  } 
}
void comunicacion8() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message8[i]);
    Serial.print(message8[i],HEX);
  } 
}
void comunicacion9() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message9[i]);
    Serial.print(message9[i],HEX);
  } 
}
void comunicacion10() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message10[i]);
    Serial.print(message10[i],HEX);
  } 
}
void comunicacion11() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message11[i]);
    Serial.print(message11[i],HEX);
  } 
}
void comunicacion12() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message12[i]);
    Serial.print(message12[i],HEX);
  } 
}
void comunicacion13() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message13[i]);
    Serial.print(message13[i],HEX);
  } 
}
void comunicacion14() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message14[i]);
    Serial.print(message14[i],HEX);
  } 
}
void comunicacion15() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message15[i]);
    Serial.print(message15[i],HEX);
  } 
}
void comunicacion16() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message16[i]);
    Serial.print(message16[i],HEX);
  } 
}
void comunicacion17() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message17[i]);
    Serial.print(message17[i],HEX);
  } 
}
void comunicacion18() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message18[i]);
    Serial.print(message18[i],HEX);
  } 
}
void comunicacion19() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message19[i]);
    Serial.print(message19[i],HEX);
  } 
}
void comunicacion20() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message20[i]);
    Serial.print(message20[i],HEX);
  } 
}
void comunicacion21() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message21[i]);
    Serial.print(message21[i],HEX);
  } 
}
void comunicacion22() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message22[i]);
    Serial.print(message22[i],HEX);
  } 
}
void comunicacion23() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message23[i]);
    Serial.print(message23[i],HEX);
  } 
}
void comunicacion24() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message24[i]);
    Serial.print(message24[i],HEX);
  } 
}
void comunicacion25() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message25[i]);
    Serial.print(message25[i],HEX);
  } 
}
void comunicacion26() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message26[i]);
    Serial.print(message26[i],HEX);
  } 
}
void comunicacion27() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message27[i]);
    Serial.print(message27[i],HEX);
  } 
}
void comunicacion28() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message28[i]);
    Serial.print(message28[i],HEX);
  } 
}
void comunicacion29() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message29[i]);
    Serial.print(message29[i],HEX);
  } 
}
void comunicacion30() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message30[i]);
    Serial.print(message30[i],HEX);
  } 
}
void comunicacion31() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message31[i]);
    Serial.print(message31[i],HEX);
  } 
}
void comunicacion32() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message32[i]);
    Serial.print(message32[i],HEX);
  } 
}
void comunicacion33() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message33[i]);
    Serial.print(message33[i],HEX);
  } 
}
void comunicacion34() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message34[i]);
    Serial.print(message34[i],HEX);
  } 
}
void comunicacion35() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message35[i]);
    Serial.print(message35[i],HEX);
  } 
}
void comunicacion36() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message36[i]);
    Serial.print(message36[i],HEX);
  } 
}
void comunicacion37() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message37[i]);
    Serial.print(message37[i],HEX);
  } 
}
void comunicacion38() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message38[i]);
    Serial.print(message38[i],HEX);
  } 
}
void comunicacion39() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message39[i]);
    Serial.print(message39[i],HEX);
  } 
}
void comunicacion40() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message40[i]);
    Serial.print(message40[i],HEX);
  } 
}
void comunicacion41() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message41[i]);
    Serial.print(message41[i],HEX);
  } 
}
void comunicacion42() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message42[i]);
    Serial.print(message42[i],HEX);
  } 
}
void comunicacion43() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message43[i]);
    Serial.print(message43[i],HEX);
  } 
}
void comunicacion44() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message44[i]);
    Serial.print(message44[i],HEX);
  } 
}
void comunicacion45() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message45[i]);
    Serial.print(message45[i],HEX);
  } 
}
void comunicacion46() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message46[i]);
    Serial.print(message46[i],HEX);
  } 
}
void comunicacion47() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message47[i]);
    Serial.print(message47[i],HEX);
  } 
}
void comunicacion48() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message48[i]);
    Serial.print(message48[i],HEX);
  } 
}
void comunicacion49() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message49[i]);
    Serial.print(message49[i],HEX);
  } 
}
void comunicacion50() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message50[i]);
    Serial.print(message50[i],HEX);
  } 
}
void comunicacion51() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message51[i]);
    Serial.print(message51[i],HEX);
  } 
}
void comunicacion52() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message52[i]);
    Serial.print(message52[i],HEX);
  } 
}
void comunicacion53() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message53[i]);
    Serial.print(message53[i],HEX);
  } 
}
void comunicacion54() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message54[i]);
    Serial.print(message54[i],HEX);
  } 
}
void comunicacion55() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message55[i]);
    Serial.print(message55[i],HEX);
  } 
}
void comunicacion56() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message56[i]);
    Serial.print(message56[i],HEX);
  } 
}
void comunicacion57() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message57[i]);
    Serial.print(message57[i],HEX);
  } 
}
void comunicacion58() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message58[i]);
    Serial.print(message58[i],HEX);
  } 
}
void comunicacion59() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message59[i]);
    Serial.print(message59[i],HEX);
  } 
}
void comunicacion60() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message60[i]);
    Serial.print(message60[i],HEX);
  } 
}
void comunicacion61() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message61[i]);
    Serial.print(message61[i],HEX);
  } 
}
void comunicacion62() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message62[i]);
    Serial.print(message62[i],HEX);
  } 
}
void comunicacion63() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message63[i]);
    Serial.print(message63[i],HEX);
  } 
}
void comunicacion64() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message64[i]);
    Serial.print(message64[i],HEX);
  } 
}
void comunicacion65() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message65[i]);
    Serial.print(message65[i],HEX);
  } 
}
void comunicacion66() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message66[i]);
    Serial.print(message66[i],HEX);
  } 
}
void comunicacion67() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message67[i]);
    Serial.print(message67[i],HEX);
  } 
}
void comunicacion68() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message68[i]);
    Serial.print(message68[i],HEX);
  } 
}
void comunicacion69() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message69[i]);
    Serial.print(message69[i],HEX);
  } 
}
void comunicacion70() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message70[i]);
    Serial.print(message70[i],HEX);
  } 
}
void comunicacion71() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message71[i]);
    Serial.print(message71[i],HEX);
  } 
}
void comunicacion72() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message72[i]);
    Serial.print(message72[i],HEX);
  } 
}
void comunicacion73() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message73[i]);
    Serial.print(message73[i],HEX);
  } 
}
void comunicacion74() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message74[i]);
    Serial.print(message74[i],HEX);
  } 
}
void comunicacion75() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message75[i]);
    Serial.print(message75[i],HEX);
  } 
}
void comunicacion76() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message76[i]);
    Serial.print(message76[i],HEX);
  } 
}
void comunicacion77() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message77[i]);
    Serial.print(message77[i],HEX);
  } 
}
void comunicacion78() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message78[i]);
    Serial.print(message78[i],HEX);
  } 
}
void comunicacion79() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message79[i]);
    Serial.print(message79[i],HEX);
  } 
}
void comunicacion80() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message80[i]);
    Serial.print(message80[i],HEX);
  } 
}
void comunicacion81() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message81[i]);
    Serial.print(message81[i],HEX);
  } 
}
void comunicacion82() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message82[i]);
    Serial.print(message82[i],HEX);
  } 
}
void comunicacion83() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message83[i]);
    Serial.print(message83[i],HEX);
  } 
}
void comunicacion84() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message84[i]);
    Serial.print(message84[i],HEX);
  } 
}
void comunicacion85() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message85[i]);
    Serial.print(message85[i],HEX);
  } 
}
void comunicacion86() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message86[i]);
    Serial.print(message86[i],HEX);
  } 
}
void comunicacion87() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message87[i]);
    Serial.print(message87[i],HEX);
  } 
}
void comunicacion88() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message88[i]);
    Serial.print(message88[i],HEX);
  } 
}
void comunicacion89() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message89[i]);
    Serial.print(message89[i],HEX);
  } 
}
void comunicacion90() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message90[i]);
    Serial.print(message90[i],HEX);
  } 
}
void comunicacion91() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message91[i]);
    Serial.print(message91[i],HEX);
  } 
}
void comunicacion92() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message92[i]);
    Serial.print(message92[i],HEX);
  } 
}
void comunicacion93() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message93[i]);
    Serial.print(message93[i],HEX);
  } 
}
void comunicacion94() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message94[i]);
    Serial.print(message94[i],HEX);
  } 
}
void comunicacion95() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message95[i]);
    Serial.print(message95[i],HEX);
  } 
}
void comunicacion96() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message96[i]);
    Serial.print(message96[i],HEX);
  } 
}
void comunicacion97() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message97[i]);
    Serial.print(message97[i],HEX);
  } 
}
void comunicacion98() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message98[i]);
    Serial.print(message98[i],HEX);
  } 
}
void comunicacion99() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message99[i]);
    Serial.print(message99[i],HEX);
  } 
}
void comunicacion101() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message101[i]);
    Serial.print(message101[i],HEX);
  } 
}
void comunicacion102() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message102[i]);
    Serial.print(message102[i],HEX);
  } 
}
void comunicacion103() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message103[i]);
    Serial.print(message103[i],HEX);
  } 
}
void comunicacion104() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message104[i]);
    Serial.print(message104[i],HEX);
  } 
}
void comunicacion105() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message105[i]);
    Serial.print(message105[i],HEX);
  } 
}
void comunicacion106() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message106[i]);
    Serial.print(message106[i],HEX);
  } 
}
void comunicacion107() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message107[i]);
    Serial.print(message107[i],HEX);
  } 
}
void comunicacion108() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message108[i]);
    Serial.print(message108[i],HEX);
  } 
}
void comunicacion109() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message109[i]);
    Serial.print(message109[i],HEX);
  } 
}
void comunicacion110() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message110[i]);
    Serial.print(message110[i],HEX);
  } 
}
void comunicacion111() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message111[i]);
    Serial.print(message111[i],HEX);
  } 
}
void comunicacion112() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message112[i]);
    Serial.print(message112[i],HEX);
  } 
}
void comunicacion113() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message113[i]);
    Serial.print(message113[i],HEX);
  } 
}
void comunicacion114() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message114[i]);
    Serial.print(message114[i],HEX);
  } 
}
void comunicacion115() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message115[i]);
    Serial.print(message115[i],HEX);
  } 
}
void comunicacion116() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message116[i]);
    Serial.print(message116[i],HEX);
  } 
}
void comunicacion117() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message117[i]);
    Serial.print(message117[i],HEX);
  } 
}
void comunicacion118() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message118[i]);
    Serial.print(message118[i],HEX);
  } 
}
void comunicacion119() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message119[i]);
    Serial.print(message119[i],HEX);
  } 
}
void comunicacion120() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message120[i]);
    Serial.print(message120[i],HEX);
  } 
}
void comunicacion121() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message121[i]);
    Serial.print(message121[i],HEX);
  } 
}
void comunicacion122() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message122[i]);
    Serial.print(message122[i],HEX);
  } 
}
void comunicacion123() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message123[i]);
    Serial.print(message123[i],HEX);
  } 
}
void comunicacion124() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message124[i]);
    Serial.print(message124[i],HEX);
  } 
}
void comunicacion125() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message125[i]);
    Serial.print(message125[i],HEX);
  } 
}
void comunicacion126() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message126[i]);
    Serial.print(message126[i],HEX);
  } 
}
void comunicacion127() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message127[i]);
    Serial.print(message127[i],HEX);
  } 
}
void comunicacion128() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message128[i]);
    Serial.print(message128[i],HEX);
  } 
}
void comunicacion129() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message129[i]);
    Serial.print(message129[i],HEX);
  } 
}
void comunicacion130() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message130[i]);
    Serial.print(message130[i],HEX);
  } 
}
void comunicacion131() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message131[i]);
    Serial.print(message131[i],HEX);
  } 
}
void comunicacion132() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message132[i]);
    Serial.print(message132[i],HEX);
  } 
}
void comunicacion133() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message133[i]);
    Serial.print(message133[i],HEX);
  } 
}
void comunicacion134() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message134[i]);
    Serial.print(message134[i],HEX);
  } 
}
void comunicacion135() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message135[i]);
    Serial.print(message135[i],HEX);
  } 
}
void comunicacion136() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message136[i]);
    Serial.print(message136[i],HEX);
  } 
}
void comunicacion137() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message137[i]);
    Serial.print(message137[i],HEX);
  } 
}
void comunicacion138() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message138[i]);
    Serial.print(message138[i],HEX);
  } 
}
void comunicacion139() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message139[i]);
    Serial.print(message139[i],HEX);
  } 
}
void comunicacion140() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message140[i]);
    Serial.print(message140[i],HEX);
  } 
}
void comunicacion141() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message141[i]);
    Serial.print(message141[i],HEX);
  } 
}
void comunicacion142() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message142[i]);
    Serial.print(message142[i],HEX);
  } 
}
void comunicacion143() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message143[i]);
    Serial.print(message143[i],HEX);
  } 
}
void comunicacion144() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message144[i]);
    Serial.print(message144[i],HEX);
  } 
}
void comunicacion145() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message145[i]);
    Serial.print(message145[i],HEX);
  } 
}
void comunicacion146() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message146[i]);
    Serial.print(message146[i],HEX);
  } 
}
void comunicacion147() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message147[i]);
    Serial.print(message147[i],HEX);
  } 
}
void comunicacion148() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message148[i]);
    Serial.print(message148[i],HEX);
  } 
}
void comunicacion149() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message149[i]);
    Serial.print(message149[i],HEX);
  } 
}
void comunicacion150() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message150[i]);
    Serial.print(message150[i],HEX);
  } 
}
void comunicacion151() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message151[i]);
    Serial.print(message151[i],HEX);
  } 
}
void comunicacion152() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message152[i]);
    Serial.print(message152[i],HEX);
  } 
}
void comunicacion153() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message153[i]);
    Serial.print(message153[i],HEX);
  } 
}
void comunicacion154() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message154[i]);
    Serial.print(message154[i],HEX);
  } 
}
void comunicacion155() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message155[i]);
    Serial.print(message155[i],HEX);
  } 
}
void comunicacion156() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message156[i]);
    Serial.print(message156[i],HEX);
  } 
}
void comunicacion157() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message157[i]);
    Serial.print(message157[i],HEX);
  } 
}
void comunicacion158() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message158[i]);
    Serial.print(message158[i],HEX);
  } 
}
void comunicacion159() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message159[i]);
    Serial.print(message159[i],HEX);
  } 
}
void comunicacion160() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message160[i]);
    Serial.print(message160[i],HEX);
  } 
}
void comunicacion161() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message161[i]);
    Serial.print(message161[i],HEX);
  } 
}
void comunicacion162() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message162[i]);
    Serial.print(message162[i],HEX);
  } 
}
void comunicacion163() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message163[i]);
    Serial.print(message163[i],HEX);
  } 
}
void comunicacion164() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message164[i]);
    Serial.print(message164[i],HEX);
  } 
}
void comunicacion165() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message165[i]);
    Serial.print(message165[i],HEX);
  } 
}
void comunicacion166() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message166[i]);
    Serial.print(message166[i],HEX);
  } 
}
void comunicacion167() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message167[i]);
    Serial.print(message167[i],HEX);
  } 
}
void comunicacion168() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message168[i]);
    Serial.print(message168[i],HEX);
  } 
}
void comunicacion169() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message169[i]);
    Serial.print(message169[i],HEX);
  } 
}
void comunicacion170() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message170[i]);
    Serial.print(message170[i],HEX);
  } 
}
void comunicacion171() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message171[i]);
    Serial.print(message171[i],HEX);
  } 
}
void comunicacion172() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message172[i]);
    Serial.print(message172[i],HEX);
  } 
}
void comunicacion173() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message173[i]);
    Serial.print(message173[i],HEX);
  } 
}
void comunicacion174() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message174[i]);
    Serial.print(message174[i],HEX);
  } 
}
void comunicacion175() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message175[i]);
    Serial.print(message175[i],HEX);
  } 
}
void comunicacion176() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message176[i]);
    Serial.print(message176[i],HEX);
  } 
}
void comunicacion177() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message177[i]);
    Serial.print(message177[i],HEX);
  } 
}
void comunicacion178() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message178[i]);
    Serial.print(message178[i],HEX);
  } 
}
void comunicacion179() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message179[i]);
    Serial.print(message179[i],HEX);
  } 
}
void comunicacion180() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message180[i]);
    Serial.print(message180[i],HEX);
  } 
}
void comunicacion181() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message181[i]);
    Serial.print(message181[i],HEX);
  } 
}
void comunicacion182() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message182[i]);
    Serial.print(message182[i],HEX);
  } 
}
void comunicacion183() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message183[i]);
    Serial.print(message183[i],HEX);
  } 
}
void comunicacion184() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message184[i]);
    Serial.print(message184[i],HEX);
  } 
}
void comunicacion185() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message185[i]);
    Serial.print(message185[i],HEX);
  } 
}
void comunicacion186() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message186[i]);
    Serial.print(message186[i],HEX);
  } 
}
void comunicacion187() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message187[i]);
    Serial.print(message187[i],HEX);
  } 
}
void comunicacion188() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message188[i]);
    Serial.print(message188[i],HEX);
  } 
}
void comunicacion189() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message189[i]);
    Serial.print(message189[i],HEX);
  } 
}
void comunicacion190() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message190[i]);
    Serial.print(message190[i],HEX);
  } 
}
void comunicacion191() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message191[i]);
    Serial.print(message191[i],HEX);
  } 
}
void comunicacion192() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message192[i]);
    Serial.print(message192[i],HEX);
  } 
}
void comunicacion193() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message193[i]);
    Serial.print(message193[i],HEX);
  } 
}
void comunicacion194() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message194[i]);
    Serial.print(message194[i],HEX);
  } 
}
void comunicacion195() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message195[i]);
    Serial.print(message195[i],HEX);
  } 
}
void comunicacion196() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message196[i]);
    Serial.print(message196[i],HEX);
  } 
}
void comunicacion197() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message197[i]);
    Serial.print(message197[i],HEX);
  } 
}
void comunicacion198() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message198[i]);
    Serial.print(message198[i],HEX);
  } 
}
void comunicacion199() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message199[i]);
    Serial.print(message199[i],HEX);
  } 
}
void comunicacion200() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message200[i]);
    Serial.print(message200[i],HEX);
  } 
}
void comunicacion201() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message201[i]);
    Serial.print(message201[i],HEX);
  } 
}
void comunicacion202() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message202[i]);
    Serial.print(message202[i],HEX);
  } 
}
void comunicacion203() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message203[i]);
    Serial.print(message203[i],HEX);
  } 
}
void comunicacion204() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message204[i]);
    Serial.print(message204[i],HEX);
  } 
}
void comunicacion205() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message205[i]);
    Serial.print(message205[i],HEX);
  } 
}
void comunicacion206() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message206[i]);
    Serial.print(message206[i],HEX);
  } 
}
void comunicacion207() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message207[i]);
    Serial.print(message207[i],HEX);
  } 
}
void comunicacion208() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message208[i]);
    Serial.print(message208[i],HEX);
  } 
}
void comunicacion209() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message209[i]);
    Serial.print(message209[i],HEX);
  } 
}
void comunicacion210() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message210[i]);
    Serial.print(message210[i],HEX);
  } 
}
void comunicacion211() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message211[i]);
    Serial.print(message211[i],HEX);
  } 
}
void comunicacion212() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message212[i]);
    Serial.print(message212[i],HEX);
  } 
}
void comunicacion213() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message213[i]);
    Serial.print(message213[i],HEX);
  } 
}
void comunicacion214() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message214[i]);
    Serial.print(message214[i],HEX);
  } 
}
void comunicacion215() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message215[i]);
    Serial.print(message215[i],HEX);
  } 
}
void comunicacion216() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message216[i]);
    Serial.print(message216[i],HEX);
  } 
}
void comunicacion217() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message217[i]);
    Serial.print(message217[i],HEX);
  } 
}
void comunicacion218() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message218[i]);
    Serial.print(message218[i],HEX);
  } 
}
void comunicacion219() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message219[i]);
    Serial.print(message219[i],HEX);
  } 
}
void comunicacion220() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message220[i]);
    Serial.print(message220[i],HEX);
  } 
}


//-----RESPUESTAS DE DATOS----------------------------------------------------------------------
void recievedata() {
  int i = 0;
  int dataok = 0;
  Serial.println("   waiting for data");
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("  TIMEOUT");
      mode = 0;
      mySerial.end();
      return;  
    }
    if (mySerial.available()) {
      byte inByte = mySerial.read();
      Serial.print("");
      Serial.println(inByte,HEX);
    }
    if (Serial.available()) {
      byte inByte = Serial.read();
      mySerial.print("");
      mySerial.print(inByte,HEX);
      
    }
  }
}

-------------------------------------------------------------------------------------------------------------------

Теперь fast init 5baud. Секрет 5baud это при отправке задержка в 5-10 мили секунд между каждым байтом.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;
int dotdelay = 1000;
int timeout = 10100;
int timeold;
int messagelength = 1;

byte message1[1] = {0x81}; byte message2[1] = {0x11}; byte message3[1] = {0xF1}; byte message4[1] = {0x81}; byte message5[1] = {0x04};
void setup() {
  Serial.begin(115200);
  pinMode(TX, OUTPUT);
       
}

void loop() {
   fastinit();
   sendrequest();
   recievedata();
}
//FAST INIT 5baud--------------------------------------
void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  // makes K-line high 3
    delay(360);             // wait for K-line to be clear 3
    digitalWrite (TX, LOW);  // makes K-line low  3
    delay(25);
    digitalWrite (TX, HIGH); // makes K-line high  3
    delay(25);               //last delay before first message
    mySerial.begin(10400);  // baud rate of the OBD
    Serial.println("starting serial comunication");
    mode++;
  }
}
void sendrequest(){
  sendrequest1();
  delay(5);
  sendrequest2();
  delay(5);
  sendrequest3();
  delay(5);
  sendrequest4();
  delay(5);
  sendrequest5();
  delay(5);
  delay(50);
  Serial.println("");
  }
//PAQUETE SEND INIT-----------------------------------------------------------
void sendrequest1() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message1[i]);
    Serial.print(message1[i],HEX);
  } 
}
void sendrequest2() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message2[i]);
    Serial.print(message2[i],HEX);
  } 
}
void sendrequest3() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message3[i]);
    Serial.print(message3[i],HEX);
  } 
}
void sendrequest4() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message4[i]);
    Serial.print(message4[i],HEX);
  } 
}
void sendrequest5() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message5[i]);
    Serial.print(message5[i],HEX);
  } 
}
//RESEBIR DATA---------------------------------------------------
void recievedata() {
  int i = 0;
  int dataok = 0;
  Serial.println("   waiting for data");
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("   TIMEOUT");
      mode = 0;
      mySerial.end();
      return;
      }
    if (mySerial.available()) {
      byte inByte = mySerial.read();
      Serial.print("");
      Serial.println(inByte,HEX);
      }
      if (Serial.available()) {
      byte inByte = Serial.read();
      mySerial.print("");
      mySerial.print(inByte,HEX);
    }
  }
}

--------------------------------------------------------------------------------------------------------------------------------

Далее fast init может у гого-то сработает так а не 5baud

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;
int dotdelay = 1000;
int timeout = 10100;
int timeold;
int messagelength = 5;

byte message[5] = {0x81,0x11,0xF1,0x81,0x04};
void setup() {
  Serial.begin(115200);
  pinMode(TX, OUTPUT);
       
}

void loop() {
   fastinit();
   sendrequest();
   delay(50);
   recievedata();
}
//FAST INIT 5baud--------------------------------------
void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  // makes K-line high 3
    delay(360);             // wait for K-line to be clear 3
    digitalWrite (TX, LOW);  // makes K-line low  3
    delay(25);
    digitalWrite (TX, HIGH); // makes K-line high  3
    delay(25);               //last delay before first message
    mySerial.begin(10400);  // baud rate of the OBD
    Serial.println("starting serial comunication");
    mode++;
  }
}

//PAQUETE SEND INIT-----------------------------------------------------------
void sendrequest() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message[i]);
    Serial.print(message[i],HEX);
  } 
}

//RESEBIR DATA---------------------------------------------------
void recievedata() {
  int i = 0;
  int dataok = 0;
  Serial.println("   waiting for data");
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("   TIMEOUT");
      mode = 0;
      mySerial.end();
      return;
      }
    if (mySerial.available()) {
      byte inByte = mySerial.read();
      Serial.print("");
      Serial.println(inByte,HEX);
      }
      if (Serial.available()) {
      byte inByte = Serial.read();
      mySerial.print("");
      mySerial.print(inByte,HEX);
    }
  }
}

------------------------------------------------------------------------------------------------------------------------------------

Ну и самое вкусное скетч с fast init 5baud+present+температура мотора. Он еще кривоват, но работает.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;
//variables
int dotdelay = 1000;
int timeout = 1000;
int timeold;
int messagelength = 1;
int messagelength2 = 5;
int messagelength3 = 6;

byte message1[1] = {0x81}; byte message2[1] = {0x11}; byte message3[1] = {0xF1}; byte message4[1] = {0x81}; byte message5[1] = {0x04};
byte message6[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A};
byte message7[5] = {0x81,0x11,0xF1,0x3E,0xC1};
void setup() {
    Serial.begin(115200);
  pinMode(TX, OUTPUT);
  
}

void loop() {
  fastinit();
  sendrequest1();
  delay(5);
  sendrequest2();
  delay(5);
  sendrequest3();
  delay(5);
  sendrequest4();
  delay(5);
  sendrequest5();
  delay(5);
  delay(50);
  Serial.println("");
  
  recievedata();   
  
}

void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  // makes K-line high 3
    delay(360);             // wait for K-line to be clear 3
    digitalWrite (TX, LOW);  // makes K-line low  3
    delay(25);
    digitalWrite (TX, HIGH); // makes K-line high  3
    delay(25);               //last delay before first message
    mySerial.begin(10400);  // baud rate of the OBD
    Serial.println("starting serial comunication");
    mode++;
  }
}
//-----------------------------------------------------------
void sendrequest1() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message1[i]);
    Serial.print(message1[i],HEX);
  } 
}
void sendrequest2() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message2[i]);
    Serial.print(message2[i],HEX);
  } 
}
void sendrequest3() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message3[i]);
    Serial.print(message3[i],HEX);
  } 
}
void sendrequest4() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message4[i]);
    Serial.print(message4[i],HEX);
  } 
}
void sendrequest5() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message5[i]);
    Serial.print(message5[i],HEX);
  } 
}
//---------------------------------------------------------------------
void pids() {
  for (int i = 0; ((i < messagelength3  ) & (mode == 1)); i++) {
    mySerial.write(message6[i]);
    Serial.print(message6[i],HEX);
  } 
}
void present() {
  for (int i = 0; ((i < messagelength2) & (mode == 1)); i++) {
    mySerial.write(message7[i]);
    Serial.print(message7[i],HEX);
  } 
}

void recievedata() {
      present();
      delay(55);
      Serial.println("");
  int i = 0;
  int dataok = 0;
  Serial.println("   waiting for data");
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("   TIMEOUT");
      
      pids();
      delay(55);
      Serial.println("");
      recievedata();
      return;
    }
    if (mySerial.available()) {
      byte inByte = mySerial.read();
      Serial.print("");
      Serial.print(inByte,HEX);
    }
  }
}

Во всех моих скетчах просто заменяете на свои адреса блоков. например :byte message[5] = {0x81,0x11,0xF1,0x81,0x04};

второй байт 0x11 это мой блок мотора заменяете на свой например 0x17 который вы нашли , не забываем что последний байт это контрольная сумма при замене своего адрес перещитываем ,получаем 0x81,0x17,0xF1,0x81,0x0A. Как считать контрольную сумму, можно использовать калькулятор Виндоус а можно скачать приложение на телефон, я пользуюсь Simple HEX DEC найдете на плаймаркете. сумма выводится так пример: 0x81,0x17,0xF1,0x81,0x0A это 81+17+F1+81=0A контрольная сумма.

Еще не большая инфа по адресам. 

с 10 по 17 адреса мотора

с 18 до 1F адреса коробки

с 28 до 2F адреса тормоза/ABS

с 30 до 37 адреса рулевого управления

Ну вот пожалуй пока и все , надеюсь новечкам очень поможет, все разжевано от а до я. Дерзайте. Всем удачи. Будут вопросы, спрашивайте , я не спец я как вы, но чем смогу помогу.

MaksVV
Offline
Зарегистрирован: 06.08.2015

автору спасибо за труды. Предстоит тоже самое. Но у меня задача еще сложнее. Надо не только вытянуть информацию из K-Line но изапихать её в CAN. Машина хонда старая. Вернее двигатель от хонды старой. а теперь стоит на аккорде 7. где уже щиток приборов уже CANовый и нужно тахометр оживить. 

viki13viki
Offline
Зарегистрирован: 14.11.2016

MaksVV  щ. Спасибо за спасибо. Предлагаю вам взять на АлиЕхспрес за пару евров CAN shield. Мне кажется с ним будет не так уж сложно как с моим случаем. шилд уже готов ко всему, и описаний по кану очень много и с премерами скетчей, по крайней мере мне очень много попадалось пока искал свои ответы. Удачи.

MaksVV
Offline
Зарегистрирован: 06.08.2015

так и сделал только вместо шилда заказал модуль на mcp2515, вроде как тоже самое, только дешеле 

viki13viki
Offline
Зарегистрирован: 14.11.2016

По идеи у продавца есть библиотека. Если нет на сайте товара попроси у продовца. Просто шилд подключается на прямую к ардуино и имеет готовые библиотеки. Жаль что я далеко, в Испании, имею шилд, мог бы за пиво отдать.

MaksVV
Offline
Зарегистрирован: 06.08.2015

библиотеку легко нашел в инете. Подключил can модуль к программе CAN Hacker - работает. Показывает пакеты, летающие в кане. Также программа может отправлять свои созданные пакеты (фреймы).

А вот k-line микруха пока ещё не пришла. Кстати есть идея использовать ELM адаптер, который сделает всю "грязную" работу общения  с эбу и сам выберет протокол. Ардуине только останется взять нужную инфу с elm через АТ команды. Подключение ардуино-elm по Serial (есть даже готовые библиотеки для elm. всё придумано за нас) 

vsrgv
Offline
Зарегистрирован: 20.06.2017

А какую микруху для k-line заказал? На драйве несколько вариантов есть. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

L9637D на али 

vsrgv
Offline
Зарегистрирован: 20.06.2017

недавно видел что такие микрухи стоят в иммобилайзерах

viki13viki
Offline
Зарегистрирован: 14.11.2016

Я рад что тебе легче все далось, с каном проще. Какую микрухе заказал? Я как говорил из первого моего поста использую адаптер на l9637d, но так же проверил и мой четвёртый адаптер из первого поста на вс547, пашет супер. Я не хотел елм, надо кнопку делать для питания, короче я хотел на прямую без посредников. Я вот застрял на скетче для вывода инфы с перщитаной формулой, например температуры. Не могу въехать как это запихнуть в скетче. Я получаю ответ, но как как выделить из ответа конкретный байт и пересчитал его по формуле вывести в сериал. Может кто знает?

MaksVV
Offline
Зарегистрирован: 06.08.2015

ну например так 

byte message[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A};
int a;

void setup() {
  Serial.begin (9600);
}

void loop() {
a = message[0] + message [1];

Serial.println (a);
delay (1000);
}

то есть программа складывает 0-вой байт число 130 (0х82 в Hex) и 1 байт число 17 (0х11 в hex) и выводит в сериал. Получается естественно 147.  

viki13viki
Offline
Зарегистрирован: 14.11.2016

То есть, в кавычках 0 и 1 это позиция байта в ответе? Это значит что я могу взять четвертую позицию ( температура) пересчитать и вывести?

MaksVV
Offline
Зарегистрирован: 06.08.2015

да, только не в кавычках, а в квадратных скобках

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот, например, так можно объединить два байта в одно число (один байт может нести число от 0 до 255, а если число больше, его несут два байта и более) 

byte message[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A};

int var;

void setup() {
  Serial.begin (9600);
}

void loop() {

var = ( ( unsigned int )message[1] << 8 ) | message[0];

Serial.println (var);

delay (1000);

}

 

vsrgv
Offline
Зарегистрирован: 20.06.2017

пока ковырялся в инете нашел ODBuino, детально не изучал, все на английском, может поможет чем :"OBDuino является открытым исходным кодом маршрутного компьютера дизайна , основанный на Arduino платформе. OBDuino может быть собран и настроен радиолюбителем; он отображает информацию , такие как мгновенная экономия топлива (например , л / 100 км, мили на галлон или километры на литр), параметры настройки двигателя и т.д. на ЖКАХ."

MaksVV
Offline
Зарегистрирован: 06.08.2015

покажи строку и какие байты по какой формуле посчитать

viki13viki
Offline
Зарегистрирован: 14.11.2016

Например запрос температуры в твоём примере выше, приходит 82 F1 11 70 cs. Четвёртый байт 70 в dec это 112 отнять 40 и получаем 72 градуса для вывода в монитор

MaksVV
Offline
Зарегистрирован: 06.08.2015

..

viki13viki
Offline
Зарегистрирован: 14.11.2016

Понятно, буду завтра как и все до этого методом тыка пробовать. Спасибо

MaksVV
Offline
Зарегистрирован: 06.08.2015
byte message[4] = {0x82, 0xF1, 0x11, 0x70};

int Temp;


void setup() {
  Serial.begin (9600);
}

void loop() {
Temp = message[3]-40;

Serial.println (Temp);
delay (1000);
}

ну вот, в сериале значение 72. По факту 0х70 это третий байт, т.к. начинается с нулевого. всего соответственно четыре

viki13viki
Offline
Зарегистрирован: 14.11.2016

Сенкс. Завтра попробую. И отпишусь.

MaksVV
Offline
Зарегистрирован: 06.08.2015

vsrgv пишет:

пока ковырялся в инете нашел ODBuino, детально не изучал, все на английском, может поможет чем :"OBDuino является открытым исходным кодом маршрутного компьютера дизайна , основанный на Arduino платформе. OBDuino может быть собран и настроен радиолюбителем; он отображает информацию , такие как мгновенная экономия топлива (например , л / 100 км, мили на галлон или километры на литр), параметры настройки двигателя и т.д. на ЖКАХ."

я так понял это тоже связка elm327 + arduino

viki13viki
Offline
Зарегистрирован: 14.11.2016

MaksVV вы меня не поняли, мне надо вывести определенный байт из ответа, а ваши варианты выводят байт из отправленного сообщения. Мне нужно отправить сообщение byte message[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A}; и приходит ответ 83 F1 11 41 05 6C 37 , мне нужно выловить только пятый байт (6С) перевести в DEC (108) и отнять 40, итог 68 градусов и вывести в Serial. Пробую так 

int Temp;

Temp = mySerial.read (byte 5); // и так (byte [5]) 

Serial.println (Temp);

не компилится, ошибка. Может надо всеж таки применить буфер и char? Но пока еще до этого не дошел. Вопрос как правильно из ответа вылавливать нужный байт и обработать его.....

Пытаюсь разобратся с буфером и char. нашел скетч там.... приходит ответ 83 F1 10 C1 B6 8F CS и в скетче строка while (buffer[18] != 0xC1); //Положительный ответ на соединение ,как он высчитал что это 18 в буфере, или ответ 9E F1 10 61...........CS(или так 80 F1 10 26 61......CS не поню точно) в скетче строка if (buffer[10] == 0x61) {       // Положительный ответ (buffer[10] == 0x61) как подсчитал что это buffer 10, или ответ 9E F1 10 61........... (где то тут температура).......CS в скетче строка To1 = buffer[20] - 40;  //Температура ОЖ . Подтолкните плиз,  обычно сам дохожу до всего, а вот с выводом значений застраял.

MaksVV
Offline
Зарегистрирован: 06.08.2015

понятно, я то думал сообщение уже приведено к виду byte[] {тра та та }. нужно посмотреть весь скетч

viki13viki
Offline
Зарегистрирован: 14.11.2016

Выше мои пост и написано # а теперь самое вкусное# там свернуть весь скетче, но через часа 2 закину ещё раз, чуток переделанный.

MaksVV
Offline
Зарегистрирован: 06.08.2015

а в конце принятого сообщения всегда CS ?

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

На сколько я знаю да. CS это контрольная сумма. В посте 12 полный скетче, самое вкусное.

MaksVV
Offline
Зарегистрирован: 06.08.2015

попробуй так, в этом скетче при принятии данных с mySerial они записываются в массив байтов MessageRx[8]. Записываются только 8 байт (можно поменять). Потом можно вытягивать нужные байты и делать вычисления, аналогично скетчам выше 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;
//variables
int dotdelay = 1000;
int timeout = 1000;
int timeold;
int messagelength = 1;
int messagelength2 = 5;
int messagelength3 = 6;
int k=0;
byte  inbyte=0;
byte MessageRx[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // массив байтов принимаемого сообщения

byte message1[1] = {0x81}; byte message2[1] = {0x11}; byte message3[1] = {0xF1}; byte message4[1] = {0x81}; byte message5[1] = {0x04};
byte message6[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A};
byte message7[5] = {0x81,0x11,0xF1,0x3E,0xC1};

void setup() {
    Serial.begin(115200);
  pinMode(TX, OUTPUT);
  
}

void loop() {
  fastinit();
  sendrequest1();
  delay(5);
  sendrequest2();
  delay(5);
  sendrequest3();
  delay(5);
  sendrequest4();
  delay(5);
  sendrequest5();
  delay(5);
  delay(50);
  Serial.println("");
  
  recievedata();   
  
}

void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  // makes K-line high 3
    delay(360);             // wait for K-line to be clear 3
    digitalWrite (TX, LOW);  // makes K-line low  3
    delay(25);
    digitalWrite (TX, HIGH); // makes K-line high  3
    delay(25);               //last delay before first message
    mySerial.begin(10400);  // baud rate of the OBD
    Serial.println("starting serial comunication");
    mode++;
  }
}
//-----------------------------------------------------------
void sendrequest1() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message1[i]);
    Serial.print(message1[i],HEX);
  } 
}
void sendrequest2() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message2[i]);
    Serial.print(message2[i],HEX);
  } 
}
void sendrequest3() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message3[i]);
    Serial.print(message3[i],HEX);
  } 
}
void sendrequest4() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message4[i]);
    Serial.print(message4[i],HEX);
  } 
}
void sendrequest5() {
  for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
    mySerial.write(message5[i]);
    Serial.print(message5[i],HEX);
  } 
}
//---------------------------------------------------------------------
void pids() {
  for (int i = 0; ((i < messagelength3  ) & (mode == 1)); i++) {
    mySerial.write(message6[i]);
    Serial.print(message6[i],HEX);
  } 
}
void present() {
  for (int i = 0; ((i < messagelength2) & (mode == 1)); i++) {
    mySerial.write(message7[i]);
    Serial.print(message7[i],HEX);
  } 
}

void recievedata() {
      present();
      delay(55);
      Serial.println("");
  int i = 0;
  int dataok = 0;
  Serial.println("   waiting for data");
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("   TIMEOUT");
      
      pids();
      delay(55);
      Serial.println("");
      recievedata();
      return;
    }
    if (mySerial.available()) {
      delay(100);
      
      k=0;
      inbyte=0;
     int Temp = 0;         
  while( mySerial.available() && k < 10) {
     inbyte = mySerial.read();
    k++;
    if (k==1 )MessageRx[0] = inbyte;
    if (k==2 ) MessageRx[1] = inbyte;
    if (k==3 ) MessageRx[2] = inbyte;
    if (k==4 ) MessageRx[3] = inbyte;
    if (k==5 ) MessageRx[4] = inbyte;
    if (k==6 ) MessageRx[5] = inbyte;
    if (k==7 ) MessageRx[6] = inbyte;
    if (k==8 ) MessageRx[7] = inbyte;
 
     }
Temp = MessageRx[5]-40;
// распечатаем принятое сообщение, после того как в буфере сериала перестали появляться данные      
 Serial.print (MessageRx[0], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[1], HEX) ; Serial.print (" ") ; 
  Serial.print (MessageRx[2], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[3], HEX) ; Serial.print (" ") ; 
  Serial.print (MessageRx[4], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[5], HEX) ; Serial.print (" ") ; 
  Serial.print (MessageRx[6], HEX) ; Serial.print (" ") ; Serial.println (MessageRx[7], HEX) ;
Serial.print ("Температура:  "); Serial.print (Temp); Serial.println ("*C"); 
  
  
    }
     } 
  
  }

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

Это интересно. Спасибо, завтра попробую и отпишусь.

MaksVV
Offline
Зарегистрирован: 06.08.2015

ещё чуть поправил, убрал циклы фор, где не нужно 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;
//variables
int dotdelay = 1000;
int timeout = 1000;
int timeold;

int messagelength2 = 5;
int messagelength3 = 6;
int k=0;
byte  inbyte=0;

int Temp = 0;    // температура 

byte MessageRx[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // массив байтов принимаемого сообщения

byte message1 = 0x81;
byte message2 = 0x11; 
byte message3 = 0xF1; 
byte message4 = 0x81; 
byte message5 = 0x04;
byte message6[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A};
byte message7[5] = {0x81,0x11,0xF1,0x3E,0xC1};

void setup() {
    Serial.begin(115200);
  pinMode(TX, OUTPUT);
  
}

void loop() {
  fastinit();
  
  mySerial.write (message1);
    Serial.print(message1,HEX);
  delay(5);
 
  mySerial.write(message2);
    Serial.print(message2,HEX);
  delay(5);
  
   mySerial.write(message3);
    Serial.print(message3,HEX);
  delay(5);
  
  mySerial.write(message4);
    Serial.print(message4,HEX);
  delay(5);
  
   mySerial.write(message5);
    Serial.print(message5,HEX);
  delay(5);
  
  delay(50);
  Serial.println("");
  
  recievedata();   
  
}

void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  // makes K-line high 3
    delay(360);             // wait for K-line to be clear 3
    digitalWrite (TX, LOW);  // makes K-line low  3
    delay(25);
    digitalWrite (TX, HIGH); // makes K-line high  3
    delay(25);               //last delay before first message
    mySerial.begin(10400);  // baud rate of the OBD
    Serial.println("starting serial comunication");
    mode++;
  }
}

  
//---------------------------------------------------------------------
void pids() {
  for (int i = 0; ((i < messagelength3  ) & (mode == 1)); i++) {
    mySerial.write(message6[i]);
    Serial.print(message6[i],HEX);
  } 
}
void present() {
  for (int i = 0; ((i < messagelength2) & (mode == 1)); i++) {
    mySerial.write(message7[i]);
    Serial.print(message7[i],HEX);
  } 
}

void recievedata() {
      present();
      delay(55);
      Serial.println("");
  int i = 0;
  int dataok = 0;
  Serial.println("   waiting for data");
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      Serial.println("   TIMEOUT");
      
      pids();
      delay(55);
      Serial.println("");
      recievedata();
      return;
    }
    if (mySerial.available()) {
      delay(100);
      
      k=0;
      inbyte=0;
          
  while( mySerial.available() && k < 10) {
     inbyte = mySerial.read();
    k++;
    if (k==1 )MessageRx[0] = inbyte;
    if (k==2 ) MessageRx[1] = inbyte;
    if (k==3 ) MessageRx[2] = inbyte;
    if (k==4 ) MessageRx[3] = inbyte;
    if (k==5 ) MessageRx[4] = inbyte;
    if (k==6 ) MessageRx[5] = inbyte;
    if (k==7 ) MessageRx[6] = inbyte;
    if (k==8 ) MessageRx[7] = inbyte;
 
     }
Temp = MessageRx[5]-40;
// распечатаем принятое сообщение, после того как в буфере сериала перестали появляться данные      
 Serial.print (MessageRx[0], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[1], HEX) ; Serial.print (" ") ; 
  Serial.print (MessageRx[2], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[3], HEX) ; Serial.print (" ") ; 
  Serial.print (MessageRx[4], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[5], HEX) ; Serial.print (" ") ; 
  Serial.print (MessageRx[6], HEX) ; Serial.print (" ") ; Serial.println (MessageRx[7], HEX) ;
Serial.print ("Температура:  "); Serial.print (Temp); Serial.println ("*C"); 
  
  
    }
     } 
  
  }

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

Ок. Огромное спасибо. Не терпится уже попробовать. Первый раз кто то пытается мне помочь. Огромное человеческое спасибо. Завтра отпишусь. Блин, ты убрал весь мусор в котором я сомневался, респект и увпжуха тебе.

viki13viki
Offline
Зарегистрирован: 14.11.2016

Привет. Продолжим. Еще раз огромное спасибо MaksVV за толчок в нужном направлении. Есть парочка проблем. Я подкоррективровал все, повыкидывал лишнее и т.д. проблемы: 1. при ините идет пересчет байта из ответа после инита ( естественно не коректная температура), потом начинает показывать корректно температуру крутя loop. Я попытался вывести чтение в отдельную функцию tempdata(); но оно все равно считывает при старте из ответа после инита. Нужно чтобы чтение косалось только ответа из температуры. Может нудно как то после каждого запроса очищать масив? Тем более в будущем то будет много других параметров. 2. В void temp() хотел убрать строчку  Serial.print(message6[i],HEX); чтобы не выводило на экран отправленное сообщение, так как в будущем это все будет выводится на TFT LCD и мне нужна будет только цифра, но после этого удалелния перестает читатся температура.  MaksVV как всегда надежда на тебя. вот переделанный скетч:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;
int dotdelay = 1000;
int timeout = 1000;
int timeold;
int messagelength2 = 5;
int messagelength3 = 6;
int k=0;
byte  inbyte=0;
int Temp = 0;    // температура 

//ПРИНИМАЕМЫЙ МАССИВ БАЙТОВ--------------------------------------------------------
byte MessageRx[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 

//MESSAGES SEND---------------------------------------------------------------------
byte message1 = 0x81;
byte message2 = 0x11; 
byte message3 = 0xF1; 
byte message4 = 0x81; 
byte message5 = 0x04;
byte message6[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A};
byte message7[5] = {0x81,0x11,0xF1,0x3E,0xC1};

//SETUP-----------------------------------------------------------
void setup() {
    Serial.begin(115200);
  pinMode(TX, OUTPUT);
  fastinit();
  }

//LOOP------------------------------------------------------------
void loop() {
     temp();
      delay(55);
      tempdata(); 
  }

//FAST INIT 5boud--------------------------------------------------
void fastinit(){
  if (!mode) {
    Serial.println("starting comunication (fastinit)");
    digitalWrite (TX, HIGH);  // makes K-line high 3
    delay(360);             // wait for K-line to be clear 3
    digitalWrite (TX, LOW);  // makes K-line low  3
    delay(25);
    digitalWrite (TX, HIGH); // makes K-line high  3
    delay(25);               //last delay before first message
    mySerial.begin(10400);  // baud rate of the OBD
    Serial.println("starting serial comunication");
    mode++;
  }
   mySerial.write (message1);
    delay(5);
   mySerial.write(message2);
    delay(5);
   mySerial.write(message3);
    delay(5);
   mySerial.write(message4);
    delay(5);
   mySerial.write(message5);;
   delay(55);
   Serial.println("FAST INIT OK");
   recievedata();  
  }

//MENSSAGES-----------------------------------------------------------
void temp() {
  for (int i = 0; ((i < messagelength3  ) & (mode == 1)); i++) {
    mySerial.write(message6[i]);
    Serial.print(message6[i],HEX);
  } 
}
void present() {
  for (int i = 0; ((i < messagelength2) & (mode == 1)); i++) {
    mySerial.write(message7[i]);
    Serial.print(message7[i],HEX);
  } 
}

//RECIEVE DATA------------------------------------------------------
void recievedata() {
  int i = 0;
  int dataok = 0;
  while (!dataok) {
    int time = millis();
    if ((timeold + timeout) < time) {
      timeold = time;
      present();
      delay(55);
      return;
    }
   }
  }
 
 //RECIEVE TEMPERATURE---------------------------------------------
 void tempdata(){
        if (mySerial.available()) {
      delay(100);
      k=0;
      inbyte=0;
     
  while( mySerial.available() && k < 10) {
     inbyte = mySerial.read();
    k++;
    if (k==6 ) MessageRx[5] = inbyte;
   }
Temp = MessageRx[5]-40; 
    Serial.print (Temp); 
    Serial.println ("*C"); 
    }
  } 
  
  

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

а у тебя после инита в ответе только байт с температурой отличается? просто можно делать проверку по другим байтам при расчете температуры. Напиши ответ ЭБУ после инита и который приходит в loope . 

MaksVV
Offline
Зарегистрирован: 06.08.2015
почитал сообщения выше, у тебя так происходит обмен ? 
 
Отправляю 81 31 F1 81 24           получаю 83 F1 31 C1 E9 8F DE //запрос соединения где С1 соединение ОК
 
Отправляю 81 31 F1 3E E1           получаю 81 F1 31 7E 21           //запрос присутсвия где 7E присутсвие ОК 
 
запрос темп 82 11 F1 01 05 8A       получаю 83 F1 11 41 05 6C 37
 
Если да, то можно например считать температуру только тогда, когда второй байт в ответе 11, ну или не равен 31. 
 
 
viki13viki
Offline
Зарегистрирован: 14.11.2016
Отправляю 81 11 F1 81 04           получаю 83 F1 11 C1 E9 8F CS//запрос соединения где С1 соединение ОК
 
Отправляю 81 11 F1 3E C1           получаю 81 F1 11 7E CS           //запрос присутсвия где 7E присутсвие ОК 
 
запрос темп 82 11 F1 01 05 8A       получаю 83 F1 11 41 05 6C 37
везде 11 это адррес блока мотора. щас я ответ не вижу я все выкинул, вижу только температуру. щас начеркаю что я получаю в сериале.
вот 
starting comunication (fastinit)
starting serial comunication
FAST INIT OK
8111F13EC18211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A24*C
8211F1158A71*C
8211F1158A72*C
8211F1158A72*C
8211F1158A72*C
и дальше так 8211F1158A72*C 
как видишь в первых ответах есть 24*C это оно считывает байт с ответа на соединение а дальше уже температуруру 71*C. 
MaksVV
Offline
Зарегистрирован: 06.08.2015

дак толку то , у тебя выводиться в сериал только то, что ты отправляешь. Зря убрал запись всех байтов в массив и вывод в сериал всего сообщения от эбу. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

типа так 

while( mySerial.available() && k < 10) {
     inbyte = mySerial.read();
    k++;
    if (k==1 )MessageRx[0] = inbyte;
    if (k==2 ) MessageRx[1] = inbyte;
    if (k==3 ) MessageRx[2] = inbyte;
    if (k==4 ) MessageRx[3] = inbyte;
    if (k==5 ) MessageRx[4] = inbyte;
    if (k==6 ) MessageRx[5] = inbyte;

     }
Temp = MessageRx[5]-40;
// распечатаем принятое сообщение, после того как в буфере сериала перестали появляться данные     

 Serial.print (MessageRx[0], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[1], HEX) ; Serial.print (" ") ;

  Serial.print (MessageRx[2], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[3], HEX) ; Serial.print (" ") ;

  Serial.print (MessageRx[4], HEX) ; Serial.print (" ") ; Serial.print (MessageRx[5], HEX) ; Serial.print (" ") ;

  Serial.print (MessageRx[6], HEX) ; Serial.print (" ") ; Serial.println (MessageRx[7], HEX) ;

Serial.print ("Температура:  "); Serial.print (Temp); Serial.println ("*C");

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

и в строках 72 и 78 вместо print сделай println

viki13viki
Offline
Зарегистрирован: 14.11.2016

можт и в этом проблема. но я буду выводить на TFT LCD и хотел все убрать, но только что подумал , пусть оно себе в сериал в воздух выводит а я на экран выведу только то что мне нужно типа myGLCD.printNumI(Temp, 410, 40); , я прав?