MH-Z19B и отключение автокалибровки

Paladian
Offline
Зарегистрирован: 23.10.2019

Здравствуйте! Имеется датчик MH-Z19B и скетч который я написал на основе чужого. Всё работает- CO2 мерит и даже на LCD выводит, но необходимо добавить возможность отключения/включения функции автокалибровки управляемую тумблером. Мне всё понятно с if-else,  но как ввести саму команду? Я пытался разобраться читая материал в инете, но только ещё больше запутался...
 


#include <SoftwareSerial.h>



SoftwareSerial mySerial(14, 15); // A0 - к TX сенсора, A1 - к RX







 
void setup()
{




Serial.begin(9600);
  mySerial.begin(9600);




    
}
 
void loop()
{





mySerial.write(cmd, 9);
  memset(response, 0, 9);
  mySerial.readBytes(response, 9);
  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response[i];
  crc = 255 - crc;
  crc++;

  if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
  } else {
    unsigned int responseHigh = (unsigned int) response[2];
    unsigned int responseLow = (unsigned int) response[3];
    unsigned int ppm = (256*responseHigh) + responseLow;
    Serial.println(ppm);
    x=ppm;
  }

Вот участок кода который у меня отвечает за работу датчика.

Так же я нашёл эти нужные мне команды в инете:

// Serial3.write("\xFF\x01\x79\x00\x00\x00\x00\x00\x86"); ABC logic off
// Serial3.write("\xFF\x01\x79\xA0\x00\x00\x00\x00\xE6"); ABC logic on

Но как конкретно их вставить в код? Так и писать или нужно что то ещё добавить? Просто это не светодиод, а внутренние команды и срабатывание не будет видно невооруженному глазу, поэтому и хочу уточнить у знающих людей...

b707
Offline
Зарегистрирован: 26.05.2017

Paladian пишет:

Но как конкретно их вставить в код? Так и писать или нужно что то ещё добавить?

например так

unsigned char cmd_off[] = "\xFF\x01\x79\x00\x00\x00\x00\x00\x86"; ABC logic off
unsigned char cmd_on[] = "\xFF\x01\x79\xA0\x00\x00\x00\x00\xE6"; ABC logic on

и потом подставить вместо cmd в код выше

Paladian
Offline
Зарегистрирован: 23.10.2019

b707 пишет:

и потом подставить вместо cmd в код выше

mySerial.write(unsigned char cmd_on[], 9);

так?

b707
Offline
Зарегистрирован: 26.05.2017

Paladian пишет:

mySerial.write(unsigned char cmd_on[], 9);

так?

нет.

И после такой строчки желание помогать резко пропало. У нас тут не детский сад, первые пару глав учебника по языку Си никто вам обьяснять не будет.

b707
Offline
Зарегистрирован: 26.05.2017

после такого сразу очевидно. что фраза "скетч который я написал" - чистое вранье.

Paladian
Offline
Зарегистрирован: 23.10.2019

Ну извините, я не профессионал в языке Си в отличии от вас. К тому же я сказал что я не написал его, а взял чужой за основу, по факту мне не очень понятны некоторые функции с языком Си, иначе бы я написал сам, а не брал чужой модуль. Остальные части кода я писал сам, но я их и не приводил- они проблемы не вызывают и понятны мне, спрашивал только то что не ясно. Не все в отличии от вас могут уделить своему хобби большое количество времени(хотя возможно в вашем случае это и профессия), так что я не понимаю причины вашего высокомерия...
Кто то может подсказать ещё не оскорбляя?

sadman41
Offline
Зарегистрирован: 19.10.2016

MH-Z19 никак не подтверждает отключение ABC logic и статуса не возвращает.

К тому же, без контрольного прибора нет гарантии, что функция ABC logic будет отключена в необходимый момент, когда сенсор за 400PPM принял действительно 400, а не, к примеру, 800 единиц

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Paladian пишет:

Кто то может подсказать ещё не оскорбляя?

Так тебе ж уже подсказали - надо прочитать

b707 пишет:
первые пару глав учебника по языку Си

Какие ещё подсказки тебе нужны?