OBD-соединение Arduino
Я использую этот код на Arduino Nano, и он работает нормально.
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // выбираем контакты, используемые на ЖК-панели
#include <OBD2UART.h>
COBD obd;
void setup()
{
// начинаем связь с адаптером OBD-II UART
obd.begin();
lcd.begin(16, 2);
// инициируем соединение OBD-II до успешного завершения
while (!obd.init());
}
void loop()
{
int value;
obd.readPID(PID_RPM, value);
int value2;
obd.readPID(PID_COOLANT_TEMP, value2);
lcd.setCursor(0,0);
lcd.print("RPM = ");
lcd.print(value);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("ECT = ");
lcd.print(value2);
lcd.print(" ");
}
Но если OBD не подключен, то он зависает в настройке. Что я хочу сделать, так это пройти настройку, даже если obd не подключен, и попытаться тем временем подключиться к OBD... что-то вроде отображения "Соединение..." в первой строке и что-то посчитать во второй...
Заранее спасибо
@David, 👍0
1 ответ
Лучший ответ:
▲ 0
Цикл while()
в setup()
— вот что зависает. Вместо вызова odb.init()
до тех пор, пока он не вернет true
, просто вызовите его один раз, чтобы он был инициирован, а затем вызовите/проверьте loop()
и реагировать соответственно:
void setup()
{
// начинаем связь с адаптером OBD-II UART
obd.begin();
lcd.begin(16, 2);
// инициируем соединение OBD-II один раз
obd.init()
}
void loop()
{
static int error_count;
if (!obd.init()) {
// Не подключено
lcd.setCursor(0,0);
lcd.print("Connecting");
lcd.setCursor(0,1);
lcd.print("Count: ");
lcd.print(error_count);
error_count++;`
} else {
int value;
int value2;
obd.readPID(PID_RPM, value);
obd.readPID(PID_COOLANT_TEMP, value2);
lcd.setCursor(0,0);
lcd.print("RPM = ");
lcd.print(value);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("ECT = ");
lcd.print(value2);
lcd.print(" ");
}
}
,
@jose can u c
Смотрите также:
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Питание светодиодной ленты - Сколько ампер?
- Arduino nano как клавиатура HID
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
Спасибо за ответ. Работает, но, похоже, есть большой тайм-аут, пока он не получит статус obd, если он еще не инициализирован., @David