Basic example how to use DrawPixel with STM32F746
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
main.cpp@1:8a54b7de2617, 2018-02-21 (annotated)
- Committer:
- billycorgan123
- Date:
- Wed Feb 21 19:38:50 2018 +0000
- Revision:
- 1:8a54b7de2617
- Parent:
- 0:d421f2c38453
rev1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
billycorgan123 | 0:d421f2c38453 | 1 | #include "mbed.h" |
billycorgan123 | 1:8a54b7de2617 | 2 | #include "TS_DISCO_F746NG.h" |
billycorgan123 | 0:d421f2c38453 | 3 | #include "LCD_DISCO_F746NG.h" |
billycorgan123 | 1:8a54b7de2617 | 4 | |
billycorgan123 | 1:8a54b7de2617 | 5 | #include "Bloccoporta_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 6 | #include "Bloccoporta_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 7 | #include "Girarrosto_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 8 | #include "Girarrosto_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 9 | #include "Lampadina_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 10 | #include "Lampadina_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 11 | #include "Motore_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 12 | #include "Motore_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 13 | #include "Resistenza1_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 14 | #include "Resistenza1_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 15 | #include "Resistenza2_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 16 | #include "Resistenza2_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 17 | #include "Ventilatore1_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 18 | #include "Ventilatore1_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 19 | #include "Ventilatore2_acceso.c" |
billycorgan123 | 1:8a54b7de2617 | 20 | #include "Ventilatore2_spento.c" |
billycorgan123 | 1:8a54b7de2617 | 21 | |
billycorgan123 | 1:8a54b7de2617 | 22 | #include "Clean.c" |
billycorgan123 | 1:8a54b7de2617 | 23 | #include "Roast.c" |
billycorgan123 | 1:8a54b7de2617 | 24 | #include "Stop.c" |
billycorgan123 | 1:8a54b7de2617 | 25 | |
billycorgan123 | 1:8a54b7de2617 | 26 | #include "functions.h" |
billycorgan123 | 1:8a54b7de2617 | 27 | #include "colors.c" |
billycorgan123 | 1:8a54b7de2617 | 28 | #include "Output.h" |
billycorgan123 | 1:8a54b7de2617 | 29 | #include "Shifter.h" |
billycorgan123 | 0:d421f2c38453 | 30 | |
billycorgan123 | 0:d421f2c38453 | 31 | LCD_DISCO_F746NG lcd; |
billycorgan123 | 1:8a54b7de2617 | 32 | TS_DISCO_F746NG ts; |
billycorgan123 | 1:8a54b7de2617 | 33 | |
billycorgan123 | 1:8a54b7de2617 | 34 | extern void clean(int); |
billycorgan123 | 1:8a54b7de2617 | 35 | extern void stop(); |
billycorgan123 | 1:8a54b7de2617 | 36 | extern void object_update(); |
billycorgan123 | 1:8a54b7de2617 | 37 | |
billycorgan123 | 1:8a54b7de2617 | 38 | TS_StateTypeDef TS_State; |
billycorgan123 | 1:8a54b7de2617 | 39 | uint16_t X, Y; |
billycorgan123 | 1:8a54b7de2617 | 40 | uint8_t idx; |
billycorgan123 | 1:8a54b7de2617 | 41 | uint8_t status; |
billycorgan123 | 1:8a54b7de2617 | 42 | uint8_t cleared = 0; |
billycorgan123 | 1:8a54b7de2617 | 43 | uint8_t prev_nb_touches = 0; |
billycorgan123 | 1:8a54b7de2617 | 44 | int numerotappe=0; |
billycorgan123 | 1:8a54b7de2617 | 45 | uint8_t text[30]; |
billycorgan123 | 1:8a54b7de2617 | 46 | |
billycorgan123 | 1:8a54b7de2617 | 47 | Output Bloccoporta; |
billycorgan123 | 1:8a54b7de2617 | 48 | Output Girarrosto; |
billycorgan123 | 1:8a54b7de2617 | 49 | Output Lampadina; |
billycorgan123 | 1:8a54b7de2617 | 50 | Output Motore; |
billycorgan123 | 1:8a54b7de2617 | 51 | Output Resistenza1; |
billycorgan123 | 1:8a54b7de2617 | 52 | Output Resistenza2; |
billycorgan123 | 1:8a54b7de2617 | 53 | Output Ventilatore1; |
billycorgan123 | 1:8a54b7de2617 | 54 | Output Ventilatore2; |
billycorgan123 | 1:8a54b7de2617 | 55 | |
billycorgan123 | 1:8a54b7de2617 | 56 | Shifter scheda_8relay; //!! pinout defined in library |
billycorgan123 | 1:8a54b7de2617 | 57 | bool array[16]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; |
billycorgan123 | 0:d421f2c38453 | 58 | |
billycorgan123 | 0:d421f2c38453 | 59 | int main() |
billycorgan123 | 0:d421f2c38453 | 60 | { |
billycorgan123 | 1:8a54b7de2617 | 61 | setup_griglia(); |
billycorgan123 | 0:d421f2c38453 | 62 | while(1) { |
billycorgan123 | 1:8a54b7de2617 | 63 | //acquisisco la pressione sullo schermo per attivare i vari oggetti |
billycorgan123 | 1:8a54b7de2617 | 64 | ts.ResetTouchData(&TS_State); |
billycorgan123 | 1:8a54b7de2617 | 65 | ts.GetState(&TS_State); |
billycorgan123 | 1:8a54b7de2617 | 66 | X = TS_State.touchX[0]; //acquisisco la X |
billycorgan123 | 1:8a54b7de2617 | 67 | Y = TS_State.touchY[0]; //acquisisco la Y |
billycorgan123 | 1:8a54b7de2617 | 68 | /* |
billycorgan123 | 1:8a54b7de2617 | 69 | if (X>=310 && X<360 && Y>=0 && Y<60) { |
billycorgan123 | 1:8a54b7de2617 | 70 | Lampadina.stato=!Lampadina.stato; |
billycorgan123 | 1:8a54b7de2617 | 71 | array[0]=Lampadina.stato; |
billycorgan123 | 1:8a54b7de2617 | 72 | } |
billycorgan123 | 1:8a54b7de2617 | 73 | if (X>=310 && X<360 && Y>=60 && Y<120) { |
billycorgan123 | 1:8a54b7de2617 | 74 | Motore.stato=!Motore.stato; |
billycorgan123 | 1:8a54b7de2617 | 75 | array[1]=Motore.stato; |
billycorgan123 | 1:8a54b7de2617 | 76 | } |
billycorgan123 | 1:8a54b7de2617 | 77 | if (X>=310 && X<360 && Y>=120 && Y<180) { |
billycorgan123 | 1:8a54b7de2617 | 78 | Ventilatore1.stato=!Ventilatore1.stato; |
billycorgan123 | 1:8a54b7de2617 | 79 | array[2]=Ventilatore1.stato; |
billycorgan123 | 1:8a54b7de2617 | 80 | } |
billycorgan123 | 1:8a54b7de2617 | 81 | if (X>=310 && X<360 && Y>=180 && Y<240) { |
billycorgan123 | 1:8a54b7de2617 | 82 | Ventilatore2.stato=!Ventilatore2.stato; |
billycorgan123 | 1:8a54b7de2617 | 83 | array[3]=Ventilatore2.stato; |
billycorgan123 | 1:8a54b7de2617 | 84 | } |
billycorgan123 | 1:8a54b7de2617 | 85 | if (X>=360 && X<410 && Y>=0 && Y<60) { |
billycorgan123 | 1:8a54b7de2617 | 86 | Bloccoporta.stato=!Bloccoporta.stato; |
billycorgan123 | 1:8a54b7de2617 | 87 | array[4]=Bloccoporta.stato; |
billycorgan123 | 0:d421f2c38453 | 88 | } |
billycorgan123 | 1:8a54b7de2617 | 89 | if (X>=360 && X<410 && Y>=60 && Y<120) { |
billycorgan123 | 1:8a54b7de2617 | 90 | Girarrosto.stato=!Girarrosto.stato; |
billycorgan123 | 1:8a54b7de2617 | 91 | array[5]=Girarrosto.stato; |
billycorgan123 | 1:8a54b7de2617 | 92 | } |
billycorgan123 | 1:8a54b7de2617 | 93 | if (X>=360 && X<410 && Y>=120 && Y<180) { |
billycorgan123 | 1:8a54b7de2617 | 94 | Resistenza1.stato=!Resistenza1.stato; |
billycorgan123 | 1:8a54b7de2617 | 95 | array[6]=Resistenza1.stato; |
billycorgan123 | 1:8a54b7de2617 | 96 | } |
billycorgan123 | 1:8a54b7de2617 | 97 | if (X>=360 && X<410 && Y>=180 && Y<240) { |
billycorgan123 | 1:8a54b7de2617 | 98 | Resistenza2.stato=!Resistenza2.stato; |
billycorgan123 | 1:8a54b7de2617 | 99 | array[7]=Resistenza2.stato; |
billycorgan123 | 1:8a54b7de2617 | 100 | } |
billycorgan123 | 1:8a54b7de2617 | 101 | */ |
billycorgan123 | 1:8a54b7de2617 | 102 | if (X>=20 && X<120 && Y>=20 && Y<80) { //ROAST |
billycorgan123 | 1:8a54b7de2617 | 103 | |
billycorgan123 | 1:8a54b7de2617 | 104 | } |
billycorgan123 | 1:8a54b7de2617 | 105 | if (X>=20 && X<120 && Y>=90 && Y<150) { //CLEAN |
billycorgan123 | 1:8a54b7de2617 | 106 | clean(10000); |
billycorgan123 | 1:8a54b7de2617 | 107 | } |
billycorgan123 | 1:8a54b7de2617 | 108 | if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP |
billycorgan123 | 1:8a54b7de2617 | 109 | |
billycorgan123 | 1:8a54b7de2617 | 110 | } |
billycorgan123 | 1:8a54b7de2617 | 111 | if (TS_State.touchDetected) wait(0.1); |
billycorgan123 | 1:8a54b7de2617 | 112 | |
billycorgan123 | 1:8a54b7de2617 | 113 | object_update(); |
billycorgan123 | 1:8a54b7de2617 | 114 | |
billycorgan123 | 1:8a54b7de2617 | 115 | wait(0.1); |
billycorgan123 | 0:d421f2c38453 | 116 | }//close while(1) |
billycorgan123 | 0:d421f2c38453 | 117 | }//close main |
billycorgan123 | 1:8a54b7de2617 | 118 | |
billycorgan123 | 1:8a54b7de2617 | 119 | void clean(int clean_time) |
billycorgan123 | 1:8a54b7de2617 | 120 | { |
billycorgan123 | 1:8a54b7de2617 | 121 | Timer timer; |
billycorgan123 | 1:8a54b7de2617 | 122 | timer.start(); |
billycorgan123 | 1:8a54b7de2617 | 123 | int previous_time, actual_time; |
billycorgan123 | 1:8a54b7de2617 | 124 | previous_time = timer.read(); |
billycorgan123 | 1:8a54b7de2617 | 125 | Lampadina.stato=1; |
billycorgan123 | 1:8a54b7de2617 | 126 | Resistenza1.stato=1; |
billycorgan123 | 1:8a54b7de2617 | 127 | Resistenza2.stato=1; |
billycorgan123 | 1:8a54b7de2617 | 128 | |
billycorgan123 | 1:8a54b7de2617 | 129 | while(1) { |
billycorgan123 | 1:8a54b7de2617 | 130 | actual_time = timer.read(); |
billycorgan123 | 1:8a54b7de2617 | 131 | uint8_t text[30]; |
billycorgan123 | 1:8a54b7de2617 | 132 | //acquisisco la pressione sullo schermo per attivare i vari oggetti |
billycorgan123 | 1:8a54b7de2617 | 133 | ts.ResetTouchData(&TS_State); |
billycorgan123 | 1:8a54b7de2617 | 134 | ts.GetState(&TS_State); |
billycorgan123 | 1:8a54b7de2617 | 135 | int X = TS_State.touchX[0]; //acquisisco la X |
billycorgan123 | 1:8a54b7de2617 | 136 | int Y = TS_State.touchY[0]; //acquisisco la Y |
billycorgan123 | 1:8a54b7de2617 | 137 | if (X>=20 && X<120 && Y>=160 && Y<220) { //STOP |
billycorgan123 | 1:8a54b7de2617 | 138 | stop(); |
billycorgan123 | 1:8a54b7de2617 | 139 | break; |
billycorgan123 | 1:8a54b7de2617 | 140 | } |
billycorgan123 | 1:8a54b7de2617 | 141 | //countdown dal clean_time a zero |
billycorgan123 | 1:8a54b7de2617 | 142 | if (actual_time-previous_time >=1) { |
billycorgan123 | 1:8a54b7de2617 | 143 | lcd.SetFont(&Font24); |
billycorgan123 | 1:8a54b7de2617 | 144 | lcd.SetTextColor(black); |
billycorgan123 | 1:8a54b7de2617 | 145 | sprintf((char*)text, "%5d", clean_time); |
billycorgan123 | 1:8a54b7de2617 | 146 | lcd.DisplayStringAt(130,100, (uint8_t *)&text, LEFT_MODE); |
billycorgan123 | 1:8a54b7de2617 | 147 | previous_time = actual_time; |
billycorgan123 | 1:8a54b7de2617 | 148 | clean_time--; |
billycorgan123 | 1:8a54b7de2617 | 149 | } |
billycorgan123 | 1:8a54b7de2617 | 150 | //se il tempo di clean è finito porto gli output a zero e aggiorno, poi esco dal ciclo |
billycorgan123 | 1:8a54b7de2617 | 151 | if (clean_time<0) { |
billycorgan123 | 1:8a54b7de2617 | 152 | stop(); |
billycorgan123 | 1:8a54b7de2617 | 153 | break; |
billycorgan123 | 1:8a54b7de2617 | 154 | } |
billycorgan123 | 1:8a54b7de2617 | 155 | |
billycorgan123 | 1:8a54b7de2617 | 156 | object_update(); |
billycorgan123 | 1:8a54b7de2617 | 157 | } |
billycorgan123 | 1:8a54b7de2617 | 158 | } |
billycorgan123 | 1:8a54b7de2617 | 159 | void stop() |
billycorgan123 | 1:8a54b7de2617 | 160 | { |
billycorgan123 | 1:8a54b7de2617 | 161 | //imposto gli output a zero, poi aggiorno |
billycorgan123 | 1:8a54b7de2617 | 162 | Lampadina.stato=0; |
billycorgan123 | 1:8a54b7de2617 | 163 | Resistenza1.stato=0; |
billycorgan123 | 1:8a54b7de2617 | 164 | Resistenza2.stato=0; |
billycorgan123 | 1:8a54b7de2617 | 165 | |
billycorgan123 | 1:8a54b7de2617 | 166 | object_update(); |
billycorgan123 | 1:8a54b7de2617 | 167 | } |
billycorgan123 | 1:8a54b7de2617 | 168 | void object_update() |
billycorgan123 | 1:8a54b7de2617 | 169 | { //update delle immagini e dello stato delle uscite |
billycorgan123 | 1:8a54b7de2617 | 170 | //disegno lo stato dei vari oggetti |
billycorgan123 | 1:8a54b7de2617 | 171 | Lampadina.draw_image (&_acLampadina_acceso[0], &_acLampadina_spento[0], Lampadina.stato, 310, 0); |
billycorgan123 | 1:8a54b7de2617 | 172 | Motore.draw_image (&_acMotore_acceso[0], &_acMotore_spento[0], Motore.stato, 310, 60); |
billycorgan123 | 1:8a54b7de2617 | 173 | Ventilatore1.draw_image (&_acVentilatore1_acceso[0], &_acVentilatore1_spento[0], Ventilatore1.stato, 310, 120); |
billycorgan123 | 1:8a54b7de2617 | 174 | Ventilatore2.draw_image (&_acVentilatore2_acceso[0], &_acVentilatore2_spento[0], Ventilatore2.stato, 310, 180); |
billycorgan123 | 1:8a54b7de2617 | 175 | Bloccoporta.draw_image (&_acBloccoporta_acceso[0], &_acBloccoporta_spento[0], Bloccoporta.stato, 360, 0); |
billycorgan123 | 1:8a54b7de2617 | 176 | Girarrosto.draw_image (&_acGirarrosto_acceso[0], &_acGirarrosto_spento[0], Girarrosto.stato, 360, 60); |
billycorgan123 | 1:8a54b7de2617 | 177 | Resistenza1.draw_image (&_acResistenza1_acceso[0], &_acResistenza1_spento[0], Resistenza1.stato, 360, 120); |
billycorgan123 | 1:8a54b7de2617 | 178 | Resistenza2.draw_image (&_acResistenza2_acceso[0], &_acResistenza2_spento[0], Resistenza2.stato, 360, 180); |
billycorgan123 | 1:8a54b7de2617 | 179 | //update uscita 74HC595 |
billycorgan123 | 1:8a54b7de2617 | 180 | for (int i=0; i<16; i++) scheda_8relay.setPin(i,array[i]); |
billycorgan123 | 1:8a54b7de2617 | 181 | scheda_8relay.write(); |
billycorgan123 | 1:8a54b7de2617 | 182 | } |