@kgaudium

Почему не работает проверка IF в arduino?

Хочу написать проверку: если данные с датчика равны предыдущим данным, то светодиод горит не мигая и выводиться сообщение об ошибке, но как бы я не пытался это сделать ничего не менялось: при отключении модуля сообщение не отправлялось, светодиод мигал, а я уходил в запой. Вот код:
void setup() {
 
 while (!pressure.begin()){
    Serial.println("Modules init fail\nRetrying");
    analogWrite(10, 150);
    delay(1000);
 }
 analogWrite(10, LOW);
 Serial.println("Modules init success");

 
 Serial.println("BMP180's t°; BMP180's mBar; time");
}
 
void loop() {
  char status;
  double p180T,p180P,p0,a,b20t,p180T_if;

  analogWrite(10, 150);
  status = pressure.startTemperature();          // Считывание показания
  if(status!=0){                                 // Если значение status не 0, выполняем следующию команду.
     delay(status);                              // Ждем    
     status = pressure.getTemperature(p180T);}   // Полученые показания, сохраняем в переменную p180T
     
  status = pressure.startPressure(3);            // Считывание показания
  if(status!=0){                                 // Если значение status не 0, выполняем следующию команду.
    delay(status);                               // Ждем
    status = pressure.getPressure(p180P,p180T);} // Полученные показания, сохраняем в переменную p180P

 if (p180T != (p180T_if,10)){
   p180T_if = p180T;
   Serial.println();
   Serial.print(p180T,10); //max: 19
   Serial.print("; ");
   Serial.print(p180P,10); //max: 14
   Serial.print("; ");
   Serial.print(p180T_if);
   Serial.print("; ");
   Serial.print(p180T);
   Serial.print("; ");
  
   analogWrite(10, LOW);
   delay(1000);}
 else{
   analogWrite(10, 150);
   Serial.print("Pressure module disconnected");
   delay(1000);
 }
}

Я его немного урезал и убрал всё не по теме, если понадобиться полный код - пишите.
Заранее спасибо!
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
if (p180T != (p180T_if,10))

В этом месте наверняка имелось в виду что-то другое. Сейчас тут написано if (p180T != 10).
Ответ написан
Комментировать
@semen-pro
Объявите статус как
static char status = 0;
Тогда он будет объявлен один раз и будет хранится постоянно в начале оперативной памяти
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы