versione al 6/5/18
Dependencies: BSP_DISCO_F469NI LCD_DISCO_F469NI Shifter2 TS_DISCO_F469NI max31865 mbed
main.cpp@0:c051cea27cbf, 2018-05-06 (annotated)
- Committer:
- billycorgan123
- Date:
- Sun May 06 14:32:42 2018 +0000
- Revision:
- 0:c051cea27cbf
versione aggiornata
Who changed what in which revision?
User | Revision | Line number | New 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 | } |