new version of AL96_OT
Dependencies: mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI
main.cpp@2:ee10ee4002d5, 2020-05-18 (annotated)
- Committer:
- billycorgan123
- Date:
- Mon May 18 19:00:39 2020 +0000
- Revision:
- 2:ee10ee4002d5
- Parent:
- 1:309cda84edd4
prova
Who changed what in which revision?
User | Revision | Line number | New 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 |