Проверка нескольких условий
- Войдите на сайт для отправки комментариев
Пт, 22/11/2019 - 21:45
Всем добрый вечер. Помогите пожалуйста разобраться в данном коде выдает следующую ошибку:
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);
}
Проверьте русские символы в строке перед if.
Спасибо. Разобрался. Не хватало фигурной скобки. Вот только условие всё равно не срабатывает(((. Прошу помощи...
#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); } }Условие, очевидно, срабатывает, только не так, как Вы ожидаете. Но как именно Вы ожидаете, знаете только Вы, Вы нам про это забыли сказать.
Но, в любом случае, запомните навсегда, в таких случаях, ПРЕЖДЕ, чем бежать на форум с вопросом (в частности, ПРЕЖДЕ, чем отвечать на этот мой пост, вы должна прямо перед самым условием поставить Serial.print.... и напечатать ВСЕ переменные, входящие в условие. Посмотреть на них и ... скорее всего никаких постов и вопросов Вам не понадобится.
Сделайте это.
Сделайте это.
так тогда и на форуме будет нечего делать, а пообщаться? )))