Temperaturna komora sa dodatom regulacijom.
Dependencies: mbed Adafruit_GFX DS1820
Diff: main.cpp
- Revision:
- 2:6c5d798a1092
- Parent:
- 1:aa2a0b18bdb1
--- a/main.cpp Wed Jun 29 12:35:37 2022 +0000 +++ b/main.cpp Wed Jun 29 15:21:52 2022 +0000 @@ -12,7 +12,6 @@ #include "Adafruit_GFX.h" #include "Adafruit_GFX_Config.h" #include "Adafruit_SSD1306.h" -#include "DHT.h" #include "DS1820.h" #include <ctype.h> @@ -60,6 +59,7 @@ // Relay selection signals DigitalOut relay_select1(PA_10); // D2 DigitalOut relay_select2(PB_3); // D3 +DigitalOut fan_on(PB_5); // D3 // DS1820 sensor object DS1820* probe[MAX_PROBES]; @@ -102,6 +102,7 @@ { char cmd = 0; int ref_temp = 0; + char regulation_on = 0; // Initialize OLED: myOled.begin(); @@ -138,7 +139,7 @@ scanf("%d", &ref_temp); if (ref_temp > TEMP_MIN && ref_temp < TEMP_MAX) { - temp_timer.attach(&ISR_temp, TEMP_DELAY); + temp_timer.attach(&ISR_temp, TEMP_DELAY); } cmd = 0; } @@ -146,8 +147,27 @@ if (data_acquired) { refresh_display(); + + if (abs(temp-ref_temp)>0.1) + { + fan_on = 1; + if (temp > ref_temp) + { + // Turn on the cooling + relay_select1 = 0; + relay_select2 = 1; + } + else + { + // Turn on the heating + relay_select1 = 1; + relay_select2 = 0; + } + } + data_acquired = 0; } + } } @@ -187,9 +207,9 @@ // ISR for temperature acquisition void ISR_temp (void) { - printf("t\n"); probe[0]->convertTemperature(true, DS1820::all_devices); - printf("It is %3.1foC\r\n", probe[0]->temperature()); + temp = probe[0]->temperature(); + printf("It is %3.1foC\r\n", temp); data_acquired = 1; }