new version of AL96_OT

Dependencies:   mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI

Committer:
billycorgan123
Date:
Mon May 18 19:00:39 2020 +0000
Revision:
2:ee10ee4002d5
Parent:
1:309cda84edd4
prova

Who changed what in which revision?

UserRevisionLine numberNew contents of line
billycorgan123 0:c980456a5562 1 #include "mbed.h"
billycorgan123 0:c980456a5562 2
billycorgan123 2:ee10ee4002d5 3 #include "pictures.h"
billycorgan123 2:ee10ee4002d5 4 #include "config.h"
billycorgan123 0:c980456a5562 5 #include "display.h"
billycorgan123 2:ee10ee4002d5 6 #include "functions.h"
billycorgan123 0:c980456a5562 7
billycorgan123 0:c980456a5562 8 int main()
billycorgan123 0:c980456a5562 9 {
billycorgan123 2:ee10ee4002d5 10 timer.start();
billycorgan123 2:ee10ee4002d5 11 function_zero_array();
billycorgan123 2:ee10ee4002d5 12 display_setup();
billycorgan123 2:ee10ee4002d5 13 display_draw_sheet(actual_sheet);
billycorgan123 2:ee10ee4002d5 14
billycorgan123 2:ee10ee4002d5 15 //configuro lo switch analogico
billycorgan123 2:ee10ee4002d5 16 config4051(D6, D5, D4);
billycorgan123 0:c980456a5562 17
billycorgan123 0:c980456a5562 18 while(1) {
billycorgan123 2:ee10ee4002d5 19
billycorgan123 2:ee10ee4002d5 20 //acquisisco la pressione sullo schermo per attivare i vari oggetti/////
billycorgan123 0:c980456a5562 21 ts.GetState(&TS_State);
billycorgan123 2:ee10ee4002d5 22 ////////////////////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 23
billycorgan123 2:ee10ee4002d5 24 // se premo nella barra inferiore cambio foglio/////////////////////////
billycorgan123 2:ee10ee4002d5 25 function_PREV_NEXT();
billycorgan123 2:ee10ee4002d5 26 ////////////////////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 27
billycorgan123 2:ee10ee4002d5 28 //comandi dei tasti nei vari fogli//////////////////////////////////////
billycorgan123 2:ee10ee4002d5 29
billycorgan123 2:ee10ee4002d5 30 //se è attivo FOGLIO_0 /////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 31 if (actual_sheet == 0) {
billycorgan123 2:ee10ee4002d5 32 display_Error(ERRORE);
billycorgan123 2:ee10ee4002d5 33 if (is_OT_displayed)
billycorgan123 2:ee10ee4002d5 34 for (int i=0; i<MAX_OT; i++) {
billycorgan123 2:ee10ee4002d5 35 display_mini_state(OT[i].state, 430+40*i, 60); //overtemperatures
billycorgan123 2:ee10ee4002d5 36 }
billycorgan123 2:ee10ee4002d5 37 if (is_Heater_displayed)
billycorgan123 2:ee10ee4002d5 38 for (int i=0; i<MAX_HEATER; i++) {
billycorgan123 2:ee10ee4002d5 39 display_mini_state(Heater[i].state, 430+40*i, 140); //heaters
billycorgan123 2:ee10ee4002d5 40 }
billycorgan123 2:ee10ee4002d5 41 if (is_Analog_displayed)
billycorgan123 2:ee10ee4002d5 42 for (int i=0; i<MAX_ANALOG; i++) {
billycorgan123 2:ee10ee4002d5 43 display_mini_state(ANALOG[i].state, 430+40*i, 220); //analog signals
billycorgan123 2:ee10ee4002d5 44 }
billycorgan123 2:ee10ee4002d5 45 if (is_Digital_displayed)
billycorgan123 2:ee10ee4002d5 46 for (int i=0; i<MAX_DIGITAL; i++) {
billycorgan123 2:ee10ee4002d5 47 display_mini_state(DIGITAL[i].state, 430+40*i, 300); //digital signals
billycorgan123 2:ee10ee4002d5 48 }
billycorgan123 0:c980456a5562 49 }
billycorgan123 2:ee10ee4002d5 50 //fine FOGLIO_0/////////////////////////////////////////////////////////
billycorgan123 0:c980456a5562 51
billycorgan123 2:ee10ee4002d5 52 //se è attivo FOGLIO_1 /////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 53 if (actual_sheet == 1) {
billycorgan123 2:ee10ee4002d5 54 for (int i=0; i<MAX_OT; i++) {
billycorgan123 2:ee10ee4002d5 55 display_OT_state(OT[i].state, 35+i*95, 60, 8);
billycorgan123 2:ee10ee4002d5 56 print_OT_alarmed();
billycorgan123 2:ee10ee4002d5 57 }
billycorgan123 2:ee10ee4002d5 58 //for (int pi = 0; pi<8; pi++) lcd.DrawRect(35+pi*95, 60, 95, 150);
billycorgan123 2:ee10ee4002d5 59 if ( (TS_State.touchDetected) && (TS_State.touchX[0]>35 && TS_State.touchX[0]<795 && TS_State.touchY[0]>60 && TS_State.touchY[0]<210) &&
billycorgan123 2:ee10ee4002d5 60 OT[(TS_State.touchX[0] - 35)/95].latch_error > 0) {
billycorgan123 2:ee10ee4002d5 61 //mostra la foto per 5 secondi
billycorgan123 2:ee10ee4002d5 62 lcd.SetTextColor(BackColor);
billycorgan123 2:ee10ee4002d5 63 lcd.FillRect(0, 0, 800, 409);
billycorgan123 2:ee10ee4002d5 64 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 65 //qui da mettere il display foto
billycorgan123 2:ee10ee4002d5 66 display_sfondo_macchina();
billycorgan123 2:ee10ee4002d5 67 wait (4);
billycorgan123 2:ee10ee4002d5 68 display_setup();
billycorgan123 2:ee10ee4002d5 69 display_draw_sheet(actual_sheet);
billycorgan123 2:ee10ee4002d5 70 }
billycorgan123 2:ee10ee4002d5 71
billycorgan123 0:c980456a5562 72 }
billycorgan123 2:ee10ee4002d5 73 //fine FOGLIO_1/////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 74
billycorgan123 2:ee10ee4002d5 75 //se è attivo FOGLIO_2 /////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 76 if (actual_sheet == 2) {
billycorgan123 2:ee10ee4002d5 77 for (int i=0; i<MAX_HEATER; i++) {
billycorgan123 2:ee10ee4002d5 78 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 79 sprintf((char*)text, "%2.3f", Heater[i].average);
billycorgan123 2:ee10ee4002d5 80 lcd.DisplayStringAt(180,LINE(1+2*i), (uint8_t *)&text, LEFT_MODE);
billycorgan123 2:ee10ee4002d5 81 //if Heater is active = 1, small green square, else red
billycorgan123 2:ee10ee4002d5 82 (Heater[i].ON_OFF == 1) ? lcd.SetTextColor(forestgreen) : lcd.SetTextColor(red);
billycorgan123 2:ee10ee4002d5 83 lcd.FillRect(280, LINE(1+2*i), 15, 15);
billycorgan123 2:ee10ee4002d5 84 }
billycorgan123 2:ee10ee4002d5 85 lcd.SetTextColor(BackColor);
billycorgan123 2:ee10ee4002d5 86 lcd.FillRect(300, 18, 1*MAX_Samples, 75);
billycorgan123 2:ee10ee4002d5 87 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 88 for (int i=0; i<MAX_HEATER; i++) {
billycorgan123 2:ee10ee4002d5 89 int a_samples = 0;
billycorgan123 2:ee10ee4002d5 90 for (a_samples=0; a_samples<MAX_Samples; a_samples++) {
billycorgan123 2:ee10ee4002d5 91 lcd.FillRect(300+1*a_samples, LINE(1+2*i), 1, (10*Heater_Samples[i][a_samples]+1) );
billycorgan123 2:ee10ee4002d5 92 }
billycorgan123 2:ee10ee4002d5 93 a_samples=0;
billycorgan123 2:ee10ee4002d5 94 }
billycorgan123 0:c980456a5562 95 }
billycorgan123 2:ee10ee4002d5 96 //fine FOGLIO_2/////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 97
billycorgan123 2:ee10ee4002d5 98 //se è attivo FOGLIO_3 /////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 99 if (actual_sheet == 3) {
billycorgan123 2:ee10ee4002d5 100 function_print_analog();
billycorgan123 2:ee10ee4002d5 101 function_print_digital();
billycorgan123 0:c980456a5562 102 }
billycorgan123 2:ee10ee4002d5 103 //fine FOGLIO_3/////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 104
billycorgan123 2:ee10ee4002d5 105 //se è attivo FOGLIO_4 /////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 106 if (actual_sheet == 4) {
billycorgan123 2:ee10ee4002d5 107
billycorgan123 0:c980456a5562 108 }
billycorgan123 2:ee10ee4002d5 109 //fine FOGLIO_4/////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 110
billycorgan123 2:ee10ee4002d5 111 //CONTROLLI COMPONENTI//////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 112 //OVER TEMPERATURES
billycorgan123 2:ee10ee4002d5 113 function_check_OT();
billycorgan123 2:ee10ee4002d5 114 //controllo dello stato degli heater, fatto ogni 3000 msec
billycorgan123 2:ee10ee4002d5 115 //numero di campioni costante di 300 -> con intervallo 1 secondo -> 5 minuti,
billycorgan123 2:ee10ee4002d5 116 //numero di campioni costante di 300 -> con intervallo 3 secondi -> 15 minuti //se l' heater non scalda per 15 minuti viene dichiarato ERROR
billycorgan123 2:ee10ee4002d5 117 //HEATERS
billycorgan123 2:ee10ee4002d5 118 if ( (timer.read_ms() - heater_actual_time) > 3000) {
billycorgan123 2:ee10ee4002d5 119 function_check_heaters(Sample);
billycorgan123 2:ee10ee4002d5 120 heater_actual_time = timer.read_ms();
billycorgan123 2:ee10ee4002d5 121 Sample++;
billycorgan123 2:ee10ee4002d5 122 if (Sample >= MAX_Samples) Sample = 0;
billycorgan123 0:c980456a5562 123 }
billycorgan123 2:ee10ee4002d5 124 //ANALOG SIGNALS
billycorgan123 2:ee10ee4002d5 125 function_check_analog();
billycorgan123 2:ee10ee4002d5 126 //DIGITAL SIGNALS
billycorgan123 2:ee10ee4002d5 127 function_check_digital();
billycorgan123 2:ee10ee4002d5 128 ////////////////////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 129
billycorgan123 2:ee10ee4002d5 130 //BACK HOME PAGE////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 131 //visualizza la pagina 0, in milliseconds (360000=6 minutes)
billycorgan123 2:ee10ee4002d5 132 function_back_to_home_page(360000);
billycorgan123 2:ee10ee4002d5 133 display_sheet_number();
billycorgan123 2:ee10ee4002d5 134 ////////////////////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 135
billycorgan123 2:ee10ee4002d5 136 //CONTROL ERROR/////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 137 //se check_if_error == 1, c'e' l'errore e il relay e' LOW (chiuso)
billycorgan123 2:ee10ee4002d5 138 //attiva/disattiva il relay
billycorgan123 2:ee10ee4002d5 139
billycorgan123 2:ee10ee4002d5 140 if (check_if_error()) Relay_Error1 = LOW;
billycorgan123 2:ee10ee4002d5 141 else Relay_Error1 = HIGH;
billycorgan123 2:ee10ee4002d5 142 ////////////////////////////////////////////////////////////////////////
billycorgan123 2:ee10ee4002d5 143
billycorgan123 0:c980456a5562 144 wait(0.1);
billycorgan123 0:c980456a5562 145 }
billycorgan123 0:c980456a5562 146 }
billycorgan123 0:c980456a5562 147
billycorgan123 0:c980456a5562 148