bonjour à tous,
je viens vers vous pour un problème sur une ligne de code dont je ne comprend pas l'impact de la modification.
je travaille avec un capteur grove CO2 sensor (https://wiki.seeedstudio.com/Grove-CO2_Sensor/)
voici le code que j'utilise et qui fonctionne sans problème :
#include <SoftwareSerial.h>
SoftwareSerial s_serial(2, 3);
#define sensor s_serial
const unsigned char cmd_get_sensor[] =
{
0xff, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79
// Read gas concentration
};
unsigned char data[9];
int temperature;
int CO2PPM;
void setup() {
sensor.begin(9600);
Serial.begin(9600);
Serial.println("get a 'g', begin to read from sensor!");
Serial.println("********************************************************");
Serial.println();
}
void loop() {
if(dataReceive()){
Serial.print("T = ");
Serial.print(temperature);
Serial.print(" C");
Serial.print(" CO2 = ");
Serial.print(CO2PPM);
Serial.print(" ppm ");
Serial.println("");
}
delay(1000);
}
bool dataReceive(void){
byte data[9];
int i = 0;
for(i=0; i<sizeof(cmd_get_sensor); i++){
sensor.write(cmd_get_sensor[i]);
}
delay(10);
if(sensor.available()) {
Serial.println("capteur disponible");
while(sensor.available()){
for(int i=0;i<9; i++){
data[i] = sensor.read();
}
}
}
if((i != 9) || (1 + (0xFF ^ (byte)(data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7]))) != data[8]){
return false;
}
CO2PPM = (int)data[2] * 256 + (int)data[3];
temperature = (int)data[4] - 40;
return true;
}
je souhaite apporté une modification en supprimant simplement le Serial.println("capteur disponible"); dans la fonction booléenne, pour n'avoir que les print présent dans la fonction loop.
mais pour une raison que j'ignore, la suppression de ce print semble faire la passer la fonction bool en false permanent, et n'affiche donc plus les valeurs de la fonction loop ensuite.
est-ce que quelqu'un aura une idée du pourquoi du comment ?
merci à vous