добрый день, я вот мучаю код , походу уже затупил, инициализацию прописал, а запросы после 69 строки не идут, ардуино уно ,лсд TFT, общение по rxtx, помогите найти ошибку пжлста.
C++:
#include <TFT.h> // Подключаем библиотеку TFT
#include <SPI.h> // Подключаем библиотеку SPI
#define cs 9 // Указываем пины cs
#define dc 8 // Указываем пины dc (A0)
#define rst 7 // Указываем пины reset
TFT TFTscreen = TFT(cs, dc, rst);
#define K_line_RX 0
#define K_line_TX 1
int n;
int Temp1 = 75;
int Temp2 = 25;
int PMM = " ";
int SPEED = " ";
String s;
int pac =0;
int tm = 10000;
byte init_obd[] = {0x81,0x10,0xFC,0x81,0x0E}; // инициализация K-line шины 81 10 FC 81 0E
byte pmm_obd[] = {0x04,0x21,0x81,0x04,0x01,0xAB}; // запрос оборотов двигателя C2 33 F1 01 0C F3
byte temp1_obd[] = {0x05,0xAC,0x81,0x02,0x11,0x0D,0x52}; // запрос температуры ож 05 AC 81 02 11 0D 52
byte temp2_obd[] = {0x81,0x10,0xF1,0xFC,0x82,0x0F}; // запрос температуры воздуха 81 10 FC 82 0F
byte speed_obd[] = {0xC2,0x33,0xF1,0x01,0x0D,0xF4}; // запрос скорости автомобиля C2 33 F1 01 0D F4
void setup() {
pinMode(K_line_RX, INPUT);
pinMode(K_line_TX, OUTPUT);
//myOLED.begin();
//myOLED.clrScr();
TFTscreen.begin(); // Эта строка необходима в начале каждого скетча, где используется TFT-экран:
TFTscreen.background(0, 0, 0); // Очищаем фон экрана, заливая его черным цветом:
}
void loop(){
read_CAN();
tm--;
if (tm <0){
tm=10000;
Serial.flush();
//for(int i=0;i<6;i++) Serial.write(pmm_obd[i]), delay (10);
}
}
void read_CAN(){
if (pac == 0) {
digitalWrite(K_line_TX, HIGH), delay(300);
digitalWrite(K_line_TX, LOW), delay(25);
digitalWrite(K_line_TX, HIGH), delay(25); //-----------_-
Serial.begin(10400); // ------------_- ISO 14230-4 KWP 10.4 Kbaud
for(int i=0;i<5;i++) Serial.write(init_obd[i]), delay (10); // отправляем команду инициализации K-line шины
//for(int i=0;i<5;i++) Serial.write(pmm_obd[i]), delay (10);
//delay(100);
for(int i=0;i<5;i++) Serial.write(temp2_obd[i]), delay (10);
// delay(100);
for(int i=0;i<5;i++) Serial.write(init_obd[i]), delay (10);
//delay(100);
for(int i=0;i<5;i++) Serial.write(temp2_obd[i]), delay (10);
//delay(100);
for(int i=0;i<5;i++) Serial.write(init_obd[i]), delay (10);
delay(250);
}
char byfer[30];
n = Serial.available();
if (n > 0) { pac++;
for (int i=0;i<n;i++) byfer[i]=Serial.read();
String byte8 = String(byfer[8],HEX); // С1 (HEX) = 193 (DEC) // С1 успешный ответ
String byte10 = String(byfer[10],DEC); // 05 HEX = 05 DEC, 0F HEX = 15 DEC, 0C HEX = 12 DEC, 0D HEX = 13 DEC
if (n == 14 && byte8 == "C1") { // ждем инициализхации шины
Serial.flush();
for(int i=0;i<6;i++) Serial.write(pmm_obd[i]), delay (10);
delay(100);
}
if (n == 14 && byte10 == "12" ) { // читаем обороты двигателя из 12-го и 13-го байта пакета
s = String(byfer[11],DEC);
int h = s.toInt();
s = String(byfer[12],DEC);
int l = s.toInt();
PMM = word(h, l)/4;
TFTscreen.background(0, 0, 0);
TFTscreen.stroke(255, 255, 255);
TFTscreen.setTextSize(2);
TFTscreen.setCursor(20,20);
TFTscreen.print(PMM);
delay(200);
}
}
}