Есть информация по подключению к nissan. Известно что подключение производится в моем случае по протоколу ISO-14230 (fast init). Использую вот такой алгоритм:
1. на выход K-line подаю HIGH не менее 300 мс
2. на выход K-line подаю LOW 25 мс
3. на выход K-line подаю HIGH 25 мс
4. далее StartCommunication на скорости 10400
5. прием ответа
Код HTML:
#include <LiquidCrystal.h>

#define K_IN  0 
#define K_OUT 1 

//create object to control an LCD.
enum { LCD_WIDTH = 16, LCD_HEIGHT = 2 };

LiquidCrystal lcd(7, 6, 4, 5, 2, 3);

void setup()  { 
  pinMode(K_IN, INPUT); 
  pinMode(K_OUT, OUTPUT); 
} 

void loop()
{ 
  lcd.clear();
  lcd.print("ECU init..."); 
  obdConnect();
  delay(1000); 
} 

void obdConnect()
{ 
  int n,i; 
  byte buf[20];
  
  buf[0]=0x81;
  buf[1]=0x10;
  buf[2]=0xFC;
  buf[3]=0x81; 
  buf[4]=0x0E; 
  
  serial_tx_off();                          
  serial_rx_off();                              
      
  digitalWrite(K_OUT, HIGH);               
  delay(300); 
  digitalWrite(K_OUT, LOW);   
  delay(25);  
  digitalWrite(K_OUT, HIGH);     
  delay(25); 
  Serial.begin(10400);   // switch now to 10400 bauds 
  for(i=0;i<5;i++)
  {    
    Serial.write(buf[i]);
  }
  lcd.clear();
  n=Serial.available();
  if (i > 0)
  {
    for (i=0;i<n;i++)
    {
      buf[i]=Serial.read();;      
    }
    lcd.clear();
    lcd.print("OK"); 
  }
  else
  {
    lcd.clear();
    lcd.print("Error");  
  }
} 

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

void serial_tx_off() { 
   UCSR0B &= ~(_BV(TXEN0));   
   delay(20);                                
}
Но ECU ответа не дает. Знающие, помогите в чем может быть проблема.
Есть сомнения в моменте переключения на скорость 10400. Может быть проблема в самом подходе к решению задачи?