Вытяжка по влажности

Как еще отформатировать, так?

Так нормально, спасибо

А чё, так можно было?

А чё нельзя-то?

Оно то конечно можно, а результат будет именно такой(ведь подтяжка же имеется ввиду)?

вот вроде сделал флаги и по датчику влажности.

а как этот блок сравнения сварганить

[#include <SPI.h>
#include "Adafruit_GFX.h"  //  подключаем графическую библиотеку
#include <Adafruit_ST7789.h>
#include <Arduino_ST7789_Fast.h>
#include "OneWire.h"
#include "DallasTemperature.h"
#include <SparkFun_Qwiic_Humidity_AHT20.h>
AHT20 humiditySensor;
#define CS 10
#define DC 8
#define RST 9
#define MISO 12  // Пин подключения вывода дисплея SDO(MISO)
#define MOSI 11  // Пин подключения вывода дисплея SDI(MOSI)
#define CLK 13   // Пин подключения вывода дисплея SCK
Adafruit_ST7789 tft = Adafruit_ST7789(CS, DC, RST);

#define button A1     // кнопка включения вентилятора
#define fan A3        //       Выход на вытяжку
int maxHum = 60;      //    максимальная влажность
int time_fan = 6000;  //60000 миллисекунд=600 секунд= 10 минут включение вытяжки от кнопки

OneWire oneWire(2);  // порт подключения датчика 18b20
DallasTemperature ds(&oneWire);
DallasTemperature sensors(&oneWire);  // Передача ссылки на нашу библиотеку oneWire библиотеке датчика температуры Dallas Temperature
int flag = 0;
int flag1 = 0;
unsigned long time;

void setup() {
  time = millis();
  pinMode(button, INPUT);      //  Порт Кнопки как вход
  digitalWrite(button, HIGH);  // Порт кнопки высокий уровень
  pinMode(fan, OUTPUT);        //Выход на вытяжку

  ds.begin();  // инициализация датчика ds18b20
  Serial.begin(9600);
  Wire.begin();                            // инициализации шины I2C
  if (humiditySensor.begin() == false) {   // инициализация и проверка подключения
    Serial.println("AHT20 not detected");  // если датчик не обнаружен, вводим программу в бесконечный цикл
    while (1)
      ;
  }
  tft.cp437(true);           // Необходимо чтоб все буквы выводились корректно
  tft.init(240, 320);        //  разрешение экрана
  tft.invertDisplay(false);  //инверсия цветов
  tft.setRotation(3);        //< Переворачиваем дисплей.Возможны два варианта 1 и 3
  tft.fillScreen(ST77XX_BLACK);
  tft.cp437(true);  // Необходимо чтоб все буквы выводились корректно
}
void loop() {
  if (digitalRead(button) == LOW && flag == 0)  // Кнопка включения вытяжки
  {
    flag = 1;
    time = millis();
  }
  if (digitalRead(button) == HIGH && flag == 1 && ((millis() - time) > time_fan)) {
    flag = 0;
  }
  //digitalWrite(fan, flag);
  ds.requestTemperatures();
  // если от датчика получены свежие данные, выводим их
  if (humiditySensor.available() == true) {
    float temperature = humiditySensor.getTemperature();  // получаем температуру
    float humidity = humiditySensor.getHumidity();        // получаем относительную влажность

    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(2);
    tft.setCursor(40, 1);
    tft.print(utf8rus("Темп."));
    tft.setCursor(112, 1);
    tft.print(temperature, 1);

    tft.setTextColor(CYAN, BLACK);
    tft.setTextSize(2);
    tft.setCursor(40, 20);
    tft.print(utf8rus("Влаж."));
    tft.setCursor(112, 20);
    tft.print(humidity, 1);  //   Выводим влажность

    tft.setCursor(170, 20);
    tft.setTextColor(RED, BLACK);
    tft.print(utf8rus("Уст."));
    tft.setCursor(225, 20);
    tft.print(maxHum);

    tft.setTextColor(YELLOW, BLACK);
    tft.setTextSize(2);
    tft.setCursor(40, 40);
    tft.print(utf8rus("Темп."));
    tft.setCursor(112, 40);
    tft.print(ds.getTempCByIndex(0), 1);           // выводим температуру
    if ((humidity > maxHum) == LOW && flag1 == 0)  // Кнопка включения вытяжки
    {
      flag1 = 1;
      time = millis();
    }
    if ((humidity > maxHum) == HIGH && flag1 == 1 && ((millis() - time) > time_fan)) {
      flag1 = 0;
    }
  }
}

Н, типа, да. А что не так?

Ну, типа, кнопка на один раз, не?
P.S. Правильный преподаватель переходит на язык ученика :slightly_smiling_face:. Учитесь, господа.

Это в каких ИИ так рекомендуют?

Если убрать подтяжку, то сразу высокий на fan.

Подтяжка организуется либо аппаратно, либо через pinMode(BUTTON_PIN, INPUT_PULLUP);

Да это не подтяжка, просто высокий уровень.

Наверное ужо пора попросить вас выложить схему. Хм-хм, выложите схему, пожалуйста.

Пока на макетке.

Своё ваяю

А-а-а, ясно-понятно.

Лигическое ИЛИ для: flag, flag1. Что вам и рекомендовали. Здесь за вас код не пишут, здесь направляют и советуют.

Тут вот еще протрите, пыль осталась…

Ничего не понял. Если троллинг, то не надо, устал сегодня. Если вопрос, то спросите как-то попонятнее.

Так как у ТС, тоже можно:

Включить подтяжку - это 40-50кОм на выход, подать HIGH на выход - тупо к питанию, а значит при нажатии на кнопку("“при стандартному замыканию на землю”(с)) будет КЗ и порт закончится. Если только пока порт не объявлен как выход, то выражение digitalWrite(button, HIGH); организует именно подтяжку :roll_eyes: