versione al 6/5/18

Dependencies:   BSP_DISCO_F469NI LCD_DISCO_F469NI Shifter2 TS_DISCO_F469NI max31865 mbed

Committer:
billycorgan123
Date:
Sun May 06 14:32:42 2018 +0000
Revision:
0:c051cea27cbf
versione aggiornata

Who changed what in which revision?

UserRevisionLine numberNew contents of line
billycorgan123 0:c051cea27cbf 1 #include "mbed.h"
billycorgan123 0:c051cea27cbf 2 #include "TS_DISCO_F469NI.h"
billycorgan123 0:c051cea27cbf 3 #include "LCD_DISCO_F469NI.h"
billycorgan123 0:c051cea27cbf 4 #include "MAX31865.h"
billycorgan123 0:c051cea27cbf 5
billycorgan123 0:c051cea27cbf 6 #include "AClean.c"
billycorgan123 0:c051cea27cbf 7 #include "APower.c"
billycorgan123 0:c051cea27cbf 8 #include "ARoast.c"
billycorgan123 0:c051cea27cbf 9 #include "APulsanti.c"
billycorgan123 0:c051cea27cbf 10 #include "Porta_aperto.c"
billycorgan123 0:c051cea27cbf 11 #include "Porta_chiuso.c"
billycorgan123 0:c051cea27cbf 12 #include "Giracaffe_acceso.c"
billycorgan123 0:c051cea27cbf 13 #include "Giracaffe_spento.c"
billycorgan123 0:c051cea27cbf 14 #include "Lampadina_acceso.c"
billycorgan123 0:c051cea27cbf 15 #include "Lampadina_spento.c"
billycorgan123 0:c051cea27cbf 16 #include "VTangenziale_acceso.c"
billycorgan123 0:c051cea27cbf 17 #include "VTangenziale_spento.c"
billycorgan123 0:c051cea27cbf 18 #include "VRadiale_acceso.c"
billycorgan123 0:c051cea27cbf 19 #include "VRadiale_spento.c"
billycorgan123 0:c051cea27cbf 20 #include "Resistenza1_acceso.c"
billycorgan123 0:c051cea27cbf 21 #include "Resistenza1_spento.c"
billycorgan123 0:c051cea27cbf 22 #include "Resistenza2_acceso.c"
billycorgan123 0:c051cea27cbf 23 #include "Resistenza2_spento.c"
billycorgan123 0:c051cea27cbf 24 #include "Ventola_acceso.c"
billycorgan123 0:c051cea27cbf 25 #include "Ventola_spento.c"
billycorgan123 0:c051cea27cbf 26
billycorgan123 0:c051cea27cbf 27 #include "functions.h"
billycorgan123 0:c051cea27cbf 28 #include "colors.c"
billycorgan123 0:c051cea27cbf 29 #include "Output.h"
billycorgan123 0:c051cea27cbf 30
billycorgan123 0:c051cea27cbf 31 extern void clean(int, float, float);
billycorgan123 0:c051cea27cbf 32 extern void roast(int, int);
billycorgan123 0:c051cea27cbf 33 extern void stop();
billycorgan123 0:c051cea27cbf 34
billycorgan123 0:c051cea27cbf 35 extern void temperature_update();
billycorgan123 0:c051cea27cbf 36
billycorgan123 0:c051cea27cbf 37 bool stato_porta=0; //da cancellare, solo per prova porta
billycorgan123 0:c051cea27cbf 38 int tempo =1200;
billycorgan123 0:c051cea27cbf 39 int temperatura = 250;
billycorgan123 0:c051cea27cbf 40
billycorgan123 0:c051cea27cbf 41 int main()
billycorgan123 0:c051cea27cbf 42 {
billycorgan123 0:c051cea27cbf 43 setup_griglia(); //setup, parte grafica
billycorgan123 0:c051cea27cbf 44 getData(); //acquisisce lo stato degli switch
billycorgan123 0:c051cea27cbf 45 temperature_update(); //acquisisce le temperature
billycorgan123 0:c051cea27cbf 46
billycorgan123 0:c051cea27cbf 47 while(1) {
billycorgan123 0:c051cea27cbf 48 //acquisisco la pressione sullo schermo per attivare i vari oggetti
billycorgan123 0:c051cea27cbf 49 ts.GetState(&TS_State);
billycorgan123 0:c051cea27cbf 50 X = TS_State.touchX[0]; //acquisisco la X
billycorgan123 0:c051cea27cbf 51 Y = TS_State.touchY[0]; //acquisisco la Y
billycorgan123 0:c051cea27cbf 52
billycorgan123 0:c051cea27cbf 53 //------------------------------------------------------------------------------
billycorgan123 0:c051cea27cbf 54 ///solo per prova
billycorgan123 0:c051cea27cbf 55 if ((TS_State.touchDetected) && (X>=230 && X<300 && Y>=20 && Y<90)) {
billycorgan123 0:c051cea27cbf 56 Lampadina.stato=!Lampadina.stato;
billycorgan123 0:c051cea27cbf 57 object_update();
billycorgan123 0:c051cea27cbf 58 }
billycorgan123 0:c051cea27cbf 59 if ((TS_State.touchDetected) && (X>=300 && X<370 && Y>=20 && Y<90)) {
billycorgan123 0:c051cea27cbf 60 Resistenza1.stato=!Resistenza1.stato;
billycorgan123 0:c051cea27cbf 61 object_update();
billycorgan123 0:c051cea27cbf 62 }
billycorgan123 0:c051cea27cbf 63 if ((TS_State.touchDetected) && (X>=370 && X<440 && Y>=20 && Y<90)) {
billycorgan123 0:c051cea27cbf 64 Resistenza2.stato=!Resistenza2.stato;
billycorgan123 0:c051cea27cbf 65 object_update();
billycorgan123 0:c051cea27cbf 66 }
billycorgan123 0:c051cea27cbf 67 if ((TS_State.touchDetected) && (X>=440 && X<510 && Y>=20 && Y<90)) {
billycorgan123 0:c051cea27cbf 68 Giracaffe.stato=!Giracaffe.stato;
billycorgan123 0:c051cea27cbf 69 object_update();
billycorgan123 0:c051cea27cbf 70 }
billycorgan123 0:c051cea27cbf 71 if ((TS_State.touchDetected) && (X>=230 && X<300 && Y>=90 && Y<160)) {
billycorgan123 0:c051cea27cbf 72 stato_porta=!stato_porta;
billycorgan123 0:c051cea27cbf 73 (stato_porta==1) ? chiudo_porta() : apro_porta();
billycorgan123 0:c051cea27cbf 74 }
billycorgan123 0:c051cea27cbf 75 if ((TS_State.touchDetected) && (X>=300 && X<370 && Y>=90 && Y<160)) {
billycorgan123 0:c051cea27cbf 76 VTangenziale.stato=!VTangenziale.stato;
billycorgan123 0:c051cea27cbf 77 object_update();
billycorgan123 0:c051cea27cbf 78 }
billycorgan123 0:c051cea27cbf 79 if ((TS_State.touchDetected) && (X>=370 && X<440 && Y>=90 && Y<160)) {
billycorgan123 0:c051cea27cbf 80 VRadiale.stato=!VRadiale.stato;
billycorgan123 0:c051cea27cbf 81 object_update();
billycorgan123 0:c051cea27cbf 82 }
billycorgan123 0:c051cea27cbf 83 if ((TS_State.touchDetected) && (X>=440 && X<510 && Y>=90 && Y<160)) {
billycorgan123 0:c051cea27cbf 84 Ventola.stato=!Ventola.stato;
billycorgan123 0:c051cea27cbf 85 object_update();
billycorgan123 0:c051cea27cbf 86 }
billycorgan123 0:c051cea27cbf 87 if ((TS_State.touchDetected) && (X>=620 && X<690 && Y>=20 && Y<90)) {
billycorgan123 0:c051cea27cbf 88 Apro_scarico();
billycorgan123 0:c051cea27cbf 89 }
billycorgan123 0:c051cea27cbf 90 if ((TS_State.touchDetected) && (X>=620 && X<690 && Y>=100 && Y<170)) {
billycorgan123 0:c051cea27cbf 91 Chiudo_scarico();
billycorgan123 0:c051cea27cbf 92 }
billycorgan123 0:c051cea27cbf 93 //------------------------------------------------------------------------------
billycorgan123 0:c051cea27cbf 94
billycorgan123 0:c051cea27cbf 95 ////////////////////////////////////////////////////////////////////////
billycorgan123 0:c051cea27cbf 96 //if ROAST pressed
billycorgan123 0:c051cea27cbf 97 if ((TS_State.touchDetected) && (X>=20 && X<140 && Y>=290 && Y<410)) {
billycorgan123 0:c051cea27cbf 98 roast(temperatura,tempo);
billycorgan123 0:c051cea27cbf 99 }
billycorgan123 0:c051cea27cbf 100 //if CLEAN pressed
billycorgan123 0:c051cea27cbf 101 if ((TS_State.touchDetected) && (X>=20 && X<140 && Y>=165 && Y<285)) {
billycorgan123 0:c051cea27cbf 102 clean(12, 430.0, 460.0);
billycorgan123 0:c051cea27cbf 103 }
billycorgan123 0:c051cea27cbf 104 //if STOP pressed
billycorgan123 0:c051cea27cbf 105 if ((TS_State.touchDetected) && (X>=20 && X<140 && Y>=20 && Y<140)) {
billycorgan123 0:c051cea27cbf 106 stop();
billycorgan123 0:c051cea27cbf 107 }
billycorgan123 0:c051cea27cbf 108 //if TEMPERATURA UPPER pressed
billycorgan123 0:c051cea27cbf 109 if ((TS_State.touchDetected) && (X>=200 && X<260 && Y>=270 && Y<330)) {
billycorgan123 0:c051cea27cbf 110 temperatura = temperatura+5;
billycorgan123 0:c051cea27cbf 111 if (temperatura >300) temperatura =300;
billycorgan123 0:c051cea27cbf 112 }
billycorgan123 0:c051cea27cbf 113 //if TEMPERATURA LOWER pressed
billycorgan123 0:c051cea27cbf 114 if ((TS_State.touchDetected) && (X>=200 && X<260 && Y>=350 && Y<410)) {
billycorgan123 0:c051cea27cbf 115 temperatura = temperatura-5;
billycorgan123 0:c051cea27cbf 116 if (temperatura <150) temperatura =150;
billycorgan123 0:c051cea27cbf 117 }
billycorgan123 0:c051cea27cbf 118 //if TEMPO UPPER pressed
billycorgan123 0:c051cea27cbf 119 if ((TS_State.touchDetected) && (X>=325 && X<385 && Y>=270 && Y<330)) {
billycorgan123 0:c051cea27cbf 120 tempo = tempo+15;
billycorgan123 0:c051cea27cbf 121 if (tempo >3000) tempo =3000;
billycorgan123 0:c051cea27cbf 122 }
billycorgan123 0:c051cea27cbf 123 //if TEMPO LOWER pressed
billycorgan123 0:c051cea27cbf 124 if ((TS_State.touchDetected) && (X>=325 && X<385 && Y>=350 && Y<410)) {
billycorgan123 0:c051cea27cbf 125 tempo = tempo-15;
billycorgan123 0:c051cea27cbf 126 if (tempo <120) tempo =120;
billycorgan123 0:c051cea27cbf 127 }
billycorgan123 0:c051cea27cbf 128 //------------------------------------------------------------------------------
billycorgan123 0:c051cea27cbf 129 //scrivo minuti e secondi
billycorgan123 0:c051cea27cbf 130 int minuti = tempo/60;
billycorgan123 0:c051cea27cbf 131 int secondi = tempo%60;
billycorgan123 0:c051cea27cbf 132 sprintf((char*)text, "%2d", minuti);
billycorgan123 0:c051cea27cbf 133 lcd.DisplayStringAt(295,LINE(8), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:c051cea27cbf 134 sprintf((char*)text, "%2d", secondi);
billycorgan123 0:c051cea27cbf 135 lcd.DisplayStringAt(350,LINE(8), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:c051cea27cbf 136 //scrivo temperatura
billycorgan123 0:c051cea27cbf 137 sprintf((char*)text, "%3d", temperatura);
billycorgan123 0:c051cea27cbf 138 lcd.DisplayStringAt(295,LINE(10), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:c051cea27cbf 139 //------------------------------------------------------------------------------
billycorgan123 0:c051cea27cbf 140 object_update();
billycorgan123 0:c051cea27cbf 141 getData();
billycorgan123 0:c051cea27cbf 142 temperature_update();
billycorgan123 0:c051cea27cbf 143
billycorgan123 0:c051cea27cbf 144 wait(0.1);
billycorgan123 0:c051cea27cbf 145 }//close while(1)
billycorgan123 0:c051cea27cbf 146 }//close main
billycorgan123 0:c051cea27cbf 147
billycorgan123 0:c051cea27cbf 148 //CLEAN
billycorgan123 0:c051cea27cbf 149 void clean(int clean_time, float setpointLOW, float setpointHIGH)
billycorgan123 0:c051cea27cbf 150 {
billycorgan123 0:c051cea27cbf 151 //non procedo fino a quando la porta non è chiusa, lo scarico deve essere chiuso e anche il tappo del caffè
billycorgan123 0:c051cea27cbf 152 //per precauzione forzo le resistenze a essere spente
billycorgan123 0:c051cea27cbf 153 do {
billycorgan123 0:c051cea27cbf 154 Resistenza1_spento();
billycorgan123 0:c051cea27cbf 155 Resistenza2_spento();
billycorgan123 0:c051cea27cbf 156 } while (!chiudo_porta());
billycorgan123 0:c051cea27cbf 157
billycorgan123 0:c051cea27cbf 158 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"CLEAN ATTIVO ", LEFT_MODE);
billycorgan123 0:c051cea27cbf 159 Timer timer;
billycorgan123 0:c051cea27cbf 160 timer.start();
billycorgan123 0:c051cea27cbf 161 int previous_time, actual_time;
billycorgan123 0:c051cea27cbf 162 previous_time = timer.read();
billycorgan123 0:c051cea27cbf 163 Lampadina_acceso();
billycorgan123 0:c051cea27cbf 164 VRadiale_acceso();
billycorgan123 0:c051cea27cbf 165 while(1) {
billycorgan123 0:c051cea27cbf 166 actual_time = timer.read();
billycorgan123 0:c051cea27cbf 167 uint8_t text[30];
billycorgan123 0:c051cea27cbf 168 //acquisisco la pressione sullo schermo per vedere se devo stoppare il ciclo mentre faccio il clean
billycorgan123 0:c051cea27cbf 169 ts.GetState(&TS_State);
billycorgan123 0:c051cea27cbf 170 int X = TS_State.touchX[0];
billycorgan123 0:c051cea27cbf 171 int Y = TS_State.touchY[0];
billycorgan123 0:c051cea27cbf 172 if ((TS_State.touchDetected) && (X>=20 && X<140 && Y>=235 && Y<335)) { //STOP
billycorgan123 0:c051cea27cbf 173 stop();
billycorgan123 0:c051cea27cbf 174 break;
billycorgan123 0:c051cea27cbf 175 }
billycorgan123 0:c051cea27cbf 176 //countdown dal clean_time a zero
billycorgan123 0:c051cea27cbf 177 if (actual_time-previous_time >=1) {
billycorgan123 0:c051cea27cbf 178 lcd.SetTextColor(black);
billycorgan123 0:c051cea27cbf 179 sprintf((char*)text, "%5d", clean_time);
billycorgan123 0:c051cea27cbf 180 lcd.DisplayStringAt(210,LINE(18), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:c051cea27cbf 181 previous_time = actual_time;
billycorgan123 0:c051cea27cbf 182 clean_time--;
billycorgan123 0:c051cea27cbf 183 }
billycorgan123 0:c051cea27cbf 184 //se il tempo di clean è finito avvio la procedura di stop
billycorgan123 0:c051cea27cbf 185 if (clean_time<0) {
billycorgan123 0:c051cea27cbf 186 stop();
billycorgan123 0:c051cea27cbf 187 break;
billycorgan123 0:c051cea27cbf 188 }
billycorgan123 0:c051cea27cbf 189 }
billycorgan123 0:c051cea27cbf 190 }
billycorgan123 0:c051cea27cbf 191
billycorgan123 0:c051cea27cbf 192 //STOP procedura di stop
billycorgan123 0:c051cea27cbf 193 void stop()
billycorgan123 0:c051cea27cbf 194 {
billycorgan123 0:c051cea27cbf 195 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"STOP ", LEFT_MODE);
billycorgan123 0:c051cea27cbf 196 lcd.DisplayStringAt(260,LINE(18), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:c051cea27cbf 197 //spengo le resistenze
billycorgan123 0:c051cea27cbf 198 Resistenza1_spento();
billycorgan123 0:c051cea27cbf 199 Resistenza2_spento();
billycorgan123 0:c051cea27cbf 200
billycorgan123 0:c051cea27cbf 201 //tengo fino a quando la temperatura non è sotto i 150 gradi
billycorgan123 0:c051cea27cbf 202 //tengo acceso per 5 secondi le ventole, lampade e giracaffe
billycorgan123 0:c051cea27cbf 203 VRadiale_acceso();
billycorgan123 0:c051cea27cbf 204 VTangenziale_acceso();
billycorgan123 0:c051cea27cbf 205 Ventola_acceso();
billycorgan123 0:c051cea27cbf 206 Lampadina_acceso();
billycorgan123 0:c051cea27cbf 207 Giracaffe_acceso();
billycorgan123 0:c051cea27cbf 208 wait (5.0);
billycorgan123 0:c051cea27cbf 209
billycorgan123 0:c051cea27cbf 210 //spengo tutto
billycorgan123 0:c051cea27cbf 211 VRadiale_spento();
billycorgan123 0:c051cea27cbf 212 VTangenziale_spento();
billycorgan123 0:c051cea27cbf 213 Ventola_spento();
billycorgan123 0:c051cea27cbf 214 Lampadina_spento();
billycorgan123 0:c051cea27cbf 215 Giracaffe_spento();
billycorgan123 0:c051cea27cbf 216 //scarico caffe
billycorgan123 0:c051cea27cbf 217
billycorgan123 0:c051cea27cbf 218 //apertura porta
billycorgan123 0:c051cea27cbf 219 apro_porta();
billycorgan123 0:c051cea27cbf 220 }
billycorgan123 0:c051cea27cbf 221
billycorgan123 0:c051cea27cbf 222 //ROAST
billycorgan123 0:c051cea27cbf 223 void roast (int roast_temp, int roast_time)
billycorgan123 0:c051cea27cbf 224 {
billycorgan123 0:c051cea27cbf 225
billycorgan123 0:c051cea27cbf 226 }