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 #ifndef FUCTIONS_H
billycorgan123 0:c980456a5562 2 #define FUNCTIONS_H
billycorgan123 0:c980456a5562 3
billycorgan123 2:ee10ee4002d5 4 //GOOD 0, GOOD/ERROR LATCHED 1, ERROR 2
billycorgan123 0:c980456a5562 5
billycorgan123 2:ee10ee4002d5 6 /// FUNZIONI ///////////////////////////////////////////////////////////////////
billycorgan123 0:c980456a5562 7
billycorgan123 2:ee10ee4002d5 8 void function_PREV_NEXT()
billycorgan123 0:c980456a5562 9 {
billycorgan123 2:ee10ee4002d5 10 // se premo nella barra inferiore cambio foglio/////////////////////////
billycorgan123 2:ee10ee4002d5 11 //if PREV pressed
billycorgan123 2:ee10ee4002d5 12 if ( (TS_State.touchDetected) && (TS_State.touchX[0]>=1 && TS_State.touchX[0]<160 && TS_State.touchY[0]>=400)) {
billycorgan123 2:ee10ee4002d5 13 actual_sheet = actual_sheet--;
billycorgan123 2:ee10ee4002d5 14 if (actual_sheet < 0) {
billycorgan123 2:ee10ee4002d5 15 actual_sheet = total_sheet-1;
billycorgan123 2:ee10ee4002d5 16 }
billycorgan123 2:ee10ee4002d5 17 display_draw_sheet(actual_sheet);
billycorgan123 2:ee10ee4002d5 18 wait_ms(120);
billycorgan123 2:ee10ee4002d5 19 }
billycorgan123 2:ee10ee4002d5 20 //if NEXT pressed
billycorgan123 2:ee10ee4002d5 21 if ( (TS_State.touchDetected) && (TS_State.touchX[0]>=641 && TS_State.touchX[0]<800 && TS_State.touchY[0]>=400)) {
billycorgan123 2:ee10ee4002d5 22 actual_sheet = actual_sheet++;
billycorgan123 2:ee10ee4002d5 23 if (actual_sheet >= total_sheet) {
billycorgan123 2:ee10ee4002d5 24 actual_sheet = 0;
billycorgan123 2:ee10ee4002d5 25 }
billycorgan123 2:ee10ee4002d5 26 display_draw_sheet(actual_sheet);
billycorgan123 2:ee10ee4002d5 27 wait_ms(120);
billycorgan123 0:c980456a5562 28 }
billycorgan123 0:c980456a5562 29 }
billycorgan123 2:ee10ee4002d5 30
billycorgan123 0:c980456a5562 31 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 32 void function_check_OT()
billycorgan123 0:c980456a5562 33 {
billycorgan123 0:c980456a5562 34 float tempoattesa = 20;
billycorgan123 0:c980456a5562 35 //acquiring values
billycorgan123 0:c980456a5562 36 latchPin.write(1);
billycorgan123 0:c980456a5562 37 wait_us(tempoattesa);
billycorgan123 0:c980456a5562 38 //read values acquired and store in array
billycorgan123 0:c980456a5562 39 latchPin.write(0);
billycorgan123 0:c980456a5562 40 for (int i=7; i>=0; i--) {
billycorgan123 0:c980456a5562 41 wait_us(tempoattesa);
billycorgan123 0:c980456a5562 42 clockPin.write(0);
billycorgan123 0:c980456a5562 43 wait_us(tempoattesa);
billycorgan123 2:ee10ee4002d5 44 //OT[i].state = dataPin.read(); //OT open is ok, OT close is error
billycorgan123 2:ee10ee4002d5 45 OT[i].state = !dataPin.read(); //OT open is error, OT close is OK
billycorgan123 2:ee10ee4002d5 46 if (OT[i].state) OT[i].latch_error = 1;
billycorgan123 2:ee10ee4002d5 47 if (OT[i].latch_error) (OT[i].state == 1) ? OT[i].state= 2 : OT[i].state = 1;
billycorgan123 0:c980456a5562 48 clockPin.write(1);
billycorgan123 0:c980456a5562 49 }
billycorgan123 0:c980456a5562 50 }
billycorgan123 0:c980456a5562 51 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 52 void print_OT_alarmed()
billycorgan123 0:c980456a5562 53 {
billycorgan123 2:ee10ee4002d5 54 lcd.SetFont(&Font24);
billycorgan123 2:ee10ee4002d5 55 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 56 lcd.SetBackColor(BackColor);
billycorgan123 2:ee10ee4002d5 57 if (OT[0].latch_error) lcd.DisplayStringAt(35, LINE(11), (uint8_t *)"OT 510 LWR TRNS", LEFT_MODE);
billycorgan123 2:ee10ee4002d5 58 if (OT[1].latch_error) lcd.DisplayStringAt(35, LINE(12), (uint8_t *)"OT 512 LWR TRNS", LEFT_MODE);
billycorgan123 2:ee10ee4002d5 59 if (OT[2].latch_error) lcd.DisplayStringAt(35, LINE(13), (uint8_t *)"OT 51 LWR ZONE 2", LEFT_MODE);
billycorgan123 2:ee10ee4002d5 60 if (OT[3].latch_error) lcd.DisplayStringAt(35, LINE(14), (uint8_t *)"OT 52 LWR ZONE 2", LEFT_MODE);
billycorgan123 2:ee10ee4002d5 61 if (OT[4].latch_error) lcd.DisplayStringAt(425, LINE(11), (uint8_t *)"OT 54 LWR ZONE 2", LEFT_MODE);
billycorgan123 2:ee10ee4002d5 62 if (OT[5].latch_error) lcd.DisplayStringAt(425, LINE(12), (uint8_t *)"OT 55 LWR ZONE 1", LEFT_MODE);
billycorgan123 2:ee10ee4002d5 63 if (OT[6].latch_error) lcd.DisplayStringAt(425, LINE(13), (uint8_t *)"OT 57 LWR ZONE 1", LEFT_MODE);
billycorgan123 2:ee10ee4002d5 64 if (OT[7].latch_error) lcd.DisplayStringAt(425, LINE(14), (uint8_t *)"OT 58 LWR ZONE 1", LEFT_MODE);
billycorgan123 0:c980456a5562 65 }
billycorgan123 0:c980456a5562 66 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 67 void function_check_heaters(int sample)
billycorgan123 0:c980456a5562 68 {
billycorgan123 2:ee10ee4002d5 69 //signal value
billycorgan123 2:ee10ee4002d5 70 Heater[0].average = 0;
billycorgan123 2:ee10ee4002d5 71 Heater[1].average = 0;
billycorgan123 2:ee10ee4002d5 72 for (int i=0; i<3; i++) {
billycorgan123 2:ee10ee4002d5 73 Heater[0].average = Heater[0].average + abs((3.6 * abs(signalHeater1.read()) - 1.8));
billycorgan123 2:ee10ee4002d5 74 Heater[1].average = Heater[1].average + abs((3.6 * abs(signalHeater2.read()) - 1.8));
billycorgan123 2:ee10ee4002d5 75 wait_us(10);
billycorgan123 2:ee10ee4002d5 76 }
billycorgan123 2:ee10ee4002d5 77 Heater[0].average = Heater[0].average/3;
billycorgan123 2:ee10ee4002d5 78 Heater[1].average = Heater[1].average/3;
billycorgan123 2:ee10ee4002d5 79
billycorgan123 2:ee10ee4002d5 80 //if heater is activate .ON_OFF = 1, else = 0
billycorgan123 2:ee10ee4002d5 81 for (int i=0; i<MAX_HEATER; i++) {
billycorgan123 2:ee10ee4002d5 82 (Heater[i].average >= Heater[i].limit) ? Heater[i].ON_OFF = 1 : Heater[i].ON_OFF = 0;
billycorgan123 2:ee10ee4002d5 83 Heater_Samples[i][sample] = Heater[i].ON_OFF;
billycorgan123 2:ee10ee4002d5 84 }
billycorgan123 2:ee10ee4002d5 85
billycorgan123 2:ee10ee4002d5 86 //define Heater[i].state GOOD = 0, LATCHED = 1, ERROR = 2 investigating ALL samples, OR qualificator among samples
billycorgan123 2:ee10ee4002d5 87 for (int i=0; i<MAX_HEATER; i++) {
billycorgan123 2:ee10ee4002d5 88 int a_samples = 0;
billycorgan123 2:ee10ee4002d5 89 for (a_samples = 0; a_samples < MAX_Samples; a_samples++) {
billycorgan123 2:ee10ee4002d5 90 Heater[i].state = Heater[i].state || Heater_Samples[i][a_samples];
billycorgan123 2:ee10ee4002d5 91 }
billycorgan123 2:ee10ee4002d5 92 Heater[i].state = 1 - Heater[i].state;
billycorgan123 2:ee10ee4002d5 93 a_samples=0;
billycorgan123 2:ee10ee4002d5 94 //latch di memoria
billycorgan123 2:ee10ee4002d5 95 if (Heater[i].state == 1) Heater[i].latch_error = 1;
billycorgan123 2:ee10ee4002d5 96 if (Heater[i].latch_error) (Heater[i].state == 1) ? Heater[i].state= 2 : Heater[i].state = 1;
billycorgan123 0:c980456a5562 97 }
billycorgan123 0:c980456a5562 98 }
billycorgan123 0:c980456a5562 99 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 100 bool check_if_error()
billycorgan123 0:c980456a5562 101 {
billycorgan123 2:ee10ee4002d5 102 //return ERRORE 0 GOOD, 1 ERROR
billycorgan123 2:ee10ee4002d5 103 if (is_OT_controlled) for (int i=0; i< MAX_OT; i++) ERRORE = ERRORE || OT[i].state;
billycorgan123 2:ee10ee4002d5 104 if (is_Heater_controlled) for (int i=0; i< MAX_HEATER; i++) ERRORE = ERRORE || Heater[i].state;
billycorgan123 2:ee10ee4002d5 105 if (is_Analog_controlled) for (int i=0; i< MAX_ANALOG; i++) ERRORE = ERRORE || ANALOG[i].state;
billycorgan123 2:ee10ee4002d5 106 if (is_Digital_controlled) for (int i=0; i< MAX_DIGITAL; i++) ERRORE = ERRORE || DIGITAL[i].state;
billycorgan123 2:ee10ee4002d5 107 return ERRORE;
billycorgan123 0:c980456a5562 108 }
billycorgan123 0:c980456a5562 109 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 110 void function_back_to_home_page(int back_home_ms)
billycorgan123 0:c980456a5562 111 {
billycorgan123 2:ee10ee4002d5 112 //funzione che ritorna a visualizzare pagina 0 dopo un tempo espresso in millisecondi
billycorgan123 2:ee10ee4002d5 113 (actual_sheet == 0 ) ? initial_time = timer.read_ms() : actual_time = timer.read_ms();
billycorgan123 2:ee10ee4002d5 114 if ( actual_time - initial_time > back_home_ms ) {
billycorgan123 2:ee10ee4002d5 115 actual_sheet = 0;
billycorgan123 2:ee10ee4002d5 116 display_draw_sheet(actual_sheet);
billycorgan123 2:ee10ee4002d5 117 }
billycorgan123 0:c980456a5562 118 }
billycorgan123 0:c980456a5562 119 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 120 void function_zero_array()
billycorgan123 0:c980456a5562 121 {
billycorgan123 2:ee10ee4002d5 122 int a, b;
billycorgan123 2:ee10ee4002d5 123 for (a=0; a<MAX_HEATER; a++) {
billycorgan123 2:ee10ee4002d5 124 for (b=0; b<MAX_Samples; b++) {
billycorgan123 2:ee10ee4002d5 125 Heater_Samples[a][b] = 1;
billycorgan123 2:ee10ee4002d5 126 }
billycorgan123 2:ee10ee4002d5 127 b=0;
billycorgan123 2:ee10ee4002d5 128 }
billycorgan123 0:c980456a5562 129 }
billycorgan123 0:c980456a5562 130 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 131 void function_check_analog()
billycorgan123 0:c980456a5562 132 {
billycorgan123 2:ee10ee4002d5 133 for (int n=0; n< MAX_ANALOG; n++)
billycorgan123 2:ee10ee4002d5 134 {
billycorgan123 2:ee10ee4002d5 135 ANALOG[n].average = 0;
billycorgan123 2:ee10ee4002d5 136 selectInput4051(n);
billycorgan123 2:ee10ee4002d5 137 wait_us(10);
billycorgan123 2:ee10ee4002d5 138 for (int a=0; a<3; a++)
billycorgan123 2:ee10ee4002d5 139 {
billycorgan123 2:ee10ee4002d5 140 ANALOG[n].average = ANALOG[n].average + analog_value.read();
billycorgan123 2:ee10ee4002d5 141 wait_us(5);
billycorgan123 2:ee10ee4002d5 142 }
billycorgan123 2:ee10ee4002d5 143 ANALOG[n].average = (ANALOG[n].average/3 - ANALOG[n].offset);
billycorgan123 2:ee10ee4002d5 144 if (ANALOG[n].average < ANALOG[n].limit) ANALOG[n].latch_error = 1;
billycorgan123 2:ee10ee4002d5 145 if (ANALOG[n].latch_error) (ANALOG[n].average < ANALOG[n].limit) ? ANALOG[n].state= 2 : ANALOG[n].state = 1;
billycorgan123 0:c980456a5562 146 }
billycorgan123 0:c980456a5562 147 }
billycorgan123 0:c980456a5562 148 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 149 void function_print_analog()
billycorgan123 2:ee10ee4002d5 150 {
billycorgan123 2:ee10ee4002d5 151 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 152 for (int n=0; n< MAX_ANALOG; n++)
billycorgan123 2:ee10ee4002d5 153 {
billycorgan123 2:ee10ee4002d5 154 sprintf((char*)text, "%2.2f", ANALOG[n].average);
billycorgan123 2:ee10ee4002d5 155 lcd.DisplayStringAt(180,LINE(2+n), (uint8_t *)&text, LEFT_MODE);
billycorgan123 2:ee10ee4002d5 156 (ANALOG[n].average > ANALOG[n].limit) ? lcd.SetTextColor(forestgreen) : lcd.SetTextColor(red);
billycorgan123 2:ee10ee4002d5 157 lcd.FillRect(260, LINE(2+n), 15, 15);
billycorgan123 2:ee10ee4002d5 158 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 159 }
billycorgan123 2:ee10ee4002d5 160 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 161 }
billycorgan123 2:ee10ee4002d5 162 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 163 void function_check_digital()
billycorgan123 0:c980456a5562 164 {
billycorgan123 2:ee10ee4002d5 165 DIGITAL[0].average = digital_signal_1.read();
billycorgan123 2:ee10ee4002d5 166 //DIGITAL[1].average = digital_signal_2.read();
billycorgan123 2:ee10ee4002d5 167 for (int n=0; n< MAX_DIGITAL; n++)
billycorgan123 2:ee10ee4002d5 168 {
billycorgan123 2:ee10ee4002d5 169 if (DIGITAL[n].average == 0) DIGITAL[n].latch_error = 1;
billycorgan123 2:ee10ee4002d5 170 if (DIGITAL[n].latch_error) (DIGITAL[n].average == 0) ? DIGITAL[n].state= 2 : DIGITAL[n].state = 1;
billycorgan123 2:ee10ee4002d5 171 }
billycorgan123 0:c980456a5562 172 }
billycorgan123 2:ee10ee4002d5 173 //------------------------------------------------------------------------------
billycorgan123 2:ee10ee4002d5 174 void function_print_digital()
billycorgan123 2:ee10ee4002d5 175 {
billycorgan123 2:ee10ee4002d5 176 for (int n=0; n< MAX_DIGITAL; n++)
billycorgan123 2:ee10ee4002d5 177 {
billycorgan123 2:ee10ee4002d5 178 (DIGITAL[n].average > DIGITAL[n].limit) ? lcd.SetTextColor(forestgreen) : lcd.SetTextColor(red);
billycorgan123 2:ee10ee4002d5 179 lcd.FillRect(220, LINE(11+n), 15, 15);
billycorgan123 2:ee10ee4002d5 180 }
billycorgan123 2:ee10ee4002d5 181 lcd.SetTextColor(black);
billycorgan123 2:ee10ee4002d5 182 }
billycorgan123 0:c980456a5562 183 #endif
billycorgan123 2:ee10ee4002d5 184