My custom thermostat based on: # NUCLEO-F334R8 # DS18B20 # RELAY module # LCD1602 shield

Dependencies:   DS1820 TextLCD mbed

Committer:
emcu
Date:
Sun Jan 17 03:26:10 2016 +0000
Revision:
0:2ae1c92f5fba
My custom thermostat based on:; # NUCLEO-F334R8; # DS18B20; # RELAY module; # LCD1602 shield;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emcu 0:2ae1c92f5fba 1 /**
emcu 0:2ae1c92f5fba 2
emcu 0:2ae1c92f5fba 3 Temperature control based on:
emcu 0:2ae1c92f5fba 4 NUCLEO-F334R8
emcu 0:2ae1c92f5fba 5 DS18B20
emcu 0:2ae1c92f5fba 6 RELAY module
emcu 0:2ae1c92f5fba 7 LCD1602 shield
emcu 0:2ae1c92f5fba 8
emcu 0:2ae1c92f5fba 9 By: www.emcu.it
emcu 0:2ae1c92f5fba 10 Date: Dec.2015
emcu 0:2ae1c92f5fba 11 Version: 1.2
emcu 0:2ae1c92f5fba 12 Name: F334andDS18B20andLCD1602andRELAYdlyCasaV12
emcu 0:2ae1c92f5fba 13 NOTE: For more info see here: http://www.emcu.it/Mbed/mBed.html#My_mBed_tutorials
emcu 0:2ae1c92f5fba 14
emcu 0:2ae1c92f5fba 15 THE SOFTWARE AND HARDWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
emcu 0:2ae1c92f5fba 16 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
emcu 0:2ae1c92f5fba 17 FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
emcu 0:2ae1c92f5fba 18 OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
emcu 0:2ae1c92f5fba 19 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
emcu 0:2ae1c92f5fba 20 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
emcu 0:2ae1c92f5fba 21
emcu 0:2ae1c92f5fba 22 UART Configuration (It is necessary for see the results, we suggest to use TeraTerm on PC)
emcu 0:2ae1c92f5fba 23 Baud Rate: 9600
emcu 0:2ae1c92f5fba 24 Data Bit: 8
emcu 0:2ae1c92f5fba 25 Parity: NONE
emcu 0:2ae1c92f5fba 26 Stop Bit: 1
emcu 0:2ae1c92f5fba 27 Flow Control: NONE
emcu 0:2ae1c92f5fba 28
emcu 0:2ae1c92f5fba 29 This SW is ready to use on the NUCLEO-F334R8.
emcu 0:2ae1c92f5fba 30 Connect to the NUCLEO-F334R8 the DS18B20 sensor (A1, see the schematic below), the LCD1602 board and a RELAY board (A5).
emcu 0:2ae1c92f5fba 31 The temperature sampling time is 200 msec, you change this parameter in the TempSamplingTime.
emcu 0:2ae1c92f5fba 32
emcu 0:2ae1c92f5fba 33 DS18B20 front view
emcu 0:2ae1c92f5fba 34 __________
emcu 0:2ae1c92f5fba 35 | |
emcu 0:2ae1c92f5fba 36 | DS |
emcu 0:2ae1c92f5fba 37 | 18B20 |
emcu 0:2ae1c92f5fba 38 | |
emcu 0:2ae1c92f5fba 39 |__________|
emcu 0:2ae1c92f5fba 40 | | |
emcu 0:2ae1c92f5fba 41 1 2 3
emcu 0:2ae1c92f5fba 42 GND DQ VCC (5V)
emcu 0:2ae1c92f5fba 43 | | |______________ to VCC (5V on the LCD1602 or on the NUCLEO-F334R8)
emcu 0:2ae1c92f5fba 44 | | _|_
emcu 0:2ae1c92f5fba 45 | | | |
emcu 0:2ae1c92f5fba 46 | | | | 4K7
emcu 0:2ae1c92f5fba 47 | | | |
emcu 0:2ae1c92f5fba 48 | | -|-
emcu 0:2ae1c92f5fba 49 | |___|______________ to A1 (on the LCD1602 board or on the NUCLEO-F334R8)
emcu 0:2ae1c92f5fba 50 |
emcu 0:2ae1c92f5fba 51 |
emcu 0:2ae1c92f5fba 52 |______________________ to GND (on the LCD1602 board or on the NUCLEO-F334R8)
emcu 0:2ae1c92f5fba 53
emcu 0:2ae1c92f5fba 54 This SW is just for only one DS18B20 + LCD1602 board
emcu 0:2ae1c92f5fba 55
emcu 0:2ae1c92f5fba 56 */
emcu 0:2ae1c92f5fba 57
emcu 0:2ae1c92f5fba 58
emcu 0:2ae1c92f5fba 59 // Below there is the Data Pin where is connected the:
emcu 0:2ae1c92f5fba 60 // pin.2 (DQ) of the DS18B20 ---> A1
emcu 0:2ae1c92f5fba 61 #define DATA_PIN A1
emcu 0:2ae1c92f5fba 62
emcu 0:2ae1c92f5fba 63 #include "mbed.h"
emcu 0:2ae1c92f5fba 64 #include "DS1820.h"
emcu 0:2ae1c92f5fba 65 #include "TextLCD.h"
emcu 0:2ae1c92f5fba 66
emcu 0:2ae1c92f5fba 67 // Define the LED
emcu 0:2ae1c92f5fba 68 DigitalOut myled(LED1);
emcu 0:2ae1c92f5fba 69 // Below there is the RELAY PIN that is ---> A5
emcu 0:2ae1c92f5fba 70 DigitalOut RL1(A5);
emcu 0:2ae1c92f5fba 71
emcu 0:2ae1c92f5fba 72 // Define the PC serial Port
emcu 0:2ae1c92f5fba 73 Serial pc(SERIAL_TX, SERIAL_RX);
emcu 0:2ae1c92f5fba 74
emcu 0:2ae1c92f5fba 75 // Specify the pin of the NUCLEO-F334R8 where is connected
emcu 0:2ae1c92f5fba 76 // the pin.2 (DQ) of the DS18B20.
emcu 0:2ae1c92f5fba 77 DS1820 probe(DATA_PIN);
emcu 0:2ae1c92f5fba 78
emcu 0:2ae1c92f5fba 79 // SetUp GPIO for drive the LCD
emcu 0:2ae1c92f5fba 80 // LCD (RS, E, D4, D5, D6, D7)
emcu 0:2ae1c92f5fba 81 TextLCD lcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8); // LCD Shield for Arduino
emcu 0:2ae1c92f5fba 82 AnalogIn button(PA_0); // board button
emcu 0:2ae1c92f5fba 83 PwmOut backlight(PB_6);
emcu 0:2ae1c92f5fba 84
emcu 0:2ae1c92f5fba 85 // COSTANTs
emcu 0:2ae1c92f5fba 86 #define ON 1
emcu 0:2ae1c92f5fba 87 #define OFF 0
emcu 0:2ae1c92f5fba 88 #define YES 1
emcu 0:2ae1c92f5fba 89 #define NO 0
emcu 0:2ae1c92f5fba 90 #define tStep 0.1 // Step minimo di Up e Down x le impostazioni dei valori
emcu 0:2ae1c92f5fba 91 #define tUp 1
emcu 0:2ae1c92f5fba 92 #define tDown 2
emcu 0:2ae1c92f5fba 93 #define tRigth 3
emcu 0:2ae1c92f5fba 94 #define tLeft 4
emcu 0:2ae1c92f5fba 95 #define tNone 5
emcu 0:2ae1c92f5fba 96 #define NumConv 4
emcu 0:2ae1c92f5fba 97 #define MaxError 30
emcu 0:2ae1c92f5fba 98 #define TastoSU 15000
emcu 0:2ae1c92f5fba 99 #define TastoGIU 30900
emcu 0:2ae1c92f5fba 100 #define TastoDES DeltaTasti + 2
emcu 0:2ae1c92f5fba 101 #define TastoSIN 48000
emcu 0:2ae1c92f5fba 102 #define DeltaTasti 4000
emcu 0:2ae1c92f5fba 103 #define TempSamplingTime 200 // 200 == 200 mS
emcu 0:2ae1c92f5fba 104 #define DelayTime 4 // It is used in congiunction to DelayLastLine
emcu 0:2ae1c92f5fba 105 #define MaxRelDly 50 // 10 == 10sec... 50 == 50 sec
emcu 0:2ae1c92f5fba 106
emcu 0:2ae1c92f5fba 107 // VARIABLEs
emcu 0:2ae1c92f5fba 108 uint8_t n = 0;
emcu 0:2ae1c92f5fba 109 uint8_t FlashSeg = 0;
emcu 0:2ae1c92f5fba 110 uint8_t FlashLCDlastLine = 0;
emcu 0:2ae1c92f5fba 111 uint8_t DelayLastLine = 0;
emcu 0:2ae1c92f5fba 112 uint8_t rele = OFF;
emcu 0:2ae1c92f5fba 113 uint8_t TowerTemp = 0;
emcu 0:2ae1c92f5fba 114 uint8_t TlowerTemp = 0;
emcu 0:2ae1c92f5fba 115 float temperature = 0;
emcu 0:2ae1c92f5fba 116 float DeltaTemp = 0.5;
emcu 0:2ae1c92f5fba 117 float tempON = 21.00;
emcu 0:2ae1c92f5fba 118 float tempOFF = tempON + DeltaTemp;
emcu 0:2ae1c92f5fba 119 float temperaturePREVIOUS = 0;
emcu 0:2ae1c92f5fba 120 float temperatureMAX = 0;
emcu 0:2ae1c92f5fba 121 float temperatureMIN = 0;
emcu 0:2ae1c92f5fba 122 float MaxTempError = 0;
emcu 0:2ae1c92f5fba 123 unsigned long value = 0;
emcu 0:2ae1c92f5fba 124 uint8_t PowerON = YES;
emcu 0:2ae1c92f5fba 125 uint8_t LastButtonPressed = tNone;
emcu 0:2ae1c92f5fba 126 uint8_t DelayForOffOnRealy = 30; /* The OFF will be made if the temperature is exceeded by N seconds consecutively (see TowerTemp)
emcu 0:2ae1c92f5fba 127 The ON will be made if the temperature is less than N seconds consecutively (see TlowerTemp)
emcu 0:2ae1c92f5fba 128 N = 30 value is about 30sec
emcu 0:2ae1c92f5fba 129 */
emcu 0:2ae1c92f5fba 130
emcu 0:2ae1c92f5fba 131 // FUNCTIONs
emcu 0:2ae1c92f5fba 132 void CalcMed(void);
emcu 0:2ae1c92f5fba 133 void PrintTemperatures(void);
emcu 0:2ae1c92f5fba 134 uint8_t ReadButtonOnLCD1602(void);
emcu 0:2ae1c92f5fba 135 void SetUp(void);
emcu 0:2ae1c92f5fba 136 void ShowSetUp(void);
emcu 0:2ae1c92f5fba 137 void WaitingRightButton(void);
emcu 0:2ae1c92f5fba 138
emcu 0:2ae1c92f5fba 139
emcu 0:2ae1c92f5fba 140 int main()
emcu 0:2ae1c92f5fba 141 {
emcu 0:2ae1c92f5fba 142 // Configure USART speed
emcu 0:2ae1c92f5fba 143 pc.baud(9600);
emcu 0:2ae1c92f5fba 144
emcu 0:2ae1c92f5fba 145 // SetUp the resolution of the DS18B20 to 12bit
emcu 0:2ae1c92f5fba 146 probe.setResolution(12);
emcu 0:2ae1c92f5fba 147
emcu 0:2ae1c92f5fba 148 // StartUp Logo to the PC
emcu 0:2ae1c92f5fba 149 pc.printf("\r\n\r\nTemperature Control x Casa v.1.2 2015\n\rMade using:\n\r");
emcu 0:2ae1c92f5fba 150 pc.printf("NUCLEO-F334R8 + DS18B20 (input on A1) + LCD1602 + RELAY (on A5).\n\r");
emcu 0:2ae1c92f5fba 151 pc.printf("For more info look here:\n\r");
emcu 0:2ae1c92f5fba 152 pc.printf(" http://www.emcu.it/NUCLEOevaBoards/mBed/QSG-Mbed-Library.pdf\n\r");
emcu 0:2ae1c92f5fba 153 pc.printf("by: www.emcu.it\n\r\n\r");
emcu 0:2ae1c92f5fba 154
emcu 0:2ae1c92f5fba 155 // TurnOn the LCD backlight of the LCD1602 board
emcu 0:2ae1c92f5fba 156 backlight = ON; // ON: 1, OFF: 0
emcu 0:2ae1c92f5fba 157
emcu 0:2ae1c92f5fba 158 // StartUp Logo to the LCD1602 board
emcu 0:2ae1c92f5fba 159 lcd.cls();
emcu 0:2ae1c92f5fba 160 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 161 lcd.printf("By: www.emcu.it");
emcu 0:2ae1c92f5fba 162 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 163 lcd.printf("Ver1.2 2015 Casa");
emcu 0:2ae1c92f5fba 164
emcu 0:2ae1c92f5fba 165 // SetUp the temperatures after PowerOn
emcu 0:2ae1c92f5fba 166 probe.convertTemperature(true, DS1820::all_devices); //Start temperature conversion, wait until ready
emcu 0:2ae1c92f5fba 167 temperature = probe.temperature('c');
emcu 0:2ae1c92f5fba 168 // Eliminate the wrong reading
emcu 0:2ae1c92f5fba 169 CalcMed();
emcu 0:2ae1c92f5fba 170 temperaturePREVIOUS = temperature;
emcu 0:2ae1c92f5fba 171 temperatureMAX = temperature;
emcu 0:2ae1c92f5fba 172 temperatureMIN = 50.50;
emcu 0:2ae1c92f5fba 173 wait(1);
emcu 0:2ae1c92f5fba 174
emcu 0:2ae1c92f5fba 175 while(1)
emcu 0:2ae1c92f5fba 176 {
emcu 0:2ae1c92f5fba 177 // READ BUTTON on LCD board +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 178 if (ReadButtonOnLCD1602() == tUp)
emcu 0:2ae1c92f5fba 179 {
emcu 0:2ae1c92f5fba 180 backlight = ON;
emcu 0:2ae1c92f5fba 181 PowerON = NO;
emcu 0:2ae1c92f5fba 182 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 183 lcd.printf("Please wait.....");
emcu 0:2ae1c92f5fba 184 FlashLCDlastLine = 0;
emcu 0:2ae1c92f5fba 185 }
emcu 0:2ae1c92f5fba 186 else if (ReadButtonOnLCD1602() == tDown)
emcu 0:2ae1c92f5fba 187 {
emcu 0:2ae1c92f5fba 188 backlight = OFF;
emcu 0:2ae1c92f5fba 189 PowerON = NO;
emcu 0:2ae1c92f5fba 190 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 191 lcd.printf("Please wait.....");
emcu 0:2ae1c92f5fba 192 FlashLCDlastLine = 0;
emcu 0:2ae1c92f5fba 193 }
emcu 0:2ae1c92f5fba 194 else if (ReadButtonOnLCD1602() == tRigth)
emcu 0:2ae1c92f5fba 195 ShowSetUp();
emcu 0:2ae1c92f5fba 196 else if (ReadButtonOnLCD1602() == tLeft)
emcu 0:2ae1c92f5fba 197 SetUp();
emcu 0:2ae1c92f5fba 198 else;
emcu 0:2ae1c92f5fba 199 // END READ BUTTON on LCD board +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 200
emcu 0:2ae1c92f5fba 201 // READ and DISPLAY the TEMPERATURE and control RELAY +++++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 202 probe.convertTemperature(true, DS1820::all_devices); //Start temperature conversion, wait until ready
emcu 0:2ae1c92f5fba 203 temperature = probe.temperature('c');
emcu 0:2ae1c92f5fba 204 wait_ms(TempSamplingTime);
emcu 0:2ae1c92f5fba 205 // Eliminate the wrong reading
emcu 0:2ae1c92f5fba 206 CalcMed();
emcu 0:2ae1c92f5fba 207
emcu 0:2ae1c92f5fba 208 // ON/OFF Relè ++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 209 if (temperature <= tempON) // ON Relè
emcu 0:2ae1c92f5fba 210 {
emcu 0:2ae1c92f5fba 211 if (rele == OFF)
emcu 0:2ae1c92f5fba 212 TlowerTemp ++;
emcu 0:2ae1c92f5fba 213 if (TlowerTemp >= DelayForOffOnRealy)
emcu 0:2ae1c92f5fba 214 {
emcu 0:2ae1c92f5fba 215 rele = ON;
emcu 0:2ae1c92f5fba 216 RL1 = 1;
emcu 0:2ae1c92f5fba 217 TowerTemp = 0;
emcu 0:2ae1c92f5fba 218 TlowerTemp = 0;
emcu 0:2ae1c92f5fba 219 }
emcu 0:2ae1c92f5fba 220 }
emcu 0:2ae1c92f5fba 221 else if (temperature >= tempOFF) // OFF Relè
emcu 0:2ae1c92f5fba 222 {
emcu 0:2ae1c92f5fba 223 if (rele == ON)
emcu 0:2ae1c92f5fba 224 TowerTemp ++;
emcu 0:2ae1c92f5fba 225 if (TowerTemp >= DelayForOffOnRealy)
emcu 0:2ae1c92f5fba 226 {
emcu 0:2ae1c92f5fba 227 rele = OFF;
emcu 0:2ae1c92f5fba 228 RL1 = 0;
emcu 0:2ae1c92f5fba 229 TowerTemp = 0;
emcu 0:2ae1c92f5fba 230 TlowerTemp = 0;
emcu 0:2ae1c92f5fba 231 }
emcu 0:2ae1c92f5fba 232 }
emcu 0:2ae1c92f5fba 233 else;
emcu 0:2ae1c92f5fba 234 // END ON/OFF Relè ++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 235
emcu 0:2ae1c92f5fba 236 // Display status via Virtual COM
emcu 0:2ae1c92f5fba 237 PrintTemperatures();
emcu 0:2ae1c92f5fba 238
emcu 0:2ae1c92f5fba 239 // Display Status on the LCD1602 board
emcu 0:2ae1c92f5fba 240 // lcd.cls();
emcu 0:2ae1c92f5fba 241 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 242 if (rele == ON)
emcu 0:2ae1c92f5fba 243 lcd.printf("T %2.3f RELEon ", temperature); // probe.temperature('c'));
emcu 0:2ae1c92f5fba 244 if (rele == OFF)
emcu 0:2ae1c92f5fba 245 lcd.printf("T %2.3f RELEoff", temperature); // probe.temperature('c'));
emcu 0:2ae1c92f5fba 246
emcu 0:2ae1c92f5fba 247 // END READ and DISPLAY the TEMPERATURE and control RELAY +++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 248
emcu 0:2ae1c92f5fba 249
emcu 0:2ae1c92f5fba 250 // START Flashing * on the LCD ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 251 FlashSeg++;
emcu 0:2ae1c92f5fba 252 if (FlashSeg == 1)
emcu 0:2ae1c92f5fba 253 {
emcu 0:2ae1c92f5fba 254 lcd.locate(8,0);
emcu 0:2ae1c92f5fba 255 lcd.printf(" ");
emcu 0:2ae1c92f5fba 256 }
emcu 0:2ae1c92f5fba 257 if (FlashSeg == 2)
emcu 0:2ae1c92f5fba 258 {
emcu 0:2ae1c92f5fba 259 lcd.locate(8,0);
emcu 0:2ae1c92f5fba 260 lcd.printf("*");
emcu 0:2ae1c92f5fba 261 FlashSeg = 0;
emcu 0:2ae1c92f5fba 262 }
emcu 0:2ae1c92f5fba 263 // END START Flashing * on the LCD ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 264
emcu 0:2ae1c92f5fba 265 // LAST line on the LCD +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 266 if (PowerON == YES) // If failed 220Vac, is shown on the LCD
emcu 0:2ae1c92f5fba 267 {
emcu 0:2ae1c92f5fba 268 FlashLCDlastLine++;
emcu 0:2ae1c92f5fba 269 if (FlashLCDlastLine == 1)
emcu 0:2ae1c92f5fba 270 {
emcu 0:2ae1c92f5fba 271 backlight = ON;
emcu 0:2ae1c92f5fba 272 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 273 lcd.printf("Failed 220Vac ");
emcu 0:2ae1c92f5fba 274 pc.printf("\n\rFailed 220Vac\n\r");
emcu 0:2ae1c92f5fba 275 }
emcu 0:2ae1c92f5fba 276 if (FlashLCDlastLine == 2)
emcu 0:2ae1c92f5fba 277 {
emcu 0:2ae1c92f5fba 278 backlight = OFF;
emcu 0:2ae1c92f5fba 279 FlashLCDlastLine = 0;
emcu 0:2ae1c92f5fba 280 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 281 lcd.printf("Failed 220Vac ");
emcu 0:2ae1c92f5fba 282 pc.printf("\n\rFailed 220Vac\n\r");
emcu 0:2ae1c92f5fba 283 }
emcu 0:2ae1c92f5fba 284 }
emcu 0:2ae1c92f5fba 285 else // Show the configurations: Max and Min temperature, Relay ON/OFF temperature and Delay before RELAY goes ON or OFF
emcu 0:2ae1c92f5fba 286 {
emcu 0:2ae1c92f5fba 287 DelayLastLine++;
emcu 0:2ae1c92f5fba 288 if (DelayLastLine == DelayTime) // Show Tmax and Tmin
emcu 0:2ae1c92f5fba 289 {
emcu 0:2ae1c92f5fba 290 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 291 lcd.printf("mx%2.3fmi%2.3f", temperatureMAX, temperatureMIN);
emcu 0:2ae1c92f5fba 292 }
emcu 0:2ae1c92f5fba 293 if (DelayLastLine == (DelayTime + DelayTime)) // Show Relay Tmin (tempON) e Tmax (tempOFF)
emcu 0:2ae1c92f5fba 294 {
emcu 0:2ae1c92f5fba 295 // DelayLastLine = 0;
emcu 0:2ae1c92f5fba 296 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 297 lcd.printf("Rm%2.2f RM%2.2f ", tempON, tempOFF);
emcu 0:2ae1c92f5fba 298 }
emcu 0:2ae1c92f5fba 299 if (DelayLastLine == (DelayTime + DelayTime + DelayTime)) // Show DelayForOffOnRealy
emcu 0:2ae1c92f5fba 300 {
emcu 0:2ae1c92f5fba 301 DelayLastLine = 0;
emcu 0:2ae1c92f5fba 302 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 303 lcd.printf(" ");
emcu 0:2ae1c92f5fba 304 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 305 lcd.printf("DelayOnOff=%dsec", DelayForOffOnRealy); // ((DelayForOffOnRealy * TempSamplingTime)/1000));
emcu 0:2ae1c92f5fba 306 }
emcu 0:2ae1c92f5fba 307 }
emcu 0:2ae1c92f5fba 308 // END LAST line on the LCD +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
emcu 0:2ae1c92f5fba 309 }
emcu 0:2ae1c92f5fba 310 }
emcu 0:2ae1c92f5fba 311
emcu 0:2ae1c92f5fba 312
emcu 0:2ae1c92f5fba 313 /*
emcu 0:2ae1c92f5fba 314 **** ShowSetUp
emcu 0:2ae1c92f5fba 315 This function use the global variable:
emcu 0:2ae1c92f5fba 316 tempON
emcu 0:2ae1c92f5fba 317 tempOFF
emcu 0:2ae1c92f5fba 318 */
emcu 0:2ae1c92f5fba 319 void ShowSetUp(void)
emcu 0:2ae1c92f5fba 320 {
emcu 0:2ae1c92f5fba 321 PowerON = NO;
emcu 0:2ae1c92f5fba 322 FlashLCDlastLine = 0;
emcu 0:2ae1c92f5fba 323
emcu 0:2ae1c92f5fba 324 lcd.cls();
emcu 0:2ae1c92f5fba 325 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 326 lcd.printf(" www.emcu.it ");
emcu 0:2ae1c92f5fba 327 WaitingRightButton();
emcu 0:2ae1c92f5fba 328 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 329 lcd.printf("UP DOWN or LEFT ");
emcu 0:2ae1c92f5fba 330
emcu 0:2ae1c92f5fba 331 // Awaiting the pressure of Left Button to finish this part
emcu 0:2ae1c92f5fba 332 while (ReadButtonOnLCD1602() != tLeft)
emcu 0:2ae1c92f5fba 333 {
emcu 0:2ae1c92f5fba 334 // Increase value
emcu 0:2ae1c92f5fba 335 if (ReadButtonOnLCD1602() == tUp)
emcu 0:2ae1c92f5fba 336 {
emcu 0:2ae1c92f5fba 337 rele = ON;
emcu 0:2ae1c92f5fba 338 RL1 = 1;
emcu 0:2ae1c92f5fba 339 // Awaiting the release of the tUp Button
emcu 0:2ae1c92f5fba 340 while (ReadButtonOnLCD1602() == tUp);
emcu 0:2ae1c92f5fba 341 }
emcu 0:2ae1c92f5fba 342 // Decrease value
emcu 0:2ae1c92f5fba 343 if (ReadButtonOnLCD1602() == tDown)
emcu 0:2ae1c92f5fba 344 {
emcu 0:2ae1c92f5fba 345 rele = OFF;
emcu 0:2ae1c92f5fba 346 RL1 = 0;
emcu 0:2ae1c92f5fba 347 // Awaiting the release of the tDown Button
emcu 0:2ae1c92f5fba 348 while (ReadButtonOnLCD1602() == tDown);
emcu 0:2ae1c92f5fba 349 }
emcu 0:2ae1c92f5fba 350 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 351 if (rele == ON)
emcu 0:2ae1c92f5fba 352 lcd.printf("Rele is ON ");
emcu 0:2ae1c92f5fba 353 else
emcu 0:2ae1c92f5fba 354 lcd.printf("Rele is OFF ");
emcu 0:2ae1c92f5fba 355 }
emcu 0:2ae1c92f5fba 356 // Awaiting the release of the tLeft Button
emcu 0:2ae1c92f5fba 357 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 358 lcd.printf("Release LEFT but");
emcu 0:2ae1c92f5fba 359 while (ReadButtonOnLCD1602() == tLeft);
emcu 0:2ae1c92f5fba 360
emcu 0:2ae1c92f5fba 361 lcd.cls();
emcu 0:2ae1c92f5fba 362 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 363 lcd.printf("Please wait.....");
emcu 0:2ae1c92f5fba 364 }
emcu 0:2ae1c92f5fba 365
emcu 0:2ae1c92f5fba 366
emcu 0:2ae1c92f5fba 367 /*
emcu 0:2ae1c92f5fba 368 **** WaitingRightButton
emcu 0:2ae1c92f5fba 369 This function waiting the Release and Pressure of the Rirght Button
emcu 0:2ae1c92f5fba 370 */
emcu 0:2ae1c92f5fba 371 void WaitingRightButton(void)
emcu 0:2ae1c92f5fba 372 {
emcu 0:2ae1c92f5fba 373 // Awaiting the release of the Right Button
emcu 0:2ae1c92f5fba 374 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 375 lcd.printf("Release RIGHT bu");
emcu 0:2ae1c92f5fba 376 while (ReadButtonOnLCD1602() == tRigth);
emcu 0:2ae1c92f5fba 377 wait_ms(100);
emcu 0:2ae1c92f5fba 378 // Awaiting the pressure of the Rigth Button
emcu 0:2ae1c92f5fba 379 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 380 lcd.printf("Press RIGTH but.");
emcu 0:2ae1c92f5fba 381 while (ReadButtonOnLCD1602() != tRigth);
emcu 0:2ae1c92f5fba 382 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 383 lcd.printf(" ");
emcu 0:2ae1c92f5fba 384 }
emcu 0:2ae1c92f5fba 385
emcu 0:2ae1c92f5fba 386
emcu 0:2ae1c92f5fba 387 /*
emcu 0:2ae1c92f5fba 388 **** SetUp
emcu 0:2ae1c92f5fba 389 This function use the global variable:
emcu 0:2ae1c92f5fba 390 tempON
emcu 0:2ae1c92f5fba 391 tempOFF
emcu 0:2ae1c92f5fba 392 This function use this definitions:
emcu 0:2ae1c92f5fba 393 tUp
emcu 0:2ae1c92f5fba 394 tDown
emcu 0:2ae1c92f5fba 395 tRigth
emcu 0:2ae1c92f5fba 396 tLeft
emcu 0:2ae1c92f5fba 397 */
emcu 0:2ae1c92f5fba 398 void SetUp(void)
emcu 0:2ae1c92f5fba 399 {
emcu 0:2ae1c92f5fba 400 PowerON = NO;
emcu 0:2ae1c92f5fba 401 FlashLCDlastLine = 0;
emcu 0:2ae1c92f5fba 402 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 403 lcd.printf("Please wait.....");
emcu 0:2ae1c92f5fba 404
emcu 0:2ae1c92f5fba 405 // TurnOn the LCD backlight of the LCD1602 board
emcu 0:2ae1c92f5fba 406 backlight = ON; // ON: 1, OFF: 0
emcu 0:2ae1c92f5fba 407
emcu 0:2ae1c92f5fba 408 // Show the SetUp related to:
emcu 0:2ae1c92f5fba 409 // TempMin (tempON) & TempMax (tempOFF)
emcu 0:2ae1c92f5fba 410 lcd.cls();
emcu 0:2ae1c92f5fba 411 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 412 lcd.printf("Rm%2.2f RM%2.2f ", tempON, tempOFF);
emcu 0:2ae1c92f5fba 413
emcu 0:2ae1c92f5fba 414 // Awaiting the release of the Left Button
emcu 0:2ae1c92f5fba 415 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 416 lcd.printf("Release LEFT but");
emcu 0:2ae1c92f5fba 417 while (ReadButtonOnLCD1602() == tLeft);
emcu 0:2ae1c92f5fba 418 wait_ms(100);
emcu 0:2ae1c92f5fba 419 // Awaiting the pressure of the Left Button
emcu 0:2ae1c92f5fba 420 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 421 lcd.printf("Press LEFT butt.");
emcu 0:2ae1c92f5fba 422 // Awaiting the release of the Left Button
emcu 0:2ae1c92f5fba 423 while (ReadButtonOnLCD1602() != tLeft);
emcu 0:2ae1c92f5fba 424
emcu 0:2ae1c92f5fba 425 // Menù for SetUp the TempMin (tempON)
emcu 0:2ae1c92f5fba 426 lcd.cls();
emcu 0:2ae1c92f5fba 427 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 428 lcd.printf("RTempMin %2.2f", tempON);
emcu 0:2ae1c92f5fba 429 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 430 lcd.printf("UP DOWN RIGHT");
emcu 0:2ae1c92f5fba 431 // Awaiting the pressure of Right Button to finish this part
emcu 0:2ae1c92f5fba 432 while (ReadButtonOnLCD1602() != tRigth)
emcu 0:2ae1c92f5fba 433 {
emcu 0:2ae1c92f5fba 434 // Increase value
emcu 0:2ae1c92f5fba 435 if (ReadButtonOnLCD1602() == tUp)
emcu 0:2ae1c92f5fba 436 {
emcu 0:2ae1c92f5fba 437 tempON = tempON + float(tStep);
emcu 0:2ae1c92f5fba 438 // Awaiting the release of the tUp Button
emcu 0:2ae1c92f5fba 439 while (ReadButtonOnLCD1602() == tUp);
emcu 0:2ae1c92f5fba 440 }
emcu 0:2ae1c92f5fba 441 // Decrease value
emcu 0:2ae1c92f5fba 442 if (ReadButtonOnLCD1602() == tDown)
emcu 0:2ae1c92f5fba 443 {
emcu 0:2ae1c92f5fba 444 tempON = tempON - float(tStep);
emcu 0:2ae1c92f5fba 445 // Awaiting the release of the tDown Button
emcu 0:2ae1c92f5fba 446 while (ReadButtonOnLCD1602() == tDown);
emcu 0:2ae1c92f5fba 447 }
emcu 0:2ae1c92f5fba 448 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 449 lcd.printf("RTempMin %2.2f", tempON);
emcu 0:2ae1c92f5fba 450 }
emcu 0:2ae1c92f5fba 451 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 452 lcd.printf("Release RIGHT");
emcu 0:2ae1c92f5fba 453 // Awaiting the release of the tRight Button
emcu 0:2ae1c92f5fba 454 while (ReadButtonOnLCD1602() == tRigth);
emcu 0:2ae1c92f5fba 455 wait_ms(100);
emcu 0:2ae1c92f5fba 456
emcu 0:2ae1c92f5fba 457 // Menù for SetUp the TempMax (tempOFF)
emcu 0:2ae1c92f5fba 458 if (tempOFF <= tempON)
emcu 0:2ae1c92f5fba 459 tempOFF = tempON + float(tStep) + float(tStep);
emcu 0:2ae1c92f5fba 460 lcd.cls();
emcu 0:2ae1c92f5fba 461 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 462 lcd.printf("RTempMax %2.2f", tempOFF);
emcu 0:2ae1c92f5fba 463 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 464 lcd.printf("UP DOWN LEFT");
emcu 0:2ae1c92f5fba 465 // Awaiting the pressure of Left Button to finish this part
emcu 0:2ae1c92f5fba 466 while (ReadButtonOnLCD1602() != tLeft)
emcu 0:2ae1c92f5fba 467 {
emcu 0:2ae1c92f5fba 468 // Increase value
emcu 0:2ae1c92f5fba 469 if (ReadButtonOnLCD1602() == tUp)
emcu 0:2ae1c92f5fba 470 {
emcu 0:2ae1c92f5fba 471 tempOFF = tempOFF + float(tStep);
emcu 0:2ae1c92f5fba 472 // Awaiting the release of the tUp Button
emcu 0:2ae1c92f5fba 473 while (ReadButtonOnLCD1602() == tUp);
emcu 0:2ae1c92f5fba 474 }
emcu 0:2ae1c92f5fba 475 // Decrease value
emcu 0:2ae1c92f5fba 476 if (ReadButtonOnLCD1602() == tDown)
emcu 0:2ae1c92f5fba 477 {
emcu 0:2ae1c92f5fba 478 tempOFF = tempOFF - float(tStep);
emcu 0:2ae1c92f5fba 479 // Awaiting the release of the tDown Button
emcu 0:2ae1c92f5fba 480 while (ReadButtonOnLCD1602() == tDown);
emcu 0:2ae1c92f5fba 481 // Test tempOFF that must be superior to tempON + 2tStep
emcu 0:2ae1c92f5fba 482 if (tempOFF <= tempON + (float(tStep) + float(tStep)))
emcu 0:2ae1c92f5fba 483 {
emcu 0:2ae1c92f5fba 484 tempOFF = tempON + float(tStep) + float(tStep);
emcu 0:2ae1c92f5fba 485 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 486 lcd.printf("TempMax>TempMin");
emcu 0:2ae1c92f5fba 487 wait(2);
emcu 0:2ae1c92f5fba 488 }
emcu 0:2ae1c92f5fba 489 }
emcu 0:2ae1c92f5fba 490 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 491 lcd.printf("RTempMax %2.2f ", tempOFF);
emcu 0:2ae1c92f5fba 492 }
emcu 0:2ae1c92f5fba 493 // Awaiting the release of the tLeft Button
emcu 0:2ae1c92f5fba 494 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 495 lcd.printf("Release LEFT but");
emcu 0:2ae1c92f5fba 496 while (ReadButtonOnLCD1602() == tLeft);
emcu 0:2ae1c92f5fba 497
emcu 0:2ae1c92f5fba 498 // Menù for SetUp the Delay before to accept the On/Off of the relay (DelayForOffOnRealy)
emcu 0:2ae1c92f5fba 499 lcd.cls();
emcu 0:2ae1c92f5fba 500 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 501 lcd.printf("DelayOnOff=%dsec", DelayForOffOnRealy); // ((DelayForOffOnRealy * TempSamplingTime)/1000));
emcu 0:2ae1c92f5fba 502 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 503 lcd.printf("UP DOWN RIGHT");
emcu 0:2ae1c92f5fba 504 // Awaiting the pressure of Right Button to finish this part
emcu 0:2ae1c92f5fba 505 while (ReadButtonOnLCD1602() != tRigth)
emcu 0:2ae1c92f5fba 506 {
emcu 0:2ae1c92f5fba 507 // Increase value
emcu 0:2ae1c92f5fba 508 if (ReadButtonOnLCD1602() == tUp)
emcu 0:2ae1c92f5fba 509 {
emcu 0:2ae1c92f5fba 510 DelayForOffOnRealy = DelayForOffOnRealy + 10;
emcu 0:2ae1c92f5fba 511 // Awaiting the release of the tUp Button
emcu 0:2ae1c92f5fba 512 while (ReadButtonOnLCD1602() == tUp);
emcu 0:2ae1c92f5fba 513 if (DelayForOffOnRealy >= MaxRelDly)
emcu 0:2ae1c92f5fba 514 DelayForOffOnRealy = MaxRelDly;
emcu 0:2ae1c92f5fba 515 }
emcu 0:2ae1c92f5fba 516 // Decrease value
emcu 0:2ae1c92f5fba 517 if (ReadButtonOnLCD1602() == tDown)
emcu 0:2ae1c92f5fba 518 {
emcu 0:2ae1c92f5fba 519 DelayForOffOnRealy = DelayForOffOnRealy - 10;
emcu 0:2ae1c92f5fba 520 // Awaiting the release of the tDown Button
emcu 0:2ae1c92f5fba 521 while (ReadButtonOnLCD1602() == tDown);
emcu 0:2ae1c92f5fba 522 if (DelayForOffOnRealy <= 10)
emcu 0:2ae1c92f5fba 523 DelayForOffOnRealy = 10;
emcu 0:2ae1c92f5fba 524 }
emcu 0:2ae1c92f5fba 525 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 526 lcd.printf("DelayOnOff=%dsec", DelayForOffOnRealy); // ((DelayForOffOnRealy * TempSamplingTime)/1000));
emcu 0:2ae1c92f5fba 527 }
emcu 0:2ae1c92f5fba 528 lcd.locate(0,1);
emcu 0:2ae1c92f5fba 529 lcd.printf("Release RIGHT");
emcu 0:2ae1c92f5fba 530 // Awaiting the release of the tRight Button
emcu 0:2ae1c92f5fba 531 while (ReadButtonOnLCD1602() == tRigth);
emcu 0:2ae1c92f5fba 532 wait_ms(100);
emcu 0:2ae1c92f5fba 533
emcu 0:2ae1c92f5fba 534 lcd.cls();
emcu 0:2ae1c92f5fba 535 lcd.locate(0,0);
emcu 0:2ae1c92f5fba 536 lcd.printf("Please wait.....");
emcu 0:2ae1c92f5fba 537
emcu 0:2ae1c92f5fba 538 return;
emcu 0:2ae1c92f5fba 539 }
emcu 0:2ae1c92f5fba 540
emcu 0:2ae1c92f5fba 541
emcu 0:2ae1c92f5fba 542 /*
emcu 0:2ae1c92f5fba 543 **** ReadButtonOnLCD1602
emcu 0:2ae1c92f5fba 544 This function Read the button on the LCD1620
emcu 0:2ae1c92f5fba 545 This function use the global variable:
emcu 0:2ae1c92f5fba 546 value
emcu 0:2ae1c92f5fba 547 LastButtonPressed
emcu 0:2ae1c92f5fba 548 This function use this definitions:
emcu 0:2ae1c92f5fba 549 TastoSU
emcu 0:2ae1c92f5fba 550 TastoGIU
emcu 0:2ae1c92f5fba 551 TastoDES
emcu 0:2ae1c92f5fba 552 TastoSIN
emcu 0:2ae1c92f5fba 553 DeltaTasti
emcu 0:2ae1c92f5fba 554 tUp
emcu 0:2ae1c92f5fba 555 tDown
emcu 0:2ae1c92f5fba 556 tRigth
emcu 0:2ae1c92f5fba 557 tLeft
emcu 0:2ae1c92f5fba 558 tNone
emcu 0:2ae1c92f5fba 559 */
emcu 0:2ae1c92f5fba 560 uint8_t ReadButtonOnLCD1602(void)
emcu 0:2ae1c92f5fba 561 {
emcu 0:2ae1c92f5fba 562 value = button.read_u16();
emcu 0:2ae1c92f5fba 563 // pc.printf("Button value = %d\n\r",value);
emcu 0:2ae1c92f5fba 564
emcu 0:2ae1c92f5fba 565 if (value < (TastoSU + DeltaTasti) && value > (TastoSU - DeltaTasti)) // Button UP
emcu 0:2ae1c92f5fba 566 {
emcu 0:2ae1c92f5fba 567 // pc.printf("UP\n\r");
emcu 0:2ae1c92f5fba 568 return tUp;
emcu 0:2ae1c92f5fba 569 }
emcu 0:2ae1c92f5fba 570 else if (value < (TastoGIU + DeltaTasti) && value > (TastoGIU - DeltaTasti)) // Button DOWN
emcu 0:2ae1c92f5fba 571 {
emcu 0:2ae1c92f5fba 572 // pc.printf("DOWN\n\r");
emcu 0:2ae1c92f5fba 573 return tDown;
emcu 0:2ae1c92f5fba 574 }
emcu 0:2ae1c92f5fba 575 else if (value < (TastoDES + DeltaTasti) && value <= (TastoDES - DeltaTasti)) // Button RIGHT
emcu 0:2ae1c92f5fba 576 {
emcu 0:2ae1c92f5fba 577 // pc.printf("RIGHT\n\r");
emcu 0:2ae1c92f5fba 578 return tRigth;
emcu 0:2ae1c92f5fba 579 }
emcu 0:2ae1c92f5fba 580 else if (value < (TastoSIN + DeltaTasti) && value > (TastoSIN - DeltaTasti)) // Button LEFT
emcu 0:2ae1c92f5fba 581 {
emcu 0:2ae1c92f5fba 582 // pc.printf("LEFT\n\r");
emcu 0:2ae1c92f5fba 583 return tLeft;
emcu 0:2ae1c92f5fba 584 }
emcu 0:2ae1c92f5fba 585 else
emcu 0:2ae1c92f5fba 586 return tNone;
emcu 0:2ae1c92f5fba 587 }
emcu 0:2ae1c92f5fba 588
emcu 0:2ae1c92f5fba 589
emcu 0:2ae1c92f5fba 590 /*
emcu 0:2ae1c92f5fba 591 This function is use for eliminate the wrong reading and
emcu 0:2ae1c92f5fba 592 for setup the MAX and MIN temperature we have read.
emcu 0:2ae1c92f5fba 593 This function use the global variable:
emcu 0:2ae1c92f5fba 594 temperature
emcu 0:2ae1c92f5fba 595 MaxTempError
emcu 0:2ae1c92f5fba 596 temperaturePREVIOUS
emcu 0:2ae1c92f5fba 597 temperatureMAX
emcu 0:2ae1c92f5fba 598 temperatureMIN
emcu 0:2ae1c92f5fba 599 This function use this definition:
emcu 0:2ae1c92f5fba 600 MaxError
emcu 0:2ae1c92f5fba 601 */
emcu 0:2ae1c92f5fba 602 void CalcMed(void)
emcu 0:2ae1c92f5fba 603 {
emcu 0:2ae1c92f5fba 604 // Remove a measure that exceed the +- MaxError
emcu 0:2ae1c92f5fba 605 MaxTempError = (temperature * MaxError) / 100;
emcu 0:2ae1c92f5fba 606 if (temperature > (temperature + MaxTempError))
emcu 0:2ae1c92f5fba 607 temperature = temperaturePREVIOUS;
emcu 0:2ae1c92f5fba 608 else if (temperature < (temperature - MaxTempError))
emcu 0:2ae1c92f5fba 609 temperature = temperaturePREVIOUS;
emcu 0:2ae1c92f5fba 610 else
emcu 0:2ae1c92f5fba 611 temperaturePREVIOUS = temperature;
emcu 0:2ae1c92f5fba 612
emcu 0:2ae1c92f5fba 613 // SetUp the Max and Min temperature measured
emcu 0:2ae1c92f5fba 614 if (temperature > temperatureMAX)
emcu 0:2ae1c92f5fba 615 temperatureMAX = temperature;
emcu 0:2ae1c92f5fba 616 if (temperature < temperatureMIN)
emcu 0:2ae1c92f5fba 617 temperatureMIN = temperature;
emcu 0:2ae1c92f5fba 618 }
emcu 0:2ae1c92f5fba 619
emcu 0:2ae1c92f5fba 620
emcu 0:2ae1c92f5fba 621 /*
emcu 0:2ae1c92f5fba 622 This function Display temperatures on the PC
emcu 0:2ae1c92f5fba 623 */
emcu 0:2ae1c92f5fba 624 void PrintTemperatures(void)
emcu 0:2ae1c92f5fba 625 {
emcu 0:2ae1c92f5fba 626 pc.printf("TEMPERATURE Control v.1.2 2015 Casa\n\rTEMPERATURE is: %2.3f Centigrade/Centigradi\r\n", temperature);
emcu 0:2ae1c92f5fba 627 // pc.printf("DeltaTemp = %2.3f\r\n", DeltaTemp);
emcu 0:2ae1c92f5fba 628 pc.printf("RELAY - tempON = %2.3f ", tempON);
emcu 0:2ae1c92f5fba 629 pc.printf("tempOFF = %2.3f\r\n", tempOFF);
emcu 0:2ae1c92f5fba 630 pc.printf("Delay for OFF or ON realy = %d sec.\n\r", DelayForOffOnRealy); // ((DelayForOffOnRealy * TempSamplingTime)/1000));
emcu 0:2ae1c92f5fba 631 // pc.printf("Temperature MIN measured = %d - Temperature MAX measured = %d\n\r", TlowerTemp, TowerTemp);
emcu 0:2ae1c92f5fba 632 if (rele == ON)
emcu 0:2ae1c92f5fba 633 pc.printf("RELAY is ON\n\r");
emcu 0:2ae1c92f5fba 634 else
emcu 0:2ae1c92f5fba 635 pc.printf("RELAY is OFF\n\r");
emcu 0:2ae1c92f5fba 636 pc.printf("MaxTempError = %2.3f\r\n", MaxTempError);
emcu 0:2ae1c92f5fba 637 pc.printf("temperaturePREVIOUS = %2.3f\r\n", temperaturePREVIOUS);
emcu 0:2ae1c92f5fba 638 pc.printf("TEMPERATURE measured - MAX = %2.3f ", temperatureMAX);
emcu 0:2ae1c92f5fba 639 pc.printf("MIN = %2.3f\r\n\r\n", temperatureMIN);
emcu 0:2ae1c92f5fba 640 }