Задание условий для включения\отключения реле по пороговой температуре.
- Войдите на сайт для отправки комментариев
Пнд, 26/06/2017 - 18:17
Всем доброго времени суток! Стоит задача создания sous vide, она же сувидница, предназначенная для прецезионного нагрева воды. Что имеем в наборе: Arduino nano, реле SRD05VDC, датчик DS18B20, пара кнопок для регулировки температуры и экран( TM1637). Основную часть кода на вывод температуры уже написали, осталось задать условие при котором при достижении определённого температурного порога реле отсекало потенциал от нагревателя.
Собственно говоря вопрос - как реализовать это с программной точки зрения?
Вот код который уже имеется.
#include <DHT.h>
#include "TM1637.h"
#include <OneWire.h>
#define beep_pin 3
#define button_up 6
#define button_down 5
#define relay_pin 4
#define CLK 9
#define DIO 8
#define ds_pin 10
#define accuracy 1
#define stand_temp 25
#define del 100
//*************назначение выводов гнидуины***************
TM1637 tm1637(CLK, DIO);
OneWire ds(ds_pin);
int Temp;
int8_t Disp[] = {0x01,0x02,0x03,0x04};
void beep();
void displ();
void setup()
{
pinMode(beep_pin, OUTPUT);
tm1637.set();
tm1637.init();
tm1637.point(POINT_ON);
beep();
}
void loop()
{
byte data[2];
ds.reset();
ds.write(0xCC);
ds.write(0x44);
delay(750);
ds.reset();
ds.write(0xCC);
ds.write(0xBE);
data[0] = ds.read();
data[1] = ds.read();
Temp = (data[1]<< 8)+data[0];
Temp = Temp>>4;
Temp = round(Temp);
displ();
delay(del);
}
void beep()
{
for(int i = 0; i < 3; i++)
{
delay(300);
digitalWrite(beep_pin, HIGH);
delay(300);
digitalWrite(beep_pin, LOW);
}
}
void displ()
{
Disp[0] = stand_temp / 10;
Disp[1] = stand_temp % 10;
Disp[2] = Temp / 10;
Disp[3] = Temp % 10;
tm1637.display(Disp);
}
Основная ошибка, можно сказать обычная не обычная, когда разработчик не знает, как должно работать его творение.
1- экран у вас один. Что он должен показывать ? температуру на датчике.
2 - если вы выставляете температуру переключения, то вы разумеется тоже должны выдеть. Но там же смотри п.1
3- суммируя п.1 и п.2 вы должны понять, что температура перекл должна переключаться при переходе отж->наж на 1 шаг. И дальше если кнопка нажата показывать температуру перекл. Отпустили - показ температуры на датчике
4- еще надо организовать записть темпер перекл в ЕЕПРОМ .
Вывод: скорее всего программа должна быть на более высоком уровне программирования (понимания программирования) .
С программной точки зрения, надо использовать ифы и операторы сравнения.