new version of AL96_OT
Dependencies: mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI
functions.h@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 | #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 |