#include <LCD_1602_RUS.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <SoftwareSerial.h>
#include <Wire.h>
unsigned long last_read=millis(), period_read=8000; //Это параметры организации цикла измерения температуры и влажности
unsigned long last_yes=millis(), period_yes=100000; //Это параметры организации цикла задержки включения вентиляции и отопления
LCD_1602_RUS lcd(0x27, 16, 2);
// int knopka1=0;
//int knopka2=0;
int knopka3=0;
const int maxMoisture=50; //максимальная влажность
const int minTemperature=10; //минимальня температура
int LONGPRESSBUT1=0;
int LONGPRESSBUT2=0;
int val;
boolean button1 = false; //Переменная для хранения состояния кнопки1
boolean press_flag1 = false; //Флажок нажатия кнопки1
boolean long_press_flag1 = false; //Флажок долгого нажатия кнопки1
unsigned long last_press1 = 0; //Перемменная хранит момент последнего нажатия на кнопку1
boolean button2 = false; //Переменная для хранения состояния кнопки2
boolean press_flag2 = false; //Флажок нажатия кнопки2
boolean long_press_flag2 = false; //Флажок долгого нажатия кнопки2
unsigned long last_press2 = 0; //Перемменная хранит момент последнего нажатия на кнопку2
#define DHTPIN 6 //пин для получения сигнала от датчика DHT11
// Раскомментировать тип датчика, который используется
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
Serial.println("Hello");
dht.begin();
lcd.init(); // Инициализируем экран, включаем подсветку
lcd.backlight();
//Устанавливаем положение курсора для первой строки.
lcd.home();
//выводим строку 1
lcd.print("Welcome!");
//выводим строку 2
lcd.setCursor(0, 1);
lcd.print("AO Sam. Transf.");
}
void loop()
{
{
if (Serial.available())
{
val = Serial.read();
if (val = 'AUTOFUN')
{
//Serial.println("");
Serial.print("Авто вентиляция включено");
digitalWrite(10,HIGH);
LONGPRESSBUT1=1;
}
}
if(millis()-last_read>period_read)
{ last_read=millis(); //Если работа модуля очень длительная, то тип last_read надо изменить!
float h = dht.readHumidity(); //Измеряем влажность
float t = dht.readTemperature(); //Измеряем температуру
if (isnan(h) || isnan(t)) // Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
{
Serial.println("Ошибка считывания");
return;
}
Serial.println("");
Serial.print("Влажность: ");
Serial.print(h);
Serial.println(" %\t");
Serial.print("Температура: ");
Serial.print(t);
Serial.print(" *C ");
//Вывод показателей на экран
//Устанавливаем положение курсора для первой строки.
lcd.home();
//выводим строку 1
lcd.print("Темп.: ");
lcd.print(t);
lcd.print(" *C ");
//выводим строку 2
lcd.setCursor(0, 1);
lcd.print("Влажн.: ");
lcd.print(h);
lcd.print(" %");
}
button1 = digitalRead(14);
button2 = digitalRead(15);
// Все что касается Кнопки 1!!!!!!!!!!!!!!!!!
if(button1==true&&press_flag1==false&&millis()-last_press1>100)//если кнопка нажата
//флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag1 = !press_flag1; //Поднять флаг короткого нажатия на кнопку1
last_press1 = millis(); //Присвоить текущее время переменной last_press1
}
if (button1 == true && press_flag1 == true && millis() - last_press1 > 1000 && LONGPRESSBUT1==0) {
long_press_flag1 = !long_press_flag1;
last_press1 = millis();
Serial.println("");
Serial.print("Авто вентиляция включено"); // Само действие при длинном нажатии
LONGPRESSBUT1=1;
digitalWrite(10,HIGH);
}
if (button1 == true && press_flag1 == true && millis() - last_press1 > 1000 && LONGPRESSBUT1==1) //если кнопка нажата
{
long_press_flag1 = !long_press_flag1;
last_press1 = millis();
Serial.println("");
Serial.print("Авто вентиляция выключено"); // Само действие при длинном нажатии
LONGPRESSBUT1=0;
if (digitalRead(7)==HIGH)
{
digitalWrite(7,!digitalRead(7));
}
digitalWrite(10,LOW);
}
if (button1 == false && press_flag1 == true && long_press_flag1 == true) {
press_flag1 = !press_flag1;
long_press_flag1 = !long_press_flag1;
}
if (button1 == false && press_flag1 == true && long_press_flag1 == false) {
press_flag1 = !press_flag1;
digitalWrite(7,!digitalRead(7)); // Само действие при коротком нажатии
Serial.println("");
Serial.print("Вентиляция вкл/откл");
LONGPRESSBUT1=0;
digitalWrite(10,LOW);
}
if(button1==true&&press_flag1==false&&millis()-last_press1>100)//если кнопка нажата
//и перемення knopka1 равна 0 и флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag1 = !press_flag1; //Поднять флаг короткого нажатия на кнопку1
last_press1 = millis(); //Присвоить текущее время переменной last_press1
}
if (button1 == true && press_flag1 == true && millis() - last_press1 > 1000 && LONGPRESSBUT1==0) {
long_press_flag1 = !long_press_flag1;
last_press1 = millis();
Serial.println("");
Serial.print("Авто вентиляция выключено"); // Само действие при длинном нажатии
LONGPRESSBUT1=1;
digitalWrite(10,HIGH);
}
// Все что касается Кнопки 2!!!!!!!!!!!!!!!!!
if(button2==true&&press_flag2==false&&millis()-last_press2>100)//если кнопка нажата
//и перемення knopka2 равна 0 и флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag2 = !press_flag2; //Поднять флаг короткого нажатия на кнопку2
last_press2 = millis(); //Присвоить текущее время переменной last_press2
}
if (button2 == true && press_flag2 == true && millis() - last_press2 > 1000 && LONGPRESSBUT2==0) {
long_press_flag2 = !long_press_flag2;
last_press2 = millis();
Serial.println("");
Serial.print("Авто отопление включено"); // Само действие при длинном нажатии
LONGPRESSBUT2=1;
digitalWrite(11,HIGH);
}
if (button2 == true && press_flag2 == true && millis() - last_press2 > 1000 && LONGPRESSBUT2==1)
{
long_press_flag2 = !long_press_flag2;
last_press2 = millis();
Serial.println("");
Serial.print("Авто отопление выключено"); // Само действие при длинном нажатии
LONGPRESSBUT2=0;
if (digitalRead(8)==HIGH)
{
digitalWrite(8,!digitalRead(8));
}
digitalWrite(11,LOW);
}
if (button2 == false && press_flag2 == true && long_press_flag2 == true) {
press_flag2 = !press_flag2;
long_press_flag2 = !long_press_flag2;
}
if (button2 == false && press_flag2 == true && long_press_flag2 == false) {
press_flag2 = !press_flag2;
digitalWrite(8,!digitalRead(8)); // Само действие при коротком нажатии
Serial.println("");
Serial.print("Отопление вкл/откл");
LONGPRESSBUT2=0;
digitalWrite(11,LOW);
}
if(button2==true&&press_flag2==false&&millis()-last_press2>100)//если кнопка нажата
//и перемення knopka1 равна 0 и флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag2 = !press_flag2; //Поднять флаг короткого нажатия на кнопку2
last_press2 = millis(); //Присвоить текущее время переменной last_press2
}
if (button2 == true && press_flag2 == true && millis() - last_press2 > 1000 && LONGPRESSBUT1==0) {
long_press_flag2 = !long_press_flag2;
last_press2 = millis();
Serial.println("");
Serial.print("Авто отопление включено"); // Само действие при длинном нажатии
LONGPRESSBUT2=1;
digitalWrite(11,HIGH);
}
// if(digitalRead(14)==LOW&&knopka1==1&&press_flag1==true)//если кнопка НЕ нажата
// if(button1==false&&press_flag1==true)//если кнопка НЕ нажата
//и переменная knopka1 равна - 1 ,то ...
// knopka1=0;//обнуляем переменную knopka1
// press_flag1 = !press_flag1; //опустить флаг короткого нажатия на кнопку
// if(digitalRead(15)==HIGH&&knopka2==0)//если кнопка нажата
// и перемення knopka2 равна 0 , то ...
// {
// digitalWrite(8,!digitalRead(8));
// knopka2=1;
//это нужно для того что бы с каждым нажатием кнопки
//происходило только одно действие
// плюс защита от "дребезга" 100%
// }
// if(digitalRead(15)==LOW&&knopka2==1)//если кнопка НЕ нажата
//и переменная knopka2 равна - 1 ,то ...
// {
// knopka2=0;//обнуляем переменную knopka1
// }
if(digitalRead(16)==HIGH&&knopka3==0)//если кнопка нажата
// и перемення knopka3 равна 0 , то ...
{
digitalWrite(9,!digitalRead(9));
knopka3=1;
if(digitalRead(9)==LOW)
{
Serial.println("");
Serial.print("Свет выключен");
}
if(digitalRead(9)==HIGH)
{
Serial.println("");
Serial.print("Свет включен");
}
//это нужно для того что бы с каждым нажатием кнопки
//происходило только одно действие
// плюс защита от "дребезга" 100%
}
if(digitalRead(16)==LOW&&knopka3==1)//если кнопка НЕ нажата
//и переменная knopka3 равна - 1 ,то ...
{
knopka3=0;//обнуляем переменную knopka3
}
// Это все что касается кнопки1 (Автовентиляция) !!!!!
// if(dht.readHumidity()>maxMoisture&&digitalRead(7)==LOW&&knopka1==0&&millis()-last_yes>period_yes)
if(dht.readHumidity()>maxMoisture&&digitalRead(7)==LOW&&millis()-last_yes>period_yes&&LONGPRESSBUT1==1)
{
last_yes=millis();
digitalWrite(7,!digitalRead(7));
Serial.println("");
Serial.print("Включен вентилятор");
// knopka1=1;//включаем кнопку1
}
// if(dht.readHumidity()<maxMoisture&&digitalRead(7)==HIGH&&knopka1==0&&millis()-last_yes>period_yes)
if(dht.readHumidity()<maxMoisture&&digitalRead(7)==HIGH&&millis()-last_yes>period_yes&&LONGPRESSBUT1==1)
{
last_yes=millis();
digitalWrite(7,!digitalRead(7));
Serial.println("");
Serial.print("Выключен вентилятор");
// knopka1=0;//включаем кнопку1
}
// Это все что касается кнопки2 (Автоотопление) !!!!!
if(dht.readTemperature()<minTemperature&&digitalRead(8)==LOW&&millis()-last_yes>period_yes&&LONGPRESSBUT2==1)
{
last_yes=millis();
digitalWrite(8,!digitalRead(8));
Serial.println("");
Serial.print("Включен конвектор");
}
if(dht.readTemperature()>minTemperature&&digitalRead(8)==HIGH&&millis()-last_yes>period_yes&&LONGPRESSBUT2==1)
{
last_yes=millis();
digitalWrite(8,!digitalRead(8));
Serial.println("");
Serial.print("Выключен конвектор");
}
}
}
При сравнении надо два знака равенства т.е. ==if (val = 'AUTOFUN')
#include <LCD_1602_RUS.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <SoftwareSerial.h>
#include <Wire.h>
char target[] = "AUTOFUNON";
char target1[] = "AUTOFUNOFF";
unsigned long last_read=millis(), period_read=8000; //Это параметры организации цикла измерения температуры и влажности
unsigned long last_yes=millis(), period_yes=100000; //Это параметры организации цикла задержки включения вентиляции и отопления
LCD_1602_RUS lcd(0x27, 16, 2);
// int knopka1=0;
//int knopka2=0;
int knopka3=0;
const int maxMoisture=50; //максимальная влажность
const int minTemperature=10; //минимальня температура
int LONGPRESSBUT1=0;
int LONGPRESSBUT2=0;
int val;
boolean button1 = false; //Переменная для хранения состояния кнопки1
boolean press_flag1 = false; //Флажок нажатия кнопки1
boolean long_press_flag1 = false; //Флажок долгого нажатия кнопки1
unsigned long last_press1 = 0; //Перемменная хранит момент последнего нажатия на кнопку1
boolean button2 = false; //Переменная для хранения состояния кнопки2
boolean press_flag2 = false; //Флажок нажатия кнопки2
boolean long_press_flag2 = false; //Флажок долгого нажатия кнопки2
unsigned long last_press2 = 0; //Перемменная хранит момент последнего нажатия на кнопку2
#define DHTPIN 6 //пин для получения сигнала от датчика DHT11
// Раскомментировать тип датчика, который используется
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
Serial.println("Hello");
dht.begin();
lcd.init(); // Инициализируем экран, включаем подсветку
lcd.backlight();
//Устанавливаем положение курсора для первой строки.
lcd.home();
//выводим строку 1
lcd.print("Welcome!");
//выводим строку 2
lcd.setCursor(0, 1);
lcd.print("AO Sam. Transf.");
}
void loop()
{
{
if (Serial.available() > 0)
{
if (Serial.find(target))
{
last_yes=millis();
long_press_flag1 = !long_press_flag1;
Serial.println("");
Serial.print("Авто вентиляция включено");
digitalWrite(10,HIGH);
LONGPRESSBUT1=1;
}
}
if (Serial.available() > 0)
{
if (Serial.find(target1))
{
last_yes=millis();
long_press_flag1 = !long_press_flag1;
Serial.println("");
Serial.print("Авто вентиляция отключено");
digitalWrite(10,LOW);
if (digitalRead(7)==HIGH)
{
digitalWrite(7,!digitalRead(7));
Serial.println("");
Serial.print("Выключен вентилятор");
}
LONGPRESSBUT1=0;
}
}
if(millis()-last_read>period_read)
{ last_read=millis(); //Если работа модуля очень длительная, то тип last_read надо изменить!
float h = dht.readHumidity(); //Измеряем влажность
float t = dht.readTemperature(); //Измеряем температуру
if (isnan(h) || isnan(t)) // Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
{
Serial.println("Ошибка считывания");
return;
}
Serial.println("");
Serial.print("Влажность: ");
Serial.print(h);
Serial.println(" %\t");
Serial.print("Температура: ");
Serial.print(t);
Serial.print(" *C ");
//Вывод показателей на экран
//Устанавливаем положение курсора для первой строки.
lcd.home();
//выводим строку 1
lcd.print("Темп.: ");
lcd.print(t);
lcd.print(" *C ");
//выводим строку 2
lcd.setCursor(0, 1);
lcd.print("Влажн.: ");
lcd.print(h);
lcd.print(" %");
}
button1 = digitalRead(14);
button2 = digitalRead(15);
// Все что касается Кнопки 1!!!!!!!!!!!!!!!!!
if(button1==true&&press_flag1==false&&millis()-last_press1>100)//если кнопка нажата
//флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag1 = !press_flag1; //Поднять флаг короткого нажатия на кнопку1
last_press1 = millis(); //Присвоить текущее время переменной last_press1
}
if (button1 == true && press_flag1 == true && millis() - last_press1 > 1000 && LONGPRESSBUT1==0) {
long_press_flag1 = !long_press_flag1;
last_press1 = millis();
Serial.println("");
Serial.print("Авто вентиляция включено"); // Само действие при длинном нажатии
LONGPRESSBUT1=1;
digitalWrite(10,HIGH);
}
if (button1 == true && press_flag1 == true && millis() - last_press1 > 1000 && LONGPRESSBUT1==1) //если кнопка нажата
{
long_press_flag1 = !long_press_flag1;
last_press1 = millis();
Serial.println("");
Serial.print("Авто вентиляция выключено"); // Само действие при длинном нажатии
LONGPRESSBUT1=0;
if (digitalRead(7)==HIGH)
{
digitalWrite(7,!digitalRead(7));
}
digitalWrite(10,LOW);
}
if (button1 == false && press_flag1 == true && long_press_flag1 == true) {
press_flag1 = !press_flag1;
long_press_flag1 = !long_press_flag1;
}
if (button1 == false && press_flag1 == true && long_press_flag1 == false) {
press_flag1 = !press_flag1;
digitalWrite(7,!digitalRead(7)); // Само действие при коротком нажатии
LONGPRESSBUT1=0;
digitalWrite(10,LOW);
}
// if (digitalRead(7) == LOW);
// {
// Serial.println("");
// Serial.print("Вентиляция отключена");
// }
if(button1==true&&press_flag1==false&&millis()-last_press1>100)//если кнопка нажата
//и перемення knopka1 равна 0 и флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag1 = !press_flag1; //Поднять флаг короткого нажатия на кнопку1
last_press1 = millis(); //Присвоить текущее время переменной last_press1
}
if (button1 == true && press_flag1 == true && millis() - last_press1 > 1000 && LONGPRESSBUT1==0) {
long_press_flag1 = !long_press_flag1;
last_press1 = millis();
Serial.println("");
Serial.print("Авто вентиляция выключено"); // Само действие при длинном нажатии
LONGPRESSBUT1=1;
digitalWrite(10,HIGH);
}
// Все что касается Кнопки 2!!!!!!!!!!!!!!!!!
if(button2==true&&press_flag2==false&&millis()-last_press2>100)//если кнопка нажата
//и перемення knopka2 равна 0 и флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag2 = !press_flag2; //Поднять флаг короткого нажатия на кнопку2
last_press2 = millis(); //Присвоить текущее время переменной last_press2
}
if (button2 == true && press_flag2 == true && millis() - last_press2 > 1000 && LONGPRESSBUT2==0) {
long_press_flag2 = !long_press_flag2;
last_press2 = millis();
Serial.println("");
Serial.print("Авто отопление включено"); // Само действие при длинном нажатии
LONGPRESSBUT2=1;
digitalWrite(11,HIGH);
}
if (button2 == true && press_flag2 == true && millis() - last_press2 > 1000 && LONGPRESSBUT2==1)
{
long_press_flag2 = !long_press_flag2;
last_press2 = millis();
Serial.println("");
Serial.print("Авто отопление выключено"); // Само действие при длинном нажатии
LONGPRESSBUT2=0;
if (digitalRead(8)==HIGH)
{
digitalWrite(8,!digitalRead(8));
}
digitalWrite(11,LOW);
}
if (button2 == false && press_flag2 == true && long_press_flag2 == true) {
press_flag2 = !press_flag2;
long_press_flag2 = !long_press_flag2;
}
if (button2 == false && press_flag2 == true && long_press_flag2 == false) {
press_flag2 = !press_flag2;
digitalWrite(8,!digitalRead(8)); // Само действие при коротком нажатии
Serial.println("");
Serial.print("Отопление вкл/откл");
LONGPRESSBUT2=0;
digitalWrite(11,LOW);
}
if(button2==true&&press_flag2==false&&millis()-last_press2>100)//если кнопка нажата
//и перемення knopka1 равна 0 и флаг опущен и с последнего нажатия прошло не более 100 мсек, то ...
{
press_flag2 = !press_flag2; //Поднять флаг короткого нажатия на кнопку2
last_press2 = millis(); //Присвоить текущее время переменной last_press2
}
if (button2 == true && press_flag2 == true && millis() - last_press2 > 1000 && LONGPRESSBUT1==0) {
long_press_flag2 = !long_press_flag2;
last_press2 = millis();
Serial.println("");
Serial.print("Авто отопление включено"); // Само действие при длинном нажатии
LONGPRESSBUT2=1;
digitalWrite(11,HIGH);
}
// if(digitalRead(14)==LOW&&knopka1==1&&press_flag1==true)//если кнопка НЕ нажата
// if(button1==false&&press_flag1==true)//если кнопка НЕ нажата
//и переменная knopka1 равна - 1 ,то ...
// knopka1=0;//обнуляем переменную knopka1
// press_flag1 = !press_flag1; //опустить флаг короткого нажатия на кнопку
// if(digitalRead(15)==HIGH&&knopka2==0)//если кнопка нажата
// и перемення knopka2 равна 0 , то ...
// {
// digitalWrite(8,!digitalRead(8));
// knopka2=1;
//это нужно для того что бы с каждым нажатием кнопки
//происходило только одно действие
// плюс защита от "дребезга" 100%
// }
// if(digitalRead(15)==LOW&&knopka2==1)//если кнопка НЕ нажата
//и переменная knopka2 равна - 1 ,то ...
// {
// knopka2=0;//обнуляем переменную knopka1
// }
if(digitalRead(16)==HIGH&&knopka3==0)//если кнопка нажата
// и перемення knopka3 равна 0 , то ...
{
digitalWrite(9,!digitalRead(9));
knopka3=1;
if(digitalRead(9)==LOW)
{
Serial.println("");
Serial.print("Свет выключен");
}
if(digitalRead(9)==HIGH)
{
Serial.println("");
Serial.print("Свет включен");
}
//это нужно для того что бы с каждым нажатием кнопки
//происходило только одно действие
// плюс защита от "дребезга" 100%
}
if(digitalRead(16)==LOW&&knopka3==1)//если кнопка НЕ нажата
//и переменная knopka3 равна - 1 ,то ...
{
knopka3=0;//обнуляем переменную knopka3
}
// Это все что касается кнопки1 (Автовентиляция) !!!!!
// if(dht.readHumidity()>maxMoisture&&digitalRead(7)==LOW&&knopka1==0&&millis()-last_yes>period_yes)
if(dht.readHumidity()>maxMoisture&&digitalRead(7)==LOW&&millis()-last_yes>period_yes&&LONGPRESSBUT1==1)
{
last_yes=millis();
digitalWrite(7,!digitalRead(7));
Serial.println("");
Serial.print("Включен вентилятор");
// knopka1=1;//включаем кнопку1
}
// if(dht.readHumidity()<maxMoisture&&digitalRead(7)==HIGH&&knopka1==0&&millis()-last_yes>period_yes)
if(dht.readHumidity()<maxMoisture&&digitalRead(7)==HIGH&&millis()-last_yes>period_yes&&LONGPRESSBUT1==1)
{
last_yes=millis();
digitalWrite(7,!digitalRead(7));
Serial.println("");
Serial.print("Выключен вентилятор");
// knopka1=0;//включаем кнопку1
}
// Это все что касается кнопки2 (Автоотопление) !!!!!
if(dht.readTemperature()<minTemperature&&digitalRead(8)==LOW&&millis()-last_yes>period_yes&&LONGPRESSBUT2==1)
{
last_yes=millis();
digitalWrite(8,!digitalRead(8));
Serial.println("");
Serial.print("Включен конвектор");
}
if(dht.readTemperature()>minTemperature&&digitalRead(8)==HIGH&&millis()-last_yes>period_yes&&LONGPRESSBUT2==1)
{
last_yes=millis();
digitalWrite(8,!digitalRead(8));
Serial.println("");
Serial.print("Выключен конвектор");
}
}
}
if (Serial.available() > 0)
{
int val = Serial.parseInt();
if (val == 1)
{
last_yes=millis();
long_press_flag1 = !long_press_flag1;
Serial.println("");
Serial.print("Авто вентиляция включено");
digitalWrite(10,HIGH);
LONGPRESSBUT1=1;
}
if (val == 2)
{
last_yes=millis();
long_press_flag1 = !long_press_flag1;
Serial.println("");
Serial.print("Авто вентиляция отключено");
digitalWrite(10,LOW);
if (digitalRead(7)==HIGH)
{
digitalWrite(7,!digitalRead(7));
Serial.println("");
Serial.print("Выключен вентилятор");
}
LONGPRESSBUT1=0;
}
}
Смотри, момент первый... Сравнительные операнды нужно заключать в скобки. Чтобы компилятор совершено точно знал что с чем сравнивать. Например:if (button1 == true && press_flag1 == true && millis() - last_press1 > 1000 && LONGPRESSBUT1==1) //если кнопка нажата