Ви не увійшли.
А, ні, вибачаюся, там був ще «залишок» від попередніх спроб, запрацювало, дякую!
Тепер зробіть так щоб він стартував тільки коли виконується умова
isGo = true;
Виніс, так таймер стартує взалі одразу
Для початку винесіть функцію таймеру за } if-а
p/s все змішалось коні, люди millis, delay ...
Всім привіт! підкажіть що роблю не так, купу варіантів перепробував, результат той самий.
Задача: запуск таймера при досягнені заданої температури. Таймер у мене запускається, але тільки температура опускається, він вимикається, а потрібно щоб він працював певний відрізок часу.
#include <SHTSensor.h>
#include <arduino-sht.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
int heat = 4;
int sec = 0;
int min = 0;
float endTime = 16;
unsigned long timer;
bool timeOff = false;
bool timeStart = false;
bool isGo = false;
LiquidCrystal_I2C lcd(0x27, 16, 2);
SHTSensor sht;
void setup() {
timer = millis();
pinMode(heat, OUTPUT);
Wire.begin();
lcd.init();
lcd.backlight();
sht.init();
}
void loop() {
int tMax = 32;
sht.readSample();
delay(1000);
lcd.setCursor(0, 0);
lcd.print("t:");
lcd.print(sht.getTemperature(), 1);
if (sht.getTemperature() <= tMax) {
digitalWrite(heat, HIGH);
} else {
digitalWrite(heat, LOW);
}
if (sht.getTemperature() >= tMax) {
delay(100);
isGo = true;
coundown();
}
}
void coundown() {
if (isGo) { endTime = 0; }
if (millis() - timer > 1000) {
timer = millis();
sec = sec + 1;
if (sec > 59) {
sec = 0;
min = min + 1;
}
}
lcd.setCursor(0, 1);
lcd.print("Timer:");
lcd.print(min);
lcd.print(":");
lcd.print(sec);
}
P.S. Я звісно початківець...