Задание условий для включения\отключения реле по пороговой температуре.
- Войдите на сайт для отправки комментариев
Пнд, 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- еще надо организовать записть темпер перекл в ЕЕПРОМ .
Вывод: скорее всего программа должна быть на более высоком уровне программирования (понимания программирования) .
С программной точки зрения, надо использовать ифы и операторы сравнения.