C/C++
get_tmp() - тут ваша функция получения температуры с датчика.
Разумеется предвидеть все хотелки (например вентилятор с управляемой частотой вращения, кнопки принудительного включения-выключния, учет огурцов в погребе), защиты и поведение при нештатных ситуациях - это сильно усложнит программу )
Подскажите как написать код для ардуино
Хочу сделать охлаждение в погреб, нужно включать вентилятор, когда на улице температура ниже 6 градусов, но чтобы в погребе не стала температура ниже 4 градусов. Я собрал схему из двух датчиков ds18b20, мосфета, ардуино нано и реле. Я пробовал сам делать но у меня не соблюдает одно из условий.
#define delta 3 //разница между температурой включения и выключения
#defime pin_cooler 10 //пин на котором сидит реле.
bool start_flow = false; //управление вентилятором
void loop()
{
int tmp_out = get_tmp(); //опрос датчика внешней температуры
int tmp_in = get_tmp(); //опрос датчика температуры погреба
if (!start_flow) start_flow = tmp_in>4 + delta; //условие включения
else start_flow = tmp_in < 4; //условие выключения
digitalWrite(pin_cooler, start_flow&&tmp_out= 6) delay(600000); //если температура внешнего
датчика 6 или больше, пауза в 10 минут во избежании частых
включений/выклюний при температуре близкой к 6 градусам.
}
Простая программа такая.get_tmp() - тут ваша функция получения температуры с датчика.
Разумеется предвидеть все хотелки (например вентилятор с управляемой частотой вращения, кнопки принудительного включения-выключния, учет огурцов в погребе), защиты и поведение при нештатных ситуациях - это сильно усложнит программу )
#include
#include
// Пины для подключения датчиков DS18B20
#define PIN_SENSOR_1 2
#define PIN_SENSOR_2 3
// Пин для управления реле (вентилятором)
#define PIN_RELAY 4
// Задаем минимальные и максимальные температуры
float minTemp = 4.0; // Минимальная температура в погребе
float maxTemp = 6.0; // Максимальная температура на улице
OneWire oneWire1(PIN_SENSOR_1);
OneWire oneWire2(PIN_SENSOR_2);
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
void setup() {
pinMode(PIN_RELAY, OUTPUT);
digitalWrite(PIN_RELAY, LOW); // Начинаем с выключенного состояния вентилятора
sensors1.begin();
sensors2.begin();
Serial.begin(9600);
}
void loop() {
sensors1.requestTemperatures();
sensors2.requestTemperatures();
float tempInside = sensors1.getTempCByIndex(0);
float tempOutside = sensors2.getTempCByIndex(0);
Serial.print("Temperature inside: ");
Serial.println(tempInside);
Serial.print("Temperature outside: ");
Serial.println(tempOutside);
// Проверяем условия и управляем вентилятором
if (tempOutside < maxTemp && tempInside > minTemp) {
digitalWrite(PIN_RELAY, HIGH); // Включаем вентилятор
} else {
digitalWrite(PIN_RELAY, LOW); // Выключаем вентилятор
}
delay(10000); // Пауза 10 секунд перед следующей итерацией
}
Сергей Першин
Спасибо, всё работает
Сергей Першин
после установки на место стало работать неправильно включается, когда на улице больше 6 градусов
Шерзод Бердиев
ну поменяй условия внизу. Навскиду:
void loop() {
sensors1.requestTemperatures();
sensors2.requestTemperatures();
float tempInside = sensors1.getTempCByIndex(0);
float tempOutside = sensors2.getTempCByIndex(0);
Serial.print("Temperature inside: ");
Serial.println(tempInside);
Serial.print("Temperature outside: ");
Serial.println(tempOutside);
// Проверяем условия и управляем вентилятором
if (tempOutside < maxTemp && tempInside > minTemp) {
digitalWrite(PIN_RELAY, HIGH); // Включаем вентилятор
} else {
digitalWrite(PIN_RELAY, LOW); // Выключаем вентилятор
}
delay(10000); // Пауза 10 секунд перед следующей итерацией
}
Сергей Першин
Я менял, но ему вообще без разницы. Он включается 10 секунд работает потом 10 секунд не работает, не важно какая температура на улице
Похожие вопросы
- Подскажите почему не работает элементарнейший код на ардуино
- Помогите с кодом на ардуино
- Написать код на языке си
- Помогите пожалуйста написать код.(C++)
- Написал код для языка C, но работает не правильно
- Написать код на языке C++
- Написать код для задачи C++
- Задание на c++ ответить на вопросы и написать код
- Помогите пожалуйста написать код на c++, выводящий имя, фамилию и дату рождения нескольких человек
- Написать код на языке Си
https://kit.alexgyver.ru/tutorials/ds18b20/
кастомная библиотека от туда
https://github.com/GyverLibs/microDS18B20