Тоесть если температура ниже 28 - греем, а если выше не греем но дуем???
проверил, немного не по моей логике-))) мне надо, чтобы при т<28 и грело и дуло, при т>30 сначала выключился обогреватель, а через паузу - вентилятор/ здесь не так-))
boolean fanOn;
long fanDelay = 6000; // интервал включения вентилятора
#define heaterPin 9 // реле обогревателя
#define fanPin 10 // реле вентилятора
void setup(void) {
Serial.begin(9600);
pinMode(heaterPin, OUTPUT); // устанавливает режим работы - выход
pinMode(fanPin, OUTPUT); // устанавливает режим работы - выход
digitalWrite(heaterPin, LOW); // устанавливаем в выключенное положение
digitalWrite(fanPin, LOW); // устанавливаем в выключенное положение
}
void loop(void) {
temperature = 27;
// Управление обогревателем
if (temperature < 28) {
digitalWrite(heaterPin, HIGH); // Включаем обогреватель
} else {
digitalWrite(heaterPin, LOW); // Выключаем обогреватель
}
// Управление вентилятором
if (temperature > 30) {
if (fanOn) {
// Если вентилятор включен, устанавливаем задержку
if (millis() - fanDelay >= 5000) {
digitalWrite(fanPin, LOW); // Выключаем вентилятор
fanOn = false; // Обновляем состояние вентилятора
}
} else if (temperature > 28) {
if (!fanOn) {
digitalWrite(fanPin, HIGH); // Включаем вентилятор
fanOn = true; // Обновляем состояние вентилятора
fanDelay = millis(); // Запоминаем время включения вентилятора
}
}
}
}
все в ваших руках, у вас есть примеры простые,(и главное правильные, а не запутанные) надо только чуть подумать, и переписать пару раз код)))
Ну так и сделайте это:
В чем у вас сложность так сделать?
boolean fanOn;
long fanDelay = 6000; // интервал включения вентилятора
#define heaterPin 9 // реле обогревателя
#define fanPin 10 // реле вентилятора
void setup(void) {
Serial.begin(9600);
pinMode(heaterPin, OUTPUT); // устанавливает режим работы - выход
pinMode(fanPin, OUTPUT); // устанавливает режим работы - выход
digitalWrite(heaterPin, LOW); // устанавливаем в выключенное положение
digitalWrite(fanPin, LOW); // устанавливаем в выключенное положение
}
void loop(void) {
uint8_t temperature = 27;
uint32_t currentMillis, prevMillis;
currentMillis = millis();
if (temperature < 28) {
digitalWrite(heaterPin, HIGH); // Включаем обогреватель
digitalWrite(fanPin, HIGH); // Включаем вентилятор
fanOn = true;
}
if (temperature > 30) {
digitalWrite(heaterPin, LOW); // Выключаем обогреватель
if (fanOn) {
prevMillis = millis();
fanOn = false;
}
if (currentMillis - prevMillis >= fanDelay) {
digitalWrite(fanPin, LOW); // Выключаем вентилятор
}
}
}