Проверка нескольких условий

plants34
Offline
Зарегистрирован: 19.09.2019

Всем добрый вечер. Помогите пожалуйста разобраться в данном коде выдает следующую ошибку:

expected unqualified-id before 'if'

if (cur_h >= 7 && cur_h < 19 && airT < 23) { 
  digitalWrite(Relay_Heat, LOW); // включаем подогрев дня
  digitalWrite(Relay_Fan, LOW); //включаем кулер
  myGLCD.setColor(VGA_RED);
  myGLCD.print("HEAT", 162, 130);
  myGLCD.print("FAN", 167, 268);
}

 

nik182
Offline
Зарегистрирован: 04.05.2015

Проверьте русские символы в строке перед if.

plants34
Offline
Зарегистрирован: 19.09.2019

Спасибо. Разобрался. Не хватало фигурной скобки. Вот только условие всё равно не срабатывает(((. Прошу помощи...

#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS3231);

#include <Wire.h>
#include <iarduino_AM2320.h>
#include <memorysaver.h>
#include <UTFT.h>

#define moisture_sensor A0 //пин подключения датчика влажности почвы
int very_moist_value = 231;//переменная 100% увлажненния

const uint8_t RS   = 6;                                //
const uint8_t WR   = 5;                                //
const uint8_t CS   = 4;                                //
const uint8_t RST  = 3;                                //
const uint8_t SER  = 2;                                //

UTFT    myGLCD(TFT01_24SP, RS, WR, CS, RST, SER);      // Создаём объект для работы с дисплеем

// НАСТРОЙКИ ДИСПЛЕЯ
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
iarduino_AM2320 sensor;

#define Relay_Lamp 9 // пин реле включения освещения
#define Relay_Heat 10 // пин реле включения подогрева
#define Relay_Vent 11 // пин реле включения вентиляции
#define Relay_Fan 12 // пин реле включения кулера (с обогревателем)

void setup() {
  sensor.begin(); //запуск датчика АМ2320
  time.begin(); //запуск модуля RTC3231
  time.settime(0, 59, 18, 06, 11, 19, 2);

  pinMode(Relay_Lamp, OUTPUT);
  pinMode(Relay_Heat, OUTPUT);
  pinMode(Relay_Vent, OUTPUT);
  pinMode(Relay_Fan, OUTPUT);

  digitalWrite(Relay_Lamp, HIGH); //выключаем реле
  digitalWrite(Relay_Heat, HIGH);
  digitalWrite(Relay_Vent, HIGH);
  digitalWrite(Relay_Fan, HIGH); //кулер совместно с подогревом

  myGLCD.InitLCD(PORTRAIT);
  myGLCD.clrScr();
  myGLCD.fillScr(VGA_BLACK);
}
void loop() {
  sensor.read();

  float airT = sensor.tem; //переменная температуры воздуха
  float airH = sensor.hum; //переменная влажности воздуха

  int cur_h = time.Hours; // текущее время - количество часов в 24 часовом формате
  int cur_min = time.minutes; //текущее время -количество минут

  myGLCD.setFont(BigFont);
  myGLCD.setColor(VGA_GREEN);
  myGLCD.print("GROWCONTROL 1.0", CENTER, 10);
  myGLCD.setColor(VGA_RED);
  //Блок вывода с RTC DS_3231
  myGLCD.print("TIME", 43, 43);
  myGLCD.setColor(VGA_WHITE);
  myGLCD.setFont(SmallFont);

  // Вывод времени на экран
  myGLCD.print(String(time.gettime("H:i:s, D")), 25, 70);

  //разлиновка дисплея
  myGLCD.drawLine(5, 30, 232, 30);
  myGLCD.drawLine(5, 98, 232, 98);
  myGLCD.drawLine(5, 170, 232, 170);
  myGLCD.drawLine(5, 240, 232, 240);
  myGLCD.drawLine(150, 40, 150, 310); //вертикальная линия
  myGLCD.setFont(BigFont);
  //блок вывода температуры
  myGLCD.setColor(VGA_PURPLE);
  myGLCD.print("AirTemp.", 12, 110);
  myGLCD.setColor(VGA_WHITE);
  myGLCD.printNumF(sensor.tem, 1, 40, 142);
  //блок вывода влажности
  myGLCD.setColor(VGA_BLUE);
  myGLCD.print("AirHum.", 20, 181);
  myGLCD.setColor(VGA_WHITE);
  myGLCD.printNumF(sensor.hum, 1, 40, 212);
  delay(1000);
  myGLCD.setColor(VGA_TEAL);
  //блок вывода влажности почвы
  myGLCD.print("SoilHum.", 13, 252);
  int moisture_value = analogRead(moisture_sensor); //переменная влажности почвы
  int moisture_value_percent = map(moisture_value, very_moist_value, 1023, 100, 0);
  //myGLCD.print(String (moisture_value), 35, 275);
  myGLCD.setColor(VGA_WHITE);
  myGLCD.print(String (moisture_value_percent) + '%', 50, 282);
  delay(1000);

  //Включаем реле освещения
  if (cur_h >= 7 && cur_h < 19) { //если активно
    digitalWrite(Relay_Lamp, LOW); //включаем реле
    myGLCD.setColor(VGA_RED);
    myGLCD.print("LAMP", 162, 55);
  }
  else if (cur_h >= 19)  {
    digitalWrite(Relay_Lamp, HIGH); //отключаем реле
    myGLCD.setColor(VGA_BLACK);
    myGLCD.print("LAMP", 162, 55);
  }
  else {
  digitalWrite(Relay_Lamp, HIGH); //отключаем реле
  }

// Управление подогревом
if (cur_h >= 7 && cur_h < 19 && airT < 23) {
  digitalWrite(Relay_Heat, LOW); // включаем подогрев дня
  digitalWrite(Relay_Fan, LOW); //включаем кулер
  myGLCD.setColor(VGA_RED);
  myGLCD.print("HEAT", 162, 130);
  myGLCD.print("FAN", 167, 268);
}
else if (cur_h >= 7 && cur_h < 19 && airT > 25) { 
  digitalWrite(Relay_Heat, HIGH); // включаем подогрев ночи
  digitalWrite(Relay_Fan, HIGH); //включаем кулер
  myGLCD.print("HEAT", 162, 130);
  myGLCD.print("FAN", 167, 268);
}
else {
  digitalWrite(Relay_Heat, HIGH); //выключаем реле подогрева
  digitalWrite(Relay_Fan, HIGH); //выключаем кулер
  myGLCD.print("HEAT", 162, 130);
  myGLCD.print("FAN", 167, 268);
}
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Условие, очевидно, срабатывает, только не так, как Вы ожидаете. Но как именно Вы ожидаете, знаете только Вы, Вы нам про это забыли сказать.

Но, в любом случае, запомните навсегда, в таких случаях, ПРЕЖДЕ, чем бежать на форум с вопросом (в частности, ПРЕЖДЕ, чем отвечать на этот мой пост, вы должна прямо перед самым условием поставить Serial.print.... и напечатать ВСЕ переменные, входящие в условие. Посмотреть на них и ... скорее всего никаких постов и вопросов Вам не понадобится.

Сделайте это.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Сделайте это.

так тогда и на форуме будет нечего делать, а пообщаться? )))