Как еще отформатировать, так?
Так нормально, спасибо
А чё, так можно было?
А чё нельзя-то?
Оно то конечно можно, а результат будет именно такой(ведь подтяжка же имеется ввиду)?
вот вроде сделал флаги и по датчику влажности.
а как этот блок сравнения сварганить
[#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. Правильный преподаватель переходит на язык ученика
. Учитесь, господа.
Это в каких ИИ так рекомендуют?
Если убрать подтяжку, то сразу высокий на fan.
Подтяжка организуется либо аппаратно, либо через pinMode(BUTTON_PIN, INPUT_PULLUP);
Да это не подтяжка, просто высокий уровень.
Наверное ужо пора попросить вас выложить схему. Хм-хм, выложите схему, пожалуйста.
Пока на макетке.
Своё ваяю
А-а-а, ясно-понятно.
Лигическое ИЛИ для: flag, flag1. Что вам и рекомендовали. Здесь за вас код не пишут, здесь направляют и советуют.
Тут вот еще протрите, пыль осталась…
Ничего не понял. Если троллинг, то не надо, устал сегодня. Если вопрос, то спросите как-то попонятнее.
Так как у ТС, тоже можно:
Включить подтяжку - это 40-50кОм на выход, подать HIGH на выход - тупо к питанию, а значит при нажатии на кнопку("“при стандартному замыканию на землю”(с)) будет КЗ и порт закончится. Если только пока порт не объявлен как выход, то выражение digitalWrite(button, HIGH); организует именно подтяжку ![]()