to detect if overtemperatures go in fail
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
main.cpp@0:c59d5987f1b3, 2018-03-20 (annotated)
- Committer:
- billycorgan123
- Date:
- Tue Mar 20 19:42:27 2018 +0000
- Revision:
- 0:c59d5987f1b3
AL96OT overtemperature;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
billycorgan123 | 0:c59d5987f1b3 | 1 | #include "mbed.h" |
billycorgan123 | 0:c59d5987f1b3 | 2 | #include "TS_DISCO_F746NG.h" |
billycorgan123 | 0:c59d5987f1b3 | 3 | #include "LCD_DISCO_F746NG.h" |
billycorgan123 | 0:c59d5987f1b3 | 4 | #include "OverTemp.h" |
billycorgan123 | 0:c59d5987f1b3 | 5 | #include "colors.c" |
billycorgan123 | 0:c59d5987f1b3 | 6 | #include "AL96OTPICTURE.c" |
billycorgan123 | 0:c59d5987f1b3 | 7 | |
billycorgan123 | 0:c59d5987f1b3 | 8 | extern LCD_DISCO_F746NG lcd; |
billycorgan123 | 0:c59d5987f1b3 | 9 | extern TS_DISCO_F746NG ts; |
billycorgan123 | 0:c59d5987f1b3 | 10 | extern TS_StateTypeDef TS_State; |
billycorgan123 | 0:c59d5987f1b3 | 11 | extern uint8_t text[30]; |
billycorgan123 | 0:c59d5987f1b3 | 12 | |
billycorgan123 | 0:c59d5987f1b3 | 13 | OverTemp sensore[7]; |
billycorgan123 | 0:c59d5987f1b3 | 14 | |
billycorgan123 | 0:c59d5987f1b3 | 15 | const int Ycerchio=35; |
billycorgan123 | 0:c59d5987f1b3 | 16 | DigitalOut activeRelay (D2); |
billycorgan123 | 0:c59d5987f1b3 | 17 | bool ERRORE=0; |
billycorgan123 | 0:c59d5987f1b3 | 18 | static bool myDataIn[8] = {1,0,1,0,1,0,1,0}; |
billycorgan123 | 0:c59d5987f1b3 | 19 | |
billycorgan123 | 0:c59d5987f1b3 | 20 | |
billycorgan123 | 0:c59d5987f1b3 | 21 | bool * getData() |
billycorgan123 | 0:c59d5987f1b3 | 22 | { //define where your pins are |
billycorgan123 | 0:c59d5987f1b3 | 23 | DigitalOut latchPin(D5); |
billycorgan123 | 0:c59d5987f1b3 | 24 | DigitalOut clockPin(D6); |
billycorgan123 | 0:c59d5987f1b3 | 25 | DigitalIn dataPin(D7); |
billycorgan123 | 0:c59d5987f1b3 | 26 | float tempoattesa = 20; |
billycorgan123 | 0:c59d5987f1b3 | 27 | //acquiring values |
billycorgan123 | 0:c59d5987f1b3 | 28 | latchPin.write(1); |
billycorgan123 | 0:c59d5987f1b3 | 29 | wait_us(tempoattesa); |
billycorgan123 | 0:c59d5987f1b3 | 30 | //read values acquired and store in array |
billycorgan123 | 0:c59d5987f1b3 | 31 | latchPin.write(0); |
billycorgan123 | 0:c59d5987f1b3 | 32 | for (int i=7; i>=0; i--) |
billycorgan123 | 0:c59d5987f1b3 | 33 | { |
billycorgan123 | 0:c59d5987f1b3 | 34 | wait_us(tempoattesa); |
billycorgan123 | 0:c59d5987f1b3 | 35 | clockPin.write(0); |
billycorgan123 | 0:c59d5987f1b3 | 36 | wait_us(tempoattesa); |
billycorgan123 | 0:c59d5987f1b3 | 37 | myDataIn[i] = dataPin.read(); //1 if OT open, 0 if OT close |
billycorgan123 | 0:c59d5987f1b3 | 38 | clockPin.write(1); |
billycorgan123 | 0:c59d5987f1b3 | 39 | } |
billycorgan123 | 0:c59d5987f1b3 | 40 | return myDataIn; |
billycorgan123 | 0:c59d5987f1b3 | 41 | } |
billycorgan123 | 0:c59d5987f1b3 | 42 | |
billycorgan123 | 0:c59d5987f1b3 | 43 | void INIZIALIZZAZIONE() |
billycorgan123 | 0:c59d5987f1b3 | 44 | {//inizializzazione dello stato degli OT |
billycorgan123 | 0:c59d5987f1b3 | 45 | //lettura dello stato, e disegno a pannello |
billycorgan123 | 0:c59d5987f1b3 | 46 | for (int i=0; i<7; i++) |
billycorgan123 | 0:c59d5987f1b3 | 47 | { |
billycorgan123 | 0:c59d5987f1b3 | 48 | sensore[i].State=*(getData()+i); |
billycorgan123 | 0:c59d5987f1b3 | 49 | sensore[i].Tripped=0; |
billycorgan123 | 0:c59d5987f1b3 | 50 | sensore[i].wasActive = *(getData()+i); |
billycorgan123 | 0:c59d5987f1b3 | 51 | sensore[i].DrawCircle(50+65*i, Ycerchio, sensore[i].State); |
billycorgan123 | 0:c59d5987f1b3 | 52 | } |
billycorgan123 | 0:c59d5987f1b3 | 53 | } |
billycorgan123 | 0:c59d5987f1b3 | 54 | |
billycorgan123 | 0:c59d5987f1b3 | 55 | void DRAW(){ |
billycorgan123 | 0:c59d5987f1b3 | 56 | //Disegna l'immagine di sfondo |
billycorgan123 | 0:c59d5987f1b3 | 57 | lcd.Clear(lightskyblue); |
billycorgan123 | 0:c59d5987f1b3 | 58 | int riga, colonna; |
billycorgan123 | 0:c59d5987f1b3 | 59 | unsigned long contatore=0; |
billycorgan123 | 0:c59d5987f1b3 | 60 | for (riga=480; riga>0; riga--) { |
billycorgan123 | 0:c59d5987f1b3 | 61 | for ( colonna=0; colonna<480; colonna++) { |
billycorgan123 | 0:c59d5987f1b3 | 62 | lcd.DrawPixel (colonna, 480-riga, _acAL96OTPICTURE[contatore]); |
billycorgan123 | 0:c59d5987f1b3 | 63 | contatore++; |
billycorgan123 | 0:c59d5987f1b3 | 64 | } |
billycorgan123 | 0:c59d5987f1b3 | 65 | colonna=0; |
billycorgan123 | 0:c59d5987f1b3 | 66 | } |
billycorgan123 | 0:c59d5987f1b3 | 67 | } |
billycorgan123 | 0:c59d5987f1b3 | 68 | |
billycorgan123 | 0:c59d5987f1b3 | 69 | |
billycorgan123 | 0:c59d5987f1b3 | 70 | int main() { |
billycorgan123 | 0:c59d5987f1b3 | 71 | lcd.Clear(lightskyblue); |
billycorgan123 | 0:c59d5987f1b3 | 72 | INIZIALIZZAZIONE(); |
billycorgan123 | 0:c59d5987f1b3 | 73 | |
billycorgan123 | 0:c59d5987f1b3 | 74 | while(1) |
billycorgan123 | 0:c59d5987f1b3 | 75 | { |
billycorgan123 | 0:c59d5987f1b3 | 76 | for (int i=0; i<7; i++) |
billycorgan123 | 0:c59d5987f1b3 | 77 | { |
billycorgan123 | 0:c59d5987f1b3 | 78 | //acquisisco lo stato degli OT, in caso di faulty .Tripped viene messo a 1 |
billycorgan123 | 0:c59d5987f1b3 | 79 | sensore[i].isActive = *(getData()+i); |
billycorgan123 | 0:c59d5987f1b3 | 80 | if (sensore[i].isActive==1) sensore[i].Tripped=1; |
billycorgan123 | 0:c59d5987f1b3 | 81 | //se lo stato dell'OT è cambiato rispetto lo stato precedente ne ridisegno il cerchio |
billycorgan123 | 0:c59d5987f1b3 | 82 | if (sensore[i].isActive!=sensore[i].wasActive) { |
billycorgan123 | 0:c59d5987f1b3 | 83 | if (sensore[i].isActive==1) sensore[i].State=1; //rosso |
billycorgan123 | 0:c59d5987f1b3 | 84 | if ((sensore[i].isActive==0) && sensore[i].Tripped==0) sensore[i].State=0; //verde |
billycorgan123 | 0:c59d5987f1b3 | 85 | if ((sensore[i].isActive==0) && sensore[i].Tripped==1) sensore[i].State=2; //verderosso |
billycorgan123 | 0:c59d5987f1b3 | 86 | sensore[i].DrawCircle(50+65*i, Ycerchio, sensore[i].State); |
billycorgan123 | 0:c59d5987f1b3 | 87 | } |
billycorgan123 | 0:c59d5987f1b3 | 88 | //sono sotto un ciclo for, se almeno uno OT è andato in errore viene segnalato |
billycorgan123 | 0:c59d5987f1b3 | 89 | ERRORE = ERRORE || sensore[i].Tripped; |
billycorgan123 | 0:c59d5987f1b3 | 90 | if ( ERRORE ) { |
billycorgan123 | 0:c59d5987f1b3 | 91 | lcd.SetFont(&Font24); |
billycorgan123 | 0:c59d5987f1b3 | 92 | lcd.SetTextColor(red); |
billycorgan123 | 0:c59d5987f1b3 | 93 | lcd.DrawRect(120, 73, 240, 35); |
billycorgan123 | 0:c59d5987f1b3 | 94 | lcd.DisplayStringAt(0, LINE(4)-17, (uint8_t *)" E R R O R ", CENTER_MODE); |
billycorgan123 | 0:c59d5987f1b3 | 95 | if (sensore[i].Tripped) sensore[i].Write(i); |
billycorgan123 | 0:c59d5987f1b3 | 96 | //qui da mettere il relay |
billycorgan123 | 0:c59d5987f1b3 | 97 | activeRelay.write(0); |
billycorgan123 | 0:c59d5987f1b3 | 98 | } |
billycorgan123 | 0:c59d5987f1b3 | 99 | else { |
billycorgan123 | 0:c59d5987f1b3 | 100 | lcd.SetFont(&Font24); |
billycorgan123 | 0:c59d5987f1b3 | 101 | lcd.SetTextColor(lime); |
billycorgan123 | 0:c59d5987f1b3 | 102 | lcd.DrawRect(120, 73, 240, 35); |
billycorgan123 | 0:c59d5987f1b3 | 103 | lcd.DisplayStringAt(0, LINE(4)-17, (uint8_t *)" O K ", CENTER_MODE); |
billycorgan123 | 0:c59d5987f1b3 | 104 | //qui da mettere il relay |
billycorgan123 | 0:c59d5987f1b3 | 105 | activeRelay.write(1); |
billycorgan123 | 0:c59d5987f1b3 | 106 | } |
billycorgan123 | 0:c59d5987f1b3 | 107 | |
billycorgan123 | 0:c59d5987f1b3 | 108 | if ( sensore[i].isTouched(50+65*i, Ycerchio) && (sensore[i].Tripped) ) |
billycorgan123 | 0:c59d5987f1b3 | 109 | { |
billycorgan123 | 0:c59d5987f1b3 | 110 | DRAW(); |
billycorgan123 | 0:c59d5987f1b3 | 111 | sensore[i].DrawOTPosition(i); |
billycorgan123 | 0:c59d5987f1b3 | 112 | wait(6); |
billycorgan123 | 0:c59d5987f1b3 | 113 | lcd.Clear(lightskyblue); |
billycorgan123 | 0:c59d5987f1b3 | 114 | for (int i=0; i<7; i++) {sensore[i].DrawCircle(50+65*i, Ycerchio, sensore[i].State); } |
billycorgan123 | 0:c59d5987f1b3 | 115 | } |
billycorgan123 | 0:c59d5987f1b3 | 116 | |
billycorgan123 | 0:c59d5987f1b3 | 117 | sensore[i].wasActive = sensore[i].isActive; |
billycorgan123 | 0:c59d5987f1b3 | 118 | } |
billycorgan123 | 0:c59d5987f1b3 | 119 | wait(0.1); |
billycorgan123 | 0:c59d5987f1b3 | 120 | }//close while(1) |
billycorgan123 | 0:c59d5987f1b3 | 121 | }//close main |