nuova versione

Dependencies:   BSP_DISCO_F746NG CD74HC165E LCD_DISCO_F746NG Shifter2 TS_DISCO_F746NG mbed

Fork of Enrico_newproject by marco valli

Committer:
billycorgan123
Date:
Wed Mar 07 21:14:46 2018 +0000
Revision:
2:6b24c77e16b6
Parent:
1:8a54b7de2617
nuova versione

Who changed what in which revision?

UserRevisionLine numberNew contents of line
billycorgan123 0:d421f2c38453 1 #include "mbed.h"
billycorgan123 1:8a54b7de2617 2 #include "TS_DISCO_F746NG.h"
billycorgan123 0:d421f2c38453 3 #include "LCD_DISCO_F746NG.h"
billycorgan123 1:8a54b7de2617 4
billycorgan123 1:8a54b7de2617 5 #include "Bloccoporta_acceso.c"
billycorgan123 1:8a54b7de2617 6 #include "Bloccoporta_spento.c"
billycorgan123 1:8a54b7de2617 7 #include "Girarrosto_acceso.c"
billycorgan123 1:8a54b7de2617 8 #include "Girarrosto_spento.c"
billycorgan123 1:8a54b7de2617 9 #include "Lampadina_acceso.c"
billycorgan123 1:8a54b7de2617 10 #include "Lampadina_spento.c"
billycorgan123 2:6b24c77e16b6 11 #include "Ventilatore_turbo_acceso.c"
billycorgan123 2:6b24c77e16b6 12 #include "Ventilatore_turbo_spento.c"
billycorgan123 1:8a54b7de2617 13 #include "Resistenza1_acceso.c"
billycorgan123 1:8a54b7de2617 14 #include "Resistenza1_spento.c"
billycorgan123 1:8a54b7de2617 15 #include "Resistenza2_acceso.c"
billycorgan123 1:8a54b7de2617 16 #include "Resistenza2_spento.c"
billycorgan123 2:6b24c77e16b6 17 #include "Cooling_acceso.c"
billycorgan123 2:6b24c77e16b6 18 #include "Cooling_spento.c"
billycorgan123 1:8a54b7de2617 19 #include "Ventilatore2_acceso.c"
billycorgan123 1:8a54b7de2617 20 #include "Ventilatore2_spento.c"
billycorgan123 1:8a54b7de2617 21
billycorgan123 1:8a54b7de2617 22 #include "Clean.c"
billycorgan123 1:8a54b7de2617 23 #include "Roast.c"
billycorgan123 1:8a54b7de2617 24 #include "Stop.c"
billycorgan123 1:8a54b7de2617 25
billycorgan123 1:8a54b7de2617 26 #include "functions.h"
billycorgan123 1:8a54b7de2617 27 #include "colors.c"
billycorgan123 1:8a54b7de2617 28 #include "Output.h"
billycorgan123 1:8a54b7de2617 29 #include "Shifter.h"
billycorgan123 0:d421f2c38453 30
billycorgan123 0:d421f2c38453 31 LCD_DISCO_F746NG lcd;
billycorgan123 1:8a54b7de2617 32 TS_DISCO_F746NG ts;
billycorgan123 1:8a54b7de2617 33
billycorgan123 2:6b24c77e16b6 34 extern void clean(int, float, float);
billycorgan123 2:6b24c77e16b6 35 extern void roast(int, int);
billycorgan123 1:8a54b7de2617 36 extern void stop();
billycorgan123 2:6b24c77e16b6 37 extern void sportello_scarico(bool);
billycorgan123 1:8a54b7de2617 38 extern void object_update();
billycorgan123 1:8a54b7de2617 39
billycorgan123 1:8a54b7de2617 40 TS_StateTypeDef TS_State;
billycorgan123 1:8a54b7de2617 41 uint16_t X, Y;
billycorgan123 1:8a54b7de2617 42 uint8_t idx;
billycorgan123 1:8a54b7de2617 43 uint8_t status;
billycorgan123 1:8a54b7de2617 44 uint8_t cleared = 0;
billycorgan123 1:8a54b7de2617 45 uint8_t prev_nb_touches = 0;
billycorgan123 1:8a54b7de2617 46 int numerotappe=0;
billycorgan123 1:8a54b7de2617 47 uint8_t text[30];
billycorgan123 1:8a54b7de2617 48
billycorgan123 2:6b24c77e16b6 49 Output Bloccoporta; //
billycorgan123 2:6b24c77e16b6 50 Output Girarrosto; // palette agita caffé
billycorgan123 2:6b24c77e16b6 51 Output Lampadina; //
billycorgan123 2:6b24c77e16b6 52 Output Ventilatore_turbo; // ventilatore turbo
billycorgan123 2:6b24c77e16b6 53 Output Scarico_caffe; // motore scarico caffé
billycorgan123 2:6b24c77e16b6 54 Output Resistenza1; //
billycorgan123 2:6b24c77e16b6 55 Output Resistenza2; //
billycorgan123 2:6b24c77e16b6 56 Output Cooling; // cooling
billycorgan123 2:6b24c77e16b6 57 Output Ventilatore2; // cassetto
billycorgan123 2:6b24c77e16b6 58
billycorgan123 2:6b24c77e16b6 59 AnalogIn Temperatura_forno(A0);
billycorgan123 2:6b24c77e16b6 60 AnalogIn Temperatura_sonda1(A1); //da dare un nome
billycorgan123 2:6b24c77e16b6 61 AnalogIn Temperatura_sonda2(A2); //da dare un nome
billycorgan123 2:6b24c77e16b6 62 AnalogIn Temperatura_sonda3(A3); //da dare un nome
billycorgan123 2:6b24c77e16b6 63 AnalogIn Temperatura_sonda4(A4); //da dare un nome
billycorgan123 2:6b24c77e16b6 64 AnalogIn Temperatura_sonda5(A5); //da dare un nome
billycorgan123 2:6b24c77e16b6 65
billycorgan123 2:6b24c77e16b6 66 CD74HC165E Sensore(D12, D10, D9); //(PinName PL, PinName CP, PinName Q7);
billycorgan123 2:6b24c77e16b6 67 bool* sensori;
billycorgan123 2:6b24c77e16b6 68 bool switch1=sensori[0]; //da dare un nome
billycorgan123 2:6b24c77e16b6 69 bool switch2=sensori[1]; //da dare un nome
billycorgan123 2:6b24c77e16b6 70 bool switch3=sensori[2]; //da dare un nome
billycorgan123 2:6b24c77e16b6 71 bool switch4=sensori[3]; //da dare un nome
billycorgan123 2:6b24c77e16b6 72 bool switch5=sensori[4]; //da dare un nome
billycorgan123 2:6b24c77e16b6 73 bool switch6=sensori[5]; //da dare un nome
billycorgan123 2:6b24c77e16b6 74
billycorgan123 2:6b24c77e16b6 75 int switch_aperto;
billycorgan123 2:6b24c77e16b6 76 int switch_chiuso;
billycorgan123 1:8a54b7de2617 77
billycorgan123 1:8a54b7de2617 78 Shifter scheda_8relay; //!! pinout defined in library
billycorgan123 0:d421f2c38453 79
billycorgan123 0:d421f2c38453 80 int main()
billycorgan123 0:d421f2c38453 81 {
billycorgan123 1:8a54b7de2617 82 setup_griglia();
billycorgan123 2:6b24c77e16b6 83 lcd.SetBackColor(light_sky_blue);
billycorgan123 2:6b24c77e16b6 84 lcd.SetFont(&Font24);
billycorgan123 2:6b24c77e16b6 85 lcd.SetTextColor(black);
billycorgan123 0:d421f2c38453 86 while(1) {
billycorgan123 1:8a54b7de2617 87 //acquisisco la pressione sullo schermo per attivare i vari oggetti
billycorgan123 1:8a54b7de2617 88 ts.ResetTouchData(&TS_State);
billycorgan123 1:8a54b7de2617 89 ts.GetState(&TS_State);
billycorgan123 1:8a54b7de2617 90 X = TS_State.touchX[0]; //acquisisco la X
billycorgan123 1:8a54b7de2617 91 Y = TS_State.touchY[0]; //acquisisco la Y
billycorgan123 2:6b24c77e16b6 92
billycorgan123 2:6b24c77e16b6 93 if (X>=20 && X<120 && Y>=20 && Y<80) { //ROAST
billycorgan123 2:6b24c77e16b6 94 roast(160,900);
billycorgan123 0:d421f2c38453 95 }
billycorgan123 2:6b24c77e16b6 96 if (X>=20 && X<120 && Y>=90 && Y<150) { //CLEAN
billycorgan123 2:6b24c77e16b6 97 clean(7200, 430.0, 460.0);
billycorgan123 1:8a54b7de2617 98 }
billycorgan123 2:6b24c77e16b6 99 if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP
billycorgan123 1:8a54b7de2617 100
billycorgan123 1:8a54b7de2617 101 }
billycorgan123 1:8a54b7de2617 102 if (TS_State.touchDetected) wait(0.1);
billycorgan123 2:6b24c77e16b6 103
billycorgan123 1:8a54b7de2617 104 object_update();
billycorgan123 2:6b24c77e16b6 105
billycorgan123 1:8a54b7de2617 106 wait(0.1);
billycorgan123 0:d421f2c38453 107 }//close while(1)
billycorgan123 0:d421f2c38453 108 }//close main
billycorgan123 1:8a54b7de2617 109
billycorgan123 2:6b24c77e16b6 110 //CLEAN
billycorgan123 2:6b24c77e16b6 111 void clean(int clean_time, float setpointLOW, float setpointHIGH)
billycorgan123 1:8a54b7de2617 112 {
billycorgan123 1:8a54b7de2617 113 Timer timer;
billycorgan123 1:8a54b7de2617 114 timer.start();
billycorgan123 1:8a54b7de2617 115 int previous_time, actual_time;
billycorgan123 1:8a54b7de2617 116 previous_time = timer.read();
billycorgan123 2:6b24c77e16b6 117 Lampadina.stato=0;
billycorgan123 1:8a54b7de2617 118 Resistenza1.stato=1;
billycorgan123 1:8a54b7de2617 119 Resistenza2.stato=1;
billycorgan123 2:6b24c77e16b6 120 Cooling.stato=1; //accendo ventilazione raffreddamento
billycorgan123 2:6b24c77e16b6 121 Bloccoporta.stato=1; // chiudo porta
billycorgan123 2:6b24c77e16b6 122 lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"CLEAN ATTIVO ", LEFT_MODE);
billycorgan123 2:6b24c77e16b6 123 // dovrei verificare se il tappo caffé è chiuso ma per ora non ho switch, aggiungere oggetto switch1
billycorgan123 2:6b24c77e16b6 124
billycorgan123 2:6b24c77e16b6 125 // dovrei verificare se sportello caffé chiuso, aggiungere oggetto switch2
billycorgan123 1:8a54b7de2617 126
billycorgan123 1:8a54b7de2617 127 while(1) {
billycorgan123 1:8a54b7de2617 128 actual_time = timer.read();
billycorgan123 1:8a54b7de2617 129 uint8_t text[30];
billycorgan123 1:8a54b7de2617 130 //acquisisco la pressione sullo schermo per attivare i vari oggetti
billycorgan123 1:8a54b7de2617 131 ts.ResetTouchData(&TS_State);
billycorgan123 1:8a54b7de2617 132 ts.GetState(&TS_State);
billycorgan123 1:8a54b7de2617 133 int X = TS_State.touchX[0]; //acquisisco la X
billycorgan123 1:8a54b7de2617 134 int Y = TS_State.touchY[0]; //acquisisco la Y
billycorgan123 1:8a54b7de2617 135 if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP
billycorgan123 1:8a54b7de2617 136 stop();
billycorgan123 1:8a54b7de2617 137 break;
billycorgan123 1:8a54b7de2617 138 }
billycorgan123 1:8a54b7de2617 139 //countdown dal clean_time a zero
billycorgan123 1:8a54b7de2617 140 if (actual_time-previous_time >=1) {
billycorgan123 1:8a54b7de2617 141 lcd.SetTextColor(black);
billycorgan123 1:8a54b7de2617 142 sprintf((char*)text, "%5d", clean_time);
billycorgan123 1:8a54b7de2617 143 lcd.DisplayStringAt(130,100, (uint8_t *)&text, LEFT_MODE);
billycorgan123 1:8a54b7de2617 144 previous_time = actual_time;
billycorgan123 1:8a54b7de2617 145 clean_time--;
billycorgan123 1:8a54b7de2617 146 }
billycorgan123 1:8a54b7de2617 147 //se il tempo di clean è finito porto gli output a zero e aggiorno, poi esco dal ciclo
billycorgan123 1:8a54b7de2617 148 if (clean_time<0) {
billycorgan123 1:8a54b7de2617 149 stop();
billycorgan123 1:8a54b7de2617 150 break;
billycorgan123 1:8a54b7de2617 151 }
billycorgan123 2:6b24c77e16b6 152
billycorgan123 2:6b24c77e16b6 153 // regolo temperatura clean
billycorgan123 2:6b24c77e16b6 154 if (Temperatura_forno.read() < setpointLOW) {
billycorgan123 2:6b24c77e16b6 155 Resistenza1.stato=1;
billycorgan123 2:6b24c77e16b6 156 object_update();
billycorgan123 2:6b24c77e16b6 157 //acquisisco la pressione sullo schermo per attivare i vari oggetti
billycorgan123 2:6b24c77e16b6 158 ts.ResetTouchData(&TS_State);
billycorgan123 2:6b24c77e16b6 159 ts.GetState(&TS_State);
billycorgan123 2:6b24c77e16b6 160 int X = TS_State.touchX[0]; //acquisisco la X
billycorgan123 2:6b24c77e16b6 161 int Y = TS_State.touchY[0]; //acquisisco la Y
billycorgan123 2:6b24c77e16b6 162 if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP
billycorgan123 2:6b24c77e16b6 163 stop();
billycorgan123 2:6b24c77e16b6 164 break;
billycorgan123 2:6b24c77e16b6 165 }
billycorgan123 2:6b24c77e16b6 166 }
billycorgan123 2:6b24c77e16b6 167 if (Temperatura_forno.read() > setpointHIGH) {
billycorgan123 2:6b24c77e16b6 168 Resistenza1.stato=0;
billycorgan123 2:6b24c77e16b6 169 object_update();
billycorgan123 2:6b24c77e16b6 170 //acquisisco la pressione sullo schermo per attivare i vari oggetti
billycorgan123 2:6b24c77e16b6 171 ts.ResetTouchData(&TS_State);
billycorgan123 2:6b24c77e16b6 172 ts.GetState(&TS_State);
billycorgan123 2:6b24c77e16b6 173 int X = TS_State.touchX[0]; //acquisisco la X
billycorgan123 2:6b24c77e16b6 174 int Y = TS_State.touchY[0]; //acquisisco la Y
billycorgan123 2:6b24c77e16b6 175 if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP
billycorgan123 2:6b24c77e16b6 176 stop();
billycorgan123 2:6b24c77e16b6 177 break;
billycorgan123 2:6b24c77e16b6 178 }
billycorgan123 2:6b24c77e16b6 179 }
billycorgan123 1:8a54b7de2617 180 object_update();
billycorgan123 1:8a54b7de2617 181 }
billycorgan123 1:8a54b7de2617 182 }
billycorgan123 2:6b24c77e16b6 183
billycorgan123 2:6b24c77e16b6 184 //STOP
billycorgan123 1:8a54b7de2617 185 void stop()
billycorgan123 2:6b24c77e16b6 186 {
billycorgan123 2:6b24c77e16b6 187 //imposto TUTTI gli output, poi aggiorno
billycorgan123 2:6b24c77e16b6 188 Bloccoporta.stato=1;
billycorgan123 2:6b24c77e16b6 189 Cooling.stato=1;
billycorgan123 2:6b24c77e16b6 190 Ventilatore_turbo.stato=0;
billycorgan123 1:8a54b7de2617 191 Lampadina.stato=0;
billycorgan123 1:8a54b7de2617 192 Resistenza1.stato=0;
billycorgan123 1:8a54b7de2617 193 Resistenza2.stato=0;
billycorgan123 2:6b24c77e16b6 194 Girarrosto.stato=0;
billycorgan123 2:6b24c77e16b6 195 Scarico_caffe.fermo();
billycorgan123 2:6b24c77e16b6 196 Ventilatore2.stato=0;
billycorgan123 2:6b24c77e16b6 197 object_update();
billycorgan123 2:6b24c77e16b6 198 lcd.DisplayStringAt(0, LINE(10), (uint8_t *)" S T O P ", LEFT_MODE);
billycorgan123 2:6b24c77e16b6 199 //da correggere, mettere le 2 grandezze nella stessa dimensione
billycorgan123 2:6b24c77e16b6 200 while (Temperatura_forno.read()>150) {
billycorgan123 2:6b24c77e16b6 201 wait(1.0);
billycorgan123 2:6b24c77e16b6 202 // scrivo qualcosa a video??
billycorgan123 2:6b24c77e16b6 203 }
billycorgan123 2:6b24c77e16b6 204 Cooling.stato=0; // spengo ventilazione raffreddamento
billycorgan123 2:6b24c77e16b6 205 Bloccoporta.stato=0; // apro porta
billycorgan123 2:6b24c77e16b6 206 object_update();
billycorgan123 2:6b24c77e16b6 207 }
billycorgan123 2:6b24c77e16b6 208
billycorgan123 2:6b24c77e16b6 209 //SPORTELLO_SCARICO
billycorgan123 2:6b24c77e16b6 210 void sportello_scarico(bool isDoorOpen)
billycorgan123 2:6b24c77e16b6 211 {
billycorgan123 2:6b24c77e16b6 212 if (isDoorOpen) {
billycorgan123 2:6b24c77e16b6 213 while (switch_aperto==0) {
billycorgan123 2:6b24c77e16b6 214 Scarico_caffe.avanti();
billycorgan123 2:6b24c77e16b6 215 object_update();
billycorgan123 2:6b24c77e16b6 216 lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"MOTORE AVANTI ", LEFT_MODE);
billycorgan123 2:6b24c77e16b6 217 }
billycorgan123 2:6b24c77e16b6 218 } else {
billycorgan123 2:6b24c77e16b6 219 while (switch_aperto==0) {
billycorgan123 2:6b24c77e16b6 220 Scarico_caffe.indietro();
billycorgan123 2:6b24c77e16b6 221 object_update();
billycorgan123 2:6b24c77e16b6 222 lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"MOTORE INDIETRO ", LEFT_MODE);
billycorgan123 2:6b24c77e16b6 223 }
billycorgan123 2:6b24c77e16b6 224 }
billycorgan123 2:6b24c77e16b6 225 Scarico_caffe.fermo();
billycorgan123 1:8a54b7de2617 226 object_update();
billycorgan123 1:8a54b7de2617 227 }
billycorgan123 2:6b24c77e16b6 228
billycorgan123 2:6b24c77e16b6 229 //ROAST
billycorgan123 2:6b24c77e16b6 230 void roast (int roast_temp, int roast_time)
billycorgan123 2:6b24c77e16b6 231 {
billycorgan123 2:6b24c77e16b6 232 Timer timer;
billycorgan123 2:6b24c77e16b6 233 timer.start();
billycorgan123 2:6b24c77e16b6 234 int previous_time, actual_time;
billycorgan123 2:6b24c77e16b6 235 previous_time = timer.read();
billycorgan123 2:6b24c77e16b6 236 // ************* PREHEATING *****************
billycorgan123 2:6b24c77e16b6 237 lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"ROAST PREHEATING", LEFT_MODE);
billycorgan123 2:6b24c77e16b6 238 bool pre=1;
billycorgan123 2:6b24c77e16b6 239 Lampadina.stato=1; // accendo lampadina
billycorgan123 2:6b24c77e16b6 240 Ventilatore_turbo.stato=1; // accendo ventilazione raffreddamento
billycorgan123 2:6b24c77e16b6 241 Bloccoporta.stato=1; // chiudo porta
billycorgan123 2:6b24c77e16b6 242 // dovrei verificare se il tappo caffé è chiuso ma per ora non ho switch, aggiungere oggetto switch1
billycorgan123 2:6b24c77e16b6 243 // dovrei verificare se sportello caffé chiuso, aggiungere oggetto switch2
billycorgan123 2:6b24c77e16b6 244
billycorgan123 2:6b24c77e16b6 245 while(Temperatura_forno.read()<roast_temp and pre) {
billycorgan123 2:6b24c77e16b6 246 Resistenza1.stato=1;
billycorgan123 2:6b24c77e16b6 247 Resistenza2.stato=1;
billycorgan123 2:6b24c77e16b6 248 object_update();
billycorgan123 2:6b24c77e16b6 249 actual_time = timer.read();
billycorgan123 2:6b24c77e16b6 250 uint8_t text[30];
billycorgan123 2:6b24c77e16b6 251
billycorgan123 2:6b24c77e16b6 252 // scrivo a video qualcosa ....
billycorgan123 2:6b24c77e16b6 253
billycorgan123 2:6b24c77e16b6 254 //acquisisco la pressione sullo schermo per attivare i vari oggetti
billycorgan123 2:6b24c77e16b6 255 ts.ResetTouchData(&TS_State);
billycorgan123 2:6b24c77e16b6 256 ts.GetState(&TS_State);
billycorgan123 2:6b24c77e16b6 257 int X = TS_State.touchX[0]; //acquisisco la X
billycorgan123 2:6b24c77e16b6 258 int Y = TS_State.touchY[0]; //acquisisco la Y
billycorgan123 2:6b24c77e16b6 259 if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP
billycorgan123 2:6b24c77e16b6 260 stop();
billycorgan123 2:6b24c77e16b6 261 break;
billycorgan123 2:6b24c77e16b6 262 }
billycorgan123 2:6b24c77e16b6 263 }
billycorgan123 2:6b24c77e16b6 264
billycorgan123 2:6b24c77e16b6 265 pre=0;
billycorgan123 2:6b24c77e16b6 266 // ************* ROAST *******************
billycorgan123 2:6b24c77e16b6 267 lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"ROAST ", LEFT_MODE);
billycorgan123 2:6b24c77e16b6 268 Resistenza2.stato=0; // spengo extra resistenza
billycorgan123 2:6b24c77e16b6 269 Girarrosto.stato=1; // faccio partire motore mescolatore
billycorgan123 2:6b24c77e16b6 270 Ventilatore_turbo.stato=1; // faccio partire turbo
billycorgan123 2:6b24c77e16b6 271 object_update();
billycorgan123 2:6b24c77e16b6 272
billycorgan123 2:6b24c77e16b6 273 // aspetto carico caffé
billycorgan123 2:6b24c77e16b6 274 /*
billycorgan123 2:6b24c77e16b6 275 while (switch_carico=aperto)
billycorgan123 2:6b24c77e16b6 276 {
billycorgan123 2:6b24c77e16b6 277 }
billycorgan123 2:6b24c77e16b6 278 */
billycorgan123 2:6b24c77e16b6 279
billycorgan123 2:6b24c77e16b6 280 //se il tempo di roast è finito porto gli output a zero e aggiorno, poi esco dal ciclo
billycorgan123 2:6b24c77e16b6 281 while (roast_time>0) {
billycorgan123 2:6b24c77e16b6 282 actual_time = timer.read();
billycorgan123 2:6b24c77e16b6 283 uint8_t text[30];
billycorgan123 2:6b24c77e16b6 284 //acquisisco la pressione sullo schermo per attivare i vari oggetti
billycorgan123 2:6b24c77e16b6 285 ts.ResetTouchData(&TS_State);
billycorgan123 2:6b24c77e16b6 286 ts.GetState(&TS_State);
billycorgan123 2:6b24c77e16b6 287 int X = TS_State.touchX[0]; //acquisisco la X
billycorgan123 2:6b24c77e16b6 288 int Y = TS_State.touchY[0]; //acquisisco la Y
billycorgan123 2:6b24c77e16b6 289 if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP
billycorgan123 2:6b24c77e16b6 290 // stop();
billycorgan123 2:6b24c77e16b6 291 break;
billycorgan123 2:6b24c77e16b6 292 }
billycorgan123 2:6b24c77e16b6 293 //countdown dal roast_time a zero
billycorgan123 2:6b24c77e16b6 294 if (actual_time-previous_time >=1) {
billycorgan123 2:6b24c77e16b6 295 lcd.SetFont(&Font24);
billycorgan123 2:6b24c77e16b6 296 lcd.SetTextColor(black);
billycorgan123 2:6b24c77e16b6 297 sprintf((char*)text, "%5d", roast_time);
billycorgan123 2:6b24c77e16b6 298 lcd.DisplayStringAt(130,100, (uint8_t *)&text, LEFT_MODE);
billycorgan123 2:6b24c77e16b6 299 previous_time = actual_time;
billycorgan123 2:6b24c77e16b6 300 roast_time--;
billycorgan123 2:6b24c77e16b6 301 // regolo temperatura roast
billycorgan123 2:6b24c77e16b6 302 if (Temperatura_sonda1.read()<roast_temp-5) {
billycorgan123 2:6b24c77e16b6 303 Resistenza1.stato=1;
billycorgan123 2:6b24c77e16b6 304 // aggiorno stato video
billycorgan123 2:6b24c77e16b6 305 }
billycorgan123 2:6b24c77e16b6 306 if (Temperatura_sonda1.read()>roast_temp+5) {
billycorgan123 2:6b24c77e16b6 307 Resistenza1.stato=0;
billycorgan123 2:6b24c77e16b6 308 // aggiorno stato video
billycorgan123 2:6b24c77e16b6 309 }
billycorgan123 2:6b24c77e16b6 310 object_update();
billycorgan123 2:6b24c77e16b6 311 }
billycorgan123 2:6b24c77e16b6 312
billycorgan123 2:6b24c77e16b6 313 // *************** scarico caffè ***********
billycorgan123 2:6b24c77e16b6 314 Resistenza1.stato=0; //spengo forno
billycorgan123 2:6b24c77e16b6 315 Ventilatore2.stato=1; // accendo raffreddamento cassetto
billycorgan123 2:6b24c77e16b6 316 object_update();
billycorgan123 2:6b24c77e16b6 317 wait(2);
billycorgan123 2:6b24c77e16b6 318 sportello_scarico(1); // apro scarico
billycorgan123 2:6b24c77e16b6 319 wait(2);
billycorgan123 2:6b24c77e16b6 320 sportello_scarico(0); // chiudo scarico
billycorgan123 2:6b24c77e16b6 321 // aspetto 1 minuto e spengo raffreddamento caffé
billycorgan123 2:6b24c77e16b6 322 wait(60);
billycorgan123 2:6b24c77e16b6 323 }
billycorgan123 2:6b24c77e16b6 324 // spengo tutto
billycorgan123 2:6b24c77e16b6 325 stop();
billycorgan123 2:6b24c77e16b6 326 }
billycorgan123 2:6b24c77e16b6 327
billycorgan123 2:6b24c77e16b6 328 //OBJECT_UPDATE
billycorgan123 1:8a54b7de2617 329 void object_update()
billycorgan123 2:6b24c77e16b6 330 {
billycorgan123 2:6b24c77e16b6 331 //update delle immagini e dello stato delle uscite
billycorgan123 1:8a54b7de2617 332 //disegno lo stato dei vari oggetti
billycorgan123 1:8a54b7de2617 333 Lampadina.draw_image (&_acLampadina_acceso[0], &_acLampadina_spento[0], Lampadina.stato, 310, 0);
billycorgan123 2:6b24c77e16b6 334 Ventilatore_turbo.draw_image (&_acVentilatore_turbo_acceso[0], &_acVentilatore_turbo_spento[0], Ventilatore_turbo.stato, 310, 60);
billycorgan123 2:6b24c77e16b6 335 Cooling.draw_image (&_acCooling_acceso[0], &_acCooling_spento[0], Cooling.stato, 310, 120);
billycorgan123 1:8a54b7de2617 336 Ventilatore2.draw_image (&_acVentilatore2_acceso[0], &_acVentilatore2_spento[0], Ventilatore2.stato, 310, 180);
billycorgan123 1:8a54b7de2617 337 Bloccoporta.draw_image (&_acBloccoporta_acceso[0], &_acBloccoporta_spento[0], Bloccoporta.stato, 360, 0);
billycorgan123 1:8a54b7de2617 338 Girarrosto.draw_image (&_acGirarrosto_acceso[0], &_acGirarrosto_spento[0], Girarrosto.stato, 360, 60);
billycorgan123 1:8a54b7de2617 339 Resistenza1.draw_image (&_acResistenza1_acceso[0], &_acResistenza1_spento[0], Resistenza1.stato, 360, 120);
billycorgan123 1:8a54b7de2617 340 Resistenza2.draw_image (&_acResistenza2_acceso[0], &_acResistenza2_spento[0], Resistenza2.stato, 360, 180);
billycorgan123 1:8a54b7de2617 341 //update uscita 74HC595
billycorgan123 2:6b24c77e16b6 342 bool array[16]= {Bloccoporta.stato, Girarrosto.stato, Lampadina.stato, Ventilatore_turbo.stato, Resistenza1.stato, Resistenza2.stato, Cooling.stato, Ventilatore2.stato, Scarico_caffe.DCmotorA1, Scarico_caffe.DCmotorA2, 0,0,0,0,0,0};
billycorgan123 1:8a54b7de2617 343 for (int i=0; i<16; i++) scheda_8relay.setPin(i,array[i]);
billycorgan123 1:8a54b7de2617 344 scheda_8relay.write();
billycorgan123 2:6b24c77e16b6 345 //update sensori ingresso
billycorgan123 2:6b24c77e16b6 346 sensori=Sensore.Read();
billycorgan123 2:6b24c77e16b6 347 /*
billycorgan123 2:6b24c77e16b6 348 for (int i=7; i>=0; i--) { //D7,D6,.....,D1,D0
billycorgan123 2:6b24c77e16b6 349 sprintf((char*)text, "%d", sensori[0+i]);
billycorgan123 2:6b24c77e16b6 350 lcd.DisplayStringAt(10,LINE(i), (uint8_t *)&text, LEFT_MODE);
billycorgan123 2:6b24c77e16b6 351 printf(" %d", sensori[0+i]);
billycorgan123 2:6b24c77e16b6 352 }*/
billycorgan123 1:8a54b7de2617 353 }