roasting

Dependencies:   BSP_DISCO_F469NI LCD_DISCO_F469NI Shifter2 TS_DISCO_F469NI max31865 mbed

Committer:
billycorgan123
Date:
Wed May 23 09:17:17 2018 +0000
Revision:
0:f2c01a50c329
roasting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
billycorgan123 0:f2c01a50c329 1 #ifndef FUCTIONS_H
billycorgan123 0:f2c01a50c329 2 #define FUNCTIONS_H
billycorgan123 0:f2c01a50c329 3
billycorgan123 0:f2c01a50c329 4 #include "colors.c"
billycorgan123 0:f2c01a50c329 5 #include "mbed.h"
billycorgan123 0:f2c01a50c329 6 #include "Output.h"
billycorgan123 0:f2c01a50c329 7 #include "Shifter.h"
billycorgan123 0:f2c01a50c329 8 #include "LCD_DISCO_F469NI.h"
billycorgan123 0:f2c01a50c329 9
billycorgan123 0:f2c01a50c329 10 LCD_DISCO_F469NI lcd;
billycorgan123 0:f2c01a50c329 11 TS_DISCO_F469NI ts;
billycorgan123 0:f2c01a50c329 12 uint16_t X, Y;
billycorgan123 0:f2c01a50c329 13 uint8_t status;
billycorgan123 0:f2c01a50c329 14 uint8_t cleared = 0;
billycorgan123 0:f2c01a50c329 15 uint8_t prev_nb_touches = 0;
billycorgan123 0:f2c01a50c329 16 uint8_t text[30];
billycorgan123 0:f2c01a50c329 17
billycorgan123 0:f2c01a50c329 18 TS_StateTypeDef TS_State;
billycorgan123 0:f2c01a50c329 19
billycorgan123 0:f2c01a50c329 20 Serial pc(SERIAL_TX, SERIAL_RX);
billycorgan123 0:f2c01a50c329 21 //MAX31865_RTD( ptd_type type,PinName mosi, PinName miso, PinName sclk, PinName nss);
billycorgan123 0:f2c01a50c329 22 MAX31865_RTD PT1(MAX31865_RTD::RTD_PT100, D11, D12, D13, A0);
billycorgan123 0:f2c01a50c329 23 MAX31865_RTD PT2(MAX31865_RTD::RTD_PT100, D11, D12, D13, A1);
billycorgan123 0:f2c01a50c329 24 MAX31865_RTD PT3(MAX31865_RTD::RTD_PT100, D11, D12, D13, A2);
billycorgan123 0:f2c01a50c329 25
billycorgan123 0:f2c01a50c329 26 int temp_safe=150;
billycorgan123 0:f2c01a50c329 27 float setpointLOW = 430;
billycorgan123 0:f2c01a50c329 28 float setpointHIGH = 450;
billycorgan123 0:f2c01a50c329 29 int clean_time=7200;
billycorgan123 0:f2c01a50c329 30 int tempo =1200;
billycorgan123 0:f2c01a50c329 31 int temperatura_roast = 250;
billycorgan123 0:f2c01a50c329 32
billycorgan123 0:f2c01a50c329 33 /// dichiarazione variabili ////////////////////////////////////////////////////
billycorgan123 0:f2c01a50c329 34 //per i sensori
billycorgan123 0:f2c01a50c329 35 static bool myDataIn[8] = {1,0,1,0,1,0,1,0};
billycorgan123 0:f2c01a50c329 36 //myDataIn[0] tappo caffè chiuso;
billycorgan123 0:f2c01a50c329 37 //myDataIn[1] sensore porta chiusa;
billycorgan123 0:f2c01a50c329 38 //myDataIn[2] finecorsa sarico aperto;
billycorgan123 0:f2c01a50c329 39 //myDataIn[3] finecorsa scarico chiuso;
billycorgan123 0:f2c01a50c329 40 //myDataIn[4]; //da dare un nome
billycorgan123 0:f2c01a50c329 41 //myDataIn[5]; //da dare un nome
billycorgan123 0:f2c01a50c329 42 //myDataIn[6]; //da dare un nome
billycorgan123 0:f2c01a50c329 43 //myDataIn[7]; //da dare un nome
billycorgan123 0:f2c01a50c329 44
billycorgan123 0:f2c01a50c329 45 //per i relay
billycorgan123 0:f2c01a50c329 46 Shifter scheda_8relay; //!! pinout defined in library
billycorgan123 0:f2c01a50c329 47 Output Bloccoporta; //
billycorgan123 0:f2c01a50c329 48 Output Giracaffe; // palette agita caffé
billycorgan123 0:f2c01a50c329 49 Output Lampadina; // Lampadina
billycorgan123 0:f2c01a50c329 50 Output VTangenziale; // 1
billycorgan123 0:f2c01a50c329 51 Output VRadiale; // 2
billycorgan123 0:f2c01a50c329 52 Output Scarico_caffe; // motore scarico caffé
billycorgan123 0:f2c01a50c329 53 Output Resistenza1; //
billycorgan123 0:f2c01a50c329 54 Output Resistenza2; //
billycorgan123 0:f2c01a50c329 55 Output Ventola; // cooling
billycorgan123 0:f2c01a50c329 56
billycorgan123 0:f2c01a50c329 57 bool Activate_Door; //sul SSR per comandare il bloccoporta
billycorgan123 0:f2c01a50c329 58 enum {STOP, CLEAN, ROAST, PULSANTI, CLEAN_ATTIVO, ROAST_PRE, ROAST_ACTIVE};
billycorgan123 0:f2c01a50c329 59 /// funzioni ///////////////////////////////////////////////////////////////////
billycorgan123 0:f2c01a50c329 60 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 61 void disegna_pulsanti(int pulsante)
billycorgan123 0:f2c01a50c329 62 {
billycorgan123 0:f2c01a50c329 63 int riga, colonna, contatore=0;
billycorgan123 0:f2c01a50c329 64 switch (pulsante) {
billycorgan123 0:f2c01a50c329 65 case 0: //STOP
billycorgan123 0:f2c01a50c329 66 contatore=0;
billycorgan123 0:f2c01a50c329 67 for (riga=0; riga<120; riga++) {
billycorgan123 0:f2c01a50c329 68 for ( colonna=0; colonna<120; colonna++) {
billycorgan123 0:f2c01a50c329 69 lcd.DrawPixel (20+colonna, 20+ riga, _acAPower[contatore]);
billycorgan123 0:f2c01a50c329 70 contatore++;
billycorgan123 0:f2c01a50c329 71 }
billycorgan123 0:f2c01a50c329 72 colonna=0;
billycorgan123 0:f2c01a50c329 73 }
billycorgan123 0:f2c01a50c329 74 //lcd.DrawRect (20, 20, 120, 120);
billycorgan123 0:f2c01a50c329 75 break;
billycorgan123 0:f2c01a50c329 76 case 1: //CLEAN
billycorgan123 0:f2c01a50c329 77 contatore=0;
billycorgan123 0:f2c01a50c329 78 for (riga=0; riga<120; riga++) {
billycorgan123 0:f2c01a50c329 79 for ( colonna=0; colonna<120; colonna++) {
billycorgan123 0:f2c01a50c329 80 lcd.DrawPixel (20+colonna, 165+ riga, _acAClean_0[contatore]);
billycorgan123 0:f2c01a50c329 81 contatore++;
billycorgan123 0:f2c01a50c329 82 }
billycorgan123 0:f2c01a50c329 83 colonna=0;
billycorgan123 0:f2c01a50c329 84 }
billycorgan123 0:f2c01a50c329 85 //lcd.DrawRect (20, 165, 120, 120);
billycorgan123 0:f2c01a50c329 86 break;
billycorgan123 0:f2c01a50c329 87 case 2: //ROAST
billycorgan123 0:f2c01a50c329 88 contatore=0;
billycorgan123 0:f2c01a50c329 89 for (riga=0; riga<120; riga++) {
billycorgan123 0:f2c01a50c329 90 for ( colonna=0; colonna<120; colonna++) {
billycorgan123 0:f2c01a50c329 91 lcd.DrawPixel (20+colonna, 290+ riga, _acARoast_0[contatore]);
billycorgan123 0:f2c01a50c329 92 contatore++;
billycorgan123 0:f2c01a50c329 93 }
billycorgan123 0:f2c01a50c329 94 colonna=0;
billycorgan123 0:f2c01a50c329 95 }
billycorgan123 0:f2c01a50c329 96 //lcd.DrawRect (20, 290, 120, 120);
billycorgan123 0:f2c01a50c329 97 break;
billycorgan123 0:f2c01a50c329 98 case 3: //pulsanti regolazione tempo e temperatura
billycorgan123 0:f2c01a50c329 99 for (riga=0; riga<140; riga++) {
billycorgan123 0:f2c01a50c329 100 for ( colonna=0; colonna<200; colonna++) {
billycorgan123 0:f2c01a50c329 101 lcd.DrawPixel (180+colonna, 270+ riga, _acAPulsanti[contatore]);
billycorgan123 0:f2c01a50c329 102 contatore++;
billycorgan123 0:f2c01a50c329 103 }
billycorgan123 0:f2c01a50c329 104 colonna=0;
billycorgan123 0:f2c01a50c329 105 }
billycorgan123 0:f2c01a50c329 106 break;
billycorgan123 0:f2c01a50c329 107 case 4: //CLEAN ATTIVO
billycorgan123 0:f2c01a50c329 108 contatore=0;
billycorgan123 0:f2c01a50c329 109 for (riga=0; riga<120; riga++) {
billycorgan123 0:f2c01a50c329 110 for ( colonna=0; colonna<120; colonna++) {
billycorgan123 0:f2c01a50c329 111 lcd.DrawPixel (20+colonna, 165+ riga, _acAClean_1[contatore]);
billycorgan123 0:f2c01a50c329 112 contatore++;
billycorgan123 0:f2c01a50c329 113 }
billycorgan123 0:f2c01a50c329 114 colonna=0;
billycorgan123 0:f2c01a50c329 115 }
billycorgan123 0:f2c01a50c329 116 //lcd.DrawRect (20, 165, 120, 120);
billycorgan123 0:f2c01a50c329 117 break;
billycorgan123 0:f2c01a50c329 118 case 5: //ROAST PRE
billycorgan123 0:f2c01a50c329 119 contatore=0;
billycorgan123 0:f2c01a50c329 120 for (riga=0; riga<120; riga++) {
billycorgan123 0:f2c01a50c329 121 for ( colonna=0; colonna<120; colonna++) {
billycorgan123 0:f2c01a50c329 122 lcd.DrawPixel (20+colonna, 290+ riga, _acARoast_1[contatore]);
billycorgan123 0:f2c01a50c329 123 contatore++;
billycorgan123 0:f2c01a50c329 124 }
billycorgan123 0:f2c01a50c329 125 colonna=0;
billycorgan123 0:f2c01a50c329 126 }
billycorgan123 0:f2c01a50c329 127 //lcd.DrawRect (20, 290, 120, 120);
billycorgan123 0:f2c01a50c329 128 break;
billycorgan123 0:f2c01a50c329 129 case 6: //ROAST ACTIVE
billycorgan123 0:f2c01a50c329 130 contatore=0;
billycorgan123 0:f2c01a50c329 131 for (riga=0; riga<120; riga++) {
billycorgan123 0:f2c01a50c329 132 for ( colonna=0; colonna<120; colonna++) {
billycorgan123 0:f2c01a50c329 133 lcd.DrawPixel (20+colonna, 290+ riga, _acARoast_2[contatore]);
billycorgan123 0:f2c01a50c329 134 contatore++;
billycorgan123 0:f2c01a50c329 135 }
billycorgan123 0:f2c01a50c329 136 colonna=0;
billycorgan123 0:f2c01a50c329 137 }
billycorgan123 0:f2c01a50c329 138 //lcd.DrawRect (20, 290, 120, 120);
billycorgan123 0:f2c01a50c329 139 break;
billycorgan123 0:f2c01a50c329 140 }
billycorgan123 0:f2c01a50c329 141 }
billycorgan123 0:f2c01a50c329 142
billycorgan123 0:f2c01a50c329 143 bool setup_griglia()
billycorgan123 0:f2c01a50c329 144 {
billycorgan123 0:f2c01a50c329 145 lcd.Clear(light_sky_blue);
billycorgan123 0:f2c01a50c329 146 lcd.SetBackColor(light_sky_blue);
billycorgan123 0:f2c01a50c329 147 lcd.SetFont(&Font24);
billycorgan123 0:f2c01a50c329 148 lcd.SetTextColor(black);
billycorgan123 0:f2c01a50c329 149 lcd.DisplayStringAt(670, LINE(0), (uint8_t *)"Ver 1.0", LEFT_MODE);
billycorgan123 0:f2c01a50c329 150 // disegno bottoni
billycorgan123 0:f2c01a50c329 151 disegna_pulsanti(STOP);
billycorgan123 0:f2c01a50c329 152 disegna_pulsanti(CLEAN);
billycorgan123 0:f2c01a50c329 153 disegna_pulsanti(ROAST);
billycorgan123 0:f2c01a50c329 154 disegna_pulsanti(PULSANTI);
billycorgan123 0:f2c01a50c329 155
billycorgan123 0:f2c01a50c329 156 //lcd.DrawRect (180, 270, 200, 140);
billycorgan123 0:f2c01a50c329 157 //lcd.DrawRect (220, 270, 60, 60);
billycorgan123 0:f2c01a50c329 158 //lcd.DrawRect (325, 270, 60, 60);
billycorgan123 0:f2c01a50c329 159 //lcd.DrawRect (220, 350, 60, 60);
billycorgan123 0:f2c01a50c329 160 //lcd.DrawRect (325, 350, 60, 60);
billycorgan123 0:f2c01a50c329 161
billycorgan123 0:f2c01a50c329 162 lcd.DisplayStringAt(200, LINE( 8), (uint8_t *)"Time:", LEFT_MODE);
billycorgan123 0:f2c01a50c329 163 lcd.DisplayStringAt(330, LINE(8), (uint8_t *)"'", LEFT_MODE);
billycorgan123 0:f2c01a50c329 164 lcd.DisplayStringAt(385, LINE(8), (uint8_t *)"''", LEFT_MODE);
billycorgan123 0:f2c01a50c329 165 lcd.DisplayStringAt(200, LINE( 10), (uint8_t *)"Temp:", LEFT_MODE);
billycorgan123 0:f2c01a50c329 166 lcd.DrawCircle(355, LINE(10)+3, 4);
billycorgan123 0:f2c01a50c329 167 lcd.DisplayStringAt(360, LINE( 10), (uint8_t *)"C", LEFT_MODE);
billycorgan123 0:f2c01a50c329 168 lcd.DisplayStringAt(620, LINE( 9), (uint8_t *)"T1:", LEFT_MODE);
billycorgan123 0:f2c01a50c329 169 lcd.DisplayStringAt(620, LINE(11), (uint8_t *)"T2:", LEFT_MODE);
billycorgan123 0:f2c01a50c329 170 lcd.DisplayStringAt(620, LINE(13), (uint8_t *)"T3:", LEFT_MODE);
billycorgan123 0:f2c01a50c329 171
billycorgan123 0:f2c01a50c329 172 //per prova, da togliere dopo
billycorgan123 0:f2c01a50c329 173 lcd.SetTextColor(red);
billycorgan123 0:f2c01a50c329 174 lcd.FillRect (620, 20, 70, 70);
billycorgan123 0:f2c01a50c329 175 lcd.SetTextColor(green);
billycorgan123 0:f2c01a50c329 176 lcd.FillRect (620, 100, 70, 70);
billycorgan123 0:f2c01a50c329 177 lcd.SetTextColor(black);
billycorgan123 0:f2c01a50c329 178 //fino qui
billycorgan123 0:f2c01a50c329 179
billycorgan123 0:f2c01a50c329 180 PT1.configure( true, true, false, false, MAX31865_FAULT_DETECTION_NONE,
billycorgan123 0:f2c01a50c329 181 true, true, 0x0000, 0x7fff );
billycorgan123 0:f2c01a50c329 182 PT2.configure( true, true, false, false, MAX31865_FAULT_DETECTION_NONE,
billycorgan123 0:f2c01a50c329 183 true, true, 0x0000, 0x7fff );
billycorgan123 0:f2c01a50c329 184 PT3.configure( true, true, false, false, MAX31865_FAULT_DETECTION_NONE,
billycorgan123 0:f2c01a50c329 185 true, true, 0x0000, 0x7fff );
billycorgan123 0:f2c01a50c329 186
billycorgan123 0:f2c01a50c329 187 return 0;
billycorgan123 0:f2c01a50c329 188 }
billycorgan123 0:f2c01a50c329 189 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 190 bool * getData()
billycorgan123 0:f2c01a50c329 191 {
billycorgan123 0:f2c01a50c329 192 //define where your pins are
billycorgan123 0:f2c01a50c329 193 DigitalOut latchPin(D7);
billycorgan123 0:f2c01a50c329 194 DigitalOut clockPin(D6);
billycorgan123 0:f2c01a50c329 195 DigitalIn dataPin(D5);
billycorgan123 0:f2c01a50c329 196 float tempoattesa = 20;
billycorgan123 0:f2c01a50c329 197 //acquiring values
billycorgan123 0:f2c01a50c329 198 latchPin.write(1);
billycorgan123 0:f2c01a50c329 199 wait_us(tempoattesa);
billycorgan123 0:f2c01a50c329 200 //read values acquired and store in array
billycorgan123 0:f2c01a50c329 201 latchPin.write(0);
billycorgan123 0:f2c01a50c329 202 for (int i=7; i>=0; i--) {
billycorgan123 0:f2c01a50c329 203 wait_us(tempoattesa);
billycorgan123 0:f2c01a50c329 204 clockPin.write(0);
billycorgan123 0:f2c01a50c329 205 wait_us(tempoattesa);
billycorgan123 0:f2c01a50c329 206 myDataIn[i] = dataPin.read(); //1 if OT open, 0 if OT close
billycorgan123 0:f2c01a50c329 207 clockPin.write(1);
billycorgan123 0:f2c01a50c329 208 }
billycorgan123 0:f2c01a50c329 209 //per prova da togliere dopo
billycorgan123 0:f2c01a50c329 210 for (int i=7; i>=0; i--) { // D7,D6,.....,D1,D0
billycorgan123 0:f2c01a50c329 211 sprintf((char*)text, "%d", myDataIn[0+i]);
billycorgan123 0:f2c01a50c329 212 lcd.DisplayStringAt(580+20*i,LINE(8), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:f2c01a50c329 213 }
billycorgan123 0:f2c01a50c329 214 //
billycorgan123 0:f2c01a50c329 215 return myDataIn;
billycorgan123 0:f2c01a50c329 216 }
billycorgan123 0:f2c01a50c329 217 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 218 void object_update()
billycorgan123 0:f2c01a50c329 219 {
billycorgan123 0:f2c01a50c329 220 //update delle immagini e dello stato delle uscite
billycorgan123 0:f2c01a50c329 221 Lampadina.draw_image (&_acLampadina_acceso[0], &_acLampadina_spento[0], Lampadina.stato, 230, 20);
billycorgan123 0:f2c01a50c329 222 Resistenza1.draw_image (&_acResistenza1_acceso[0], &_acResistenza1_spento[0], Resistenza1.stato, 300, 20);
billycorgan123 0:f2c01a50c329 223 Resistenza2.draw_image (&_acResistenza2_acceso[0], &_acResistenza2_spento[0], Resistenza2.stato, 370, 20);
billycorgan123 0:f2c01a50c329 224 Giracaffe.draw_image (&_acGiracaffe_acceso[0], &_acGiracaffe_spento[0], Giracaffe.stato, 440, 20);
billycorgan123 0:f2c01a50c329 225 Bloccoporta.draw_image (&_acPorta_aperto[0], &_acPorta_chiuso[0], Bloccoporta.stato, 230, 90);
billycorgan123 0:f2c01a50c329 226 VTangenziale.draw_image (&_acVTangenziale_acceso[0], &_acVTangenziale_spento[0], VTangenziale.stato, 300, 90);
billycorgan123 0:f2c01a50c329 227 VRadiale.draw_image (&_acVRadiale_acceso[0], &_acVRadiale_spento[0], VRadiale.stato, 370, 90);
billycorgan123 0:f2c01a50c329 228 Ventola.draw_image (&_acVentola_acceso[0], &_acVentola_spento[0], Ventola.stato, 440, 90);
billycorgan123 0:f2c01a50c329 229 //update uscita 74HC595
billycorgan123 0:f2c01a50c329 230 bool array[16]= {!Lampadina.stato, !Giracaffe.stato, !VTangenziale.stato, !Resistenza1.stato, !Resistenza2.stato, !VRadiale.stato, !Scarico_caffe.ON_OFF, !Scarico_caffe.CW_CCW, !Ventola.stato, Activate_Door,1,1,1,1,1,1};
billycorgan123 0:f2c01a50c329 231 for (int i=0; i<16; i++) scheda_8relay.setPin(i,array[i]);
billycorgan123 0:f2c01a50c329 232 scheda_8relay.write();
billycorgan123 0:f2c01a50c329 233 }
billycorgan123 0:f2c01a50c329 234 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 235 void temperature_update()
billycorgan123 0:f2c01a50c329 236 {
billycorgan123 0:f2c01a50c329 237 lcd.DisplayStringAt(680, LINE(9), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 238 lcd.DisplayStringAt(680, LINE(11), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 239 lcd.DisplayStringAt(680, LINE(13), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 240 PT1.read_all( );
billycorgan123 0:f2c01a50c329 241 if (PT1.temperature( )>150) lcd.SetTextColor(red);
billycorgan123 0:f2c01a50c329 242 else lcd.SetTextColor(black);
billycorgan123 0:f2c01a50c329 243 sprintf((char*)text, "%1.0f", PT1.temperature( ));
billycorgan123 0:f2c01a50c329 244 lcd.DisplayStringAt(680, LINE(9), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:f2c01a50c329 245 PT2.read_all( );
billycorgan123 0:f2c01a50c329 246 if (PT2.temperature( )>150) lcd.SetTextColor(red);
billycorgan123 0:f2c01a50c329 247 else lcd.SetTextColor(black);
billycorgan123 0:f2c01a50c329 248 sprintf((char*)text, "%1.0f", PT2.temperature( ));
billycorgan123 0:f2c01a50c329 249 lcd.DisplayStringAt(680, LINE(11), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:f2c01a50c329 250 PT3.read_all( );
billycorgan123 0:f2c01a50c329 251 if (PT3.temperature( )>150) lcd.SetTextColor(red);
billycorgan123 0:f2c01a50c329 252 else lcd.SetTextColor(black);
billycorgan123 0:f2c01a50c329 253 sprintf((char*)text, "%1.0f", PT3.temperature( ));
billycorgan123 0:f2c01a50c329 254 lcd.DisplayStringAt(680, LINE(13), (uint8_t *)&text, LEFT_MODE);
billycorgan123 0:f2c01a50c329 255 lcd.SetTextColor(black);
billycorgan123 0:f2c01a50c329 256
billycorgan123 0:f2c01a50c329 257 //per sicurezza la temperatura non può superare i 450 gradi
billycorgan123 0:f2c01a50c329 258 if (PT1.temperature( )>450 || PT2.temperature( )>450) {
billycorgan123 0:f2c01a50c329 259 Resistenza1_spento();
billycorgan123 0:f2c01a50c329 260 Resistenza2_spento();
billycorgan123 0:f2c01a50c329 261 }
billycorgan123 0:f2c01a50c329 262 }
billycorgan123 0:f2c01a50c329 263
billycorgan123 0:f2c01a50c329 264 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 265 /// Lampadina
billycorgan123 0:f2c01a50c329 266 void Lampadina_acceso()
billycorgan123 0:f2c01a50c329 267 {
billycorgan123 0:f2c01a50c329 268 Lampadina.stato=1;
billycorgan123 0:f2c01a50c329 269 object_update();
billycorgan123 0:f2c01a50c329 270 }
billycorgan123 0:f2c01a50c329 271 void Lampadina_spento()
billycorgan123 0:f2c01a50c329 272 {
billycorgan123 0:f2c01a50c329 273 Lampadina.stato=0;
billycorgan123 0:f2c01a50c329 274 object_update();
billycorgan123 0:f2c01a50c329 275 }
billycorgan123 0:f2c01a50c329 276 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 277 /// Resistenza 1
billycorgan123 0:f2c01a50c329 278 void Resistenza1_acceso()
billycorgan123 0:f2c01a50c329 279 {
billycorgan123 0:f2c01a50c329 280 Resistenza1.stato=1;
billycorgan123 0:f2c01a50c329 281 object_update();
billycorgan123 0:f2c01a50c329 282 }
billycorgan123 0:f2c01a50c329 283 void Resistenza1_spento()
billycorgan123 0:f2c01a50c329 284 {
billycorgan123 0:f2c01a50c329 285 Resistenza1.stato=0;
billycorgan123 0:f2c01a50c329 286 object_update();
billycorgan123 0:f2c01a50c329 287 }
billycorgan123 0:f2c01a50c329 288 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 289 /// Resistenza 2
billycorgan123 0:f2c01a50c329 290 void Resistenza2_acceso()
billycorgan123 0:f2c01a50c329 291 {
billycorgan123 0:f2c01a50c329 292 Resistenza2.stato=1;
billycorgan123 0:f2c01a50c329 293 object_update();
billycorgan123 0:f2c01a50c329 294 }
billycorgan123 0:f2c01a50c329 295 void Resistenza2_spento()
billycorgan123 0:f2c01a50c329 296 {
billycorgan123 0:f2c01a50c329 297 Resistenza2.stato=0;
billycorgan123 0:f2c01a50c329 298 object_update();
billycorgan123 0:f2c01a50c329 299 }
billycorgan123 0:f2c01a50c329 300 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 301 /// Ventola 12/24 volt
billycorgan123 0:f2c01a50c329 302 void Ventola_acceso()
billycorgan123 0:f2c01a50c329 303 {
billycorgan123 0:f2c01a50c329 304 Ventola.stato=1;
billycorgan123 0:f2c01a50c329 305 object_update();
billycorgan123 0:f2c01a50c329 306 }
billycorgan123 0:f2c01a50c329 307 void Ventola_spento()
billycorgan123 0:f2c01a50c329 308 {
billycorgan123 0:f2c01a50c329 309 Ventola.stato=0;
billycorgan123 0:f2c01a50c329 310 object_update();
billycorgan123 0:f2c01a50c329 311 }
billycorgan123 0:f2c01a50c329 312 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 313 /// Ventola Radiale
billycorgan123 0:f2c01a50c329 314 void VRadiale_acceso()
billycorgan123 0:f2c01a50c329 315 {
billycorgan123 0:f2c01a50c329 316 VRadiale.stato=1;
billycorgan123 0:f2c01a50c329 317 object_update();
billycorgan123 0:f2c01a50c329 318 }
billycorgan123 0:f2c01a50c329 319 void VRadiale_spento()
billycorgan123 0:f2c01a50c329 320 {
billycorgan123 0:f2c01a50c329 321 VRadiale.stato=0;
billycorgan123 0:f2c01a50c329 322 object_update();
billycorgan123 0:f2c01a50c329 323 }
billycorgan123 0:f2c01a50c329 324 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 325 /// Ventola Tangenziale
billycorgan123 0:f2c01a50c329 326 void VTangenziale_acceso()
billycorgan123 0:f2c01a50c329 327 {
billycorgan123 0:f2c01a50c329 328 VTangenziale.stato=1;
billycorgan123 0:f2c01a50c329 329 object_update();
billycorgan123 0:f2c01a50c329 330 }
billycorgan123 0:f2c01a50c329 331 void VTangenziale_spento()
billycorgan123 0:f2c01a50c329 332 {
billycorgan123 0:f2c01a50c329 333 VTangenziale.stato=0;
billycorgan123 0:f2c01a50c329 334 object_update();
billycorgan123 0:f2c01a50c329 335 }
billycorgan123 0:f2c01a50c329 336 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 337 /// Giracaffe
billycorgan123 0:f2c01a50c329 338 void Giracaffe_acceso()
billycorgan123 0:f2c01a50c329 339 {
billycorgan123 0:f2c01a50c329 340 Giracaffe.stato=1;
billycorgan123 0:f2c01a50c329 341 object_update();
billycorgan123 0:f2c01a50c329 342 }
billycorgan123 0:f2c01a50c329 343 void Giracaffe_spento()
billycorgan123 0:f2c01a50c329 344 {
billycorgan123 0:f2c01a50c329 345 Giracaffe.stato=0;
billycorgan123 0:f2c01a50c329 346 object_update();
billycorgan123 0:f2c01a50c329 347 }
billycorgan123 0:f2c01a50c329 348 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 349 ///Apro scarico caffe
billycorgan123 0:f2c01a50c329 350 bool Apro_scarico()
billycorgan123 0:f2c01a50c329 351 {
billycorgan123 0:f2c01a50c329 352 do {
billycorgan123 0:f2c01a50c329 353 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"COFFE UNLOAD IS OPENING ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 354 Scarico_caffe.CW_CCW=1;
billycorgan123 0:f2c01a50c329 355 object_update();
billycorgan123 0:f2c01a50c329 356 wait(0.5);
billycorgan123 0:f2c01a50c329 357 Scarico_caffe.ON_OFF=1;
billycorgan123 0:f2c01a50c329 358 object_update();
billycorgan123 0:f2c01a50c329 359 getData();
billycorgan123 0:f2c01a50c329 360 } while(!myDataIn[2]);
billycorgan123 0:f2c01a50c329 361 Scarico_caffe.ON_OFF=0;
billycorgan123 0:f2c01a50c329 362 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 363 wait(0.4);
billycorgan123 0:f2c01a50c329 364 return 0;
billycorgan123 0:f2c01a50c329 365 }
billycorgan123 0:f2c01a50c329 366 ///Chiudo scarico
billycorgan123 0:f2c01a50c329 367 bool Chiudo_scarico()
billycorgan123 0:f2c01a50c329 368 {
billycorgan123 0:f2c01a50c329 369 do {
billycorgan123 0:f2c01a50c329 370 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"COFFE UNLOAD IS CLOSING ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 371 Scarico_caffe.CW_CCW=0;
billycorgan123 0:f2c01a50c329 372 object_update();
billycorgan123 0:f2c01a50c329 373 wait(0.5);
billycorgan123 0:f2c01a50c329 374 Scarico_caffe.ON_OFF=1;
billycorgan123 0:f2c01a50c329 375 object_update();
billycorgan123 0:f2c01a50c329 376 getData();
billycorgan123 0:f2c01a50c329 377 } while(!myDataIn[3]);
billycorgan123 0:f2c01a50c329 378 Scarico_caffe.ON_OFF=0;
billycorgan123 0:f2c01a50c329 379 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 380 wait(0.4);
billycorgan123 0:f2c01a50c329 381 return 0;
billycorgan123 0:f2c01a50c329 382 }
billycorgan123 0:f2c01a50c329 383 //------------------------------------------------------------------------------
billycorgan123 0:f2c01a50c329 384 ///Porta
billycorgan123 0:f2c01a50c329 385 bool apro_porta()
billycorgan123 0:f2c01a50c329 386 {
billycorgan123 0:f2c01a50c329 387 do {
billycorgan123 0:f2c01a50c329 388 temperature_update();
billycorgan123 0:f2c01a50c329 389 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"TEMPERATURE ABOVE T-SAFE ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 390 } while (PT1.temperature( )>temp_safe+5);
billycorgan123 0:f2c01a50c329 391 //attivazione del relay
billycorgan123 0:f2c01a50c329 392 Activate_Door=0;
billycorgan123 0:f2c01a50c329 393 object_update();
billycorgan123 0:f2c01a50c329 394 wait(0.100);
billycorgan123 0:f2c01a50c329 395 Activate_Door=1;
billycorgan123 0:f2c01a50c329 396 object_update();
billycorgan123 0:f2c01a50c329 397 wait(0.050);
billycorgan123 0:f2c01a50c329 398 Activate_Door=0;
billycorgan123 0:f2c01a50c329 399 object_update();
billycorgan123 0:f2c01a50c329 400 wait(0.200);
billycorgan123 0:f2c01a50c329 401 Activate_Door=1;
billycorgan123 0:f2c01a50c329 402 object_update();
billycorgan123 0:f2c01a50c329 403 wait(0.050);
billycorgan123 0:f2c01a50c329 404 Activate_Door=0;
billycorgan123 0:f2c01a50c329 405 object_update();
billycorgan123 0:f2c01a50c329 406 ///
billycorgan123 0:f2c01a50c329 407 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"DOOR IS OPEN ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 408 wait(1.0);
billycorgan123 0:f2c01a50c329 409 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 410 Bloccoporta.stato=0;
billycorgan123 0:f2c01a50c329 411 object_update();
billycorgan123 0:f2c01a50c329 412 return 0;
billycorgan123 0:f2c01a50c329 413 }
billycorgan123 0:f2c01a50c329 414 bool chiudo_porta()
billycorgan123 0:f2c01a50c329 415 {
billycorgan123 0:f2c01a50c329 416 do {
billycorgan123 0:f2c01a50c329 417 } while (!Chiudo_scarico());
billycorgan123 0:f2c01a50c329 418 do {
billycorgan123 0:f2c01a50c329 419 getData();
billycorgan123 0:f2c01a50c329 420 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"CLOSE THE COFFE COVER ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 421 wait(0.1);
billycorgan123 0:f2c01a50c329 422 } while (!myDataIn[0]);
billycorgan123 0:f2c01a50c329 423 do {
billycorgan123 0:f2c01a50c329 424 getData();
billycorgan123 0:f2c01a50c329 425 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"CLOSE THE DOOR ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 426 wait(0.1);
billycorgan123 0:f2c01a50c329 427 } while (!myDataIn[1]); //NB porta chiusa lo stato logico è =1, se è aperta lo stato logico è 0 e il ciclo while, finatanto che, non è fatto, ecco il perchè della negazione
billycorgan123 0:f2c01a50c329 428 //attivazione del relay per chiudere la porta
billycorgan123 0:f2c01a50c329 429 Activate_Door=0;
billycorgan123 0:f2c01a50c329 430 object_update();
billycorgan123 0:f2c01a50c329 431 wait(0.100);
billycorgan123 0:f2c01a50c329 432 Activate_Door=1;
billycorgan123 0:f2c01a50c329 433 object_update();
billycorgan123 0:f2c01a50c329 434 wait(0.050);
billycorgan123 0:f2c01a50c329 435 Activate_Door=0;
billycorgan123 0:f2c01a50c329 436 object_update();
billycorgan123 0:f2c01a50c329 437 wait(0.100);
billycorgan123 0:f2c01a50c329 438 ///
billycorgan123 0:f2c01a50c329 439 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)"DOOR IS CLOSED ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 440 Bloccoporta.stato=1;
billycorgan123 0:f2c01a50c329 441 object_update();
billycorgan123 0:f2c01a50c329 442 wait(1.200);
billycorgan123 0:f2c01a50c329 443 lcd.DisplayStringAt(10, LINE(18), (uint8_t *)" ", LEFT_MODE);
billycorgan123 0:f2c01a50c329 444 return 0;
billycorgan123 0:f2c01a50c329 445 }
billycorgan123 0:f2c01a50c329 446 //End of Functions//
billycorgan123 0:f2c01a50c329 447 #endif