Ce code contient un jeu relié à un micro. Il faut alors souffler sur le micro pour augmenter une jauge et tuer le personnage situé en haut de l'écran, et ensuite passé au niveau suivant. Le micro contient 4 broches, dont 1 broche de sortie analogique (valeurs entre 0 et 1). Cette broche est relié à la pin A0 de la carte MBED.
Dependencies: TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG
main.cpp@0:e77d6ddce807, 2019-06-04 (annotated)
- Committer:
- FionaLebel
- Date:
- Tue Jun 04 14:13:48 2019 +0000
- Revision:
- 0:e77d6ddce807
version finale
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
FionaLebel | 0:e77d6ddce807 | 1 | #include "mbed.h" |
FionaLebel | 0:e77d6ddce807 | 2 | #include "LCD_DISCO_F746NG.h" |
FionaLebel | 0:e77d6ddce807 | 3 | #include "TS_DISCO_F746NG.h" |
FionaLebel | 0:e77d6ddce807 | 4 | #include <string> |
FionaLebel | 0:e77d6ddce807 | 5 | |
FionaLebel | 0:e77d6ddce807 | 6 | LCD_DISCO_F746NG lcd; |
FionaLebel | 0:e77d6ddce807 | 7 | TS_DISCO_F746NG ts; |
FionaLebel | 0:e77d6ddce807 | 8 | DigitalOut led1(LED1); |
FionaLebel | 0:e77d6ddce807 | 9 | AnalogIn in(A0); |
FionaLebel | 0:e77d6ddce807 | 10 | Serial pc(USBTX, USBRX, 9600); |
FionaLebel | 0:e77d6ddce807 | 11 | |
FionaLebel | 0:e77d6ddce807 | 12 | int main() |
FionaLebel | 0:e77d6ddce807 | 13 | { |
FionaLebel | 0:e77d6ddce807 | 14 | TS_StateTypeDef TS_State; |
FionaLebel | 0:e77d6ddce807 | 15 | ts.Init(200,200); |
FionaLebel | 0:e77d6ddce807 | 16 | int niveau =1; |
FionaLebel | 0:e77d6ddce807 | 17 | float volume = 0.00; |
FionaLebel | 0:e77d6ddce807 | 18 | int compteurJauge=0; |
FionaLebel | 0:e77d6ddce807 | 19 | char volumeChar[12]={0}; |
FionaLebel | 0:e77d6ddce807 | 20 | int etat = 1; |
FionaLebel | 0:e77d6ddce807 | 21 | |
FionaLebel | 0:e77d6ddce807 | 22 | lcd.Clear(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 23 | lcd.SetBackColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 24 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 25 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"CAPTEUR SONORE", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 26 | lcd.SetTextColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 27 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 28 | lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"Play", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 29 | |
FionaLebel | 0:e77d6ddce807 | 30 | while(1) { |
FionaLebel | 0:e77d6ddce807 | 31 | |
FionaLebel | 0:e77d6ddce807 | 32 | ts.GetState(&TS_State); |
FionaLebel | 0:e77d6ddce807 | 33 | if ((TS_State.touchDetected) && (TS_State.touchX[0] > 190 && TS_State.touchX[0] < 290 && TS_State.touchY[0]<210 && TS_State.touchY[0]>160 )) |
FionaLebel | 0:e77d6ddce807 | 34 | { |
FionaLebel | 0:e77d6ddce807 | 35 | led1 = 1; |
FionaLebel | 0:e77d6ddce807 | 36 | lcd.Clear(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 37 | |
FionaLebel | 0:e77d6ddce807 | 38 | while(1){ |
FionaLebel | 0:e77d6ddce807 | 39 | |
FionaLebel | 0:e77d6ddce807 | 40 | switch(etat){ |
FionaLebel | 0:e77d6ddce807 | 41 | case 1: |
FionaLebel | 0:e77d6ddce807 | 42 | volume = in.read(); |
FionaLebel | 0:e77d6ddce807 | 43 | pc.printf("Volume ana = %f \r\n", volume); |
FionaLebel | 0:e77d6ddce807 | 44 | wait(0.3); |
FionaLebel | 0:e77d6ddce807 | 45 | sprintf(volumeChar, "%0.4f", volume); |
FionaLebel | 0:e77d6ddce807 | 46 | lcd.Clear(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 47 | lcd.SetBackColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 48 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 49 | lcd.DisplayStringAt(0, LINE(10), (uint8_t *)volumeChar, RIGHT_MODE); |
FionaLebel | 0:e77d6ddce807 | 50 | |
FionaLebel | 0:e77d6ddce807 | 51 | |
FionaLebel | 0:e77d6ddce807 | 52 | |
FionaLebel | 0:e77d6ddce807 | 53 | lcd.SetBackColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 54 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 55 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Tuer Arthur", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 56 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 57 | lcd.SetTextColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 58 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"Arthur", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 59 | |
FionaLebel | 0:e77d6ddce807 | 60 | if (volume>0.00 && volume<0.05) |
FionaLebel | 0:e77d6ddce807 | 61 | { |
FionaLebel | 0:e77d6ddce807 | 62 | for (int i=0; i<1;i++){ |
FionaLebel | 0:e77d6ddce807 | 63 | |
FionaLebel | 0:e77d6ddce807 | 64 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 65 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 66 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 67 | } |
FionaLebel | 0:e77d6ddce807 | 68 | } |
FionaLebel | 0:e77d6ddce807 | 69 | else if (volume>0.05 && volume<0.08){ |
FionaLebel | 0:e77d6ddce807 | 70 | for (int i=0; i<2;i++){ |
FionaLebel | 0:e77d6ddce807 | 71 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 72 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 73 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 74 | } |
FionaLebel | 0:e77d6ddce807 | 75 | } |
FionaLebel | 0:e77d6ddce807 | 76 | else if (volume>0.08 && volume<0.1){ |
FionaLebel | 0:e77d6ddce807 | 77 | for (int i=0; i<3;i++){ |
FionaLebel | 0:e77d6ddce807 | 78 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 79 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 80 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 81 | } |
FionaLebel | 0:e77d6ddce807 | 82 | } |
FionaLebel | 0:e77d6ddce807 | 83 | else if (volume>0.2 && volume<0.4){ |
FionaLebel | 0:e77d6ddce807 | 84 | for (int i=0; i<4;i++){ |
FionaLebel | 0:e77d6ddce807 | 85 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 86 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 87 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 88 | } |
FionaLebel | 0:e77d6ddce807 | 89 | } |
FionaLebel | 0:e77d6ddce807 | 90 | |
FionaLebel | 0:e77d6ddce807 | 91 | else if (volume>0.4 && volume<0.6){ |
FionaLebel | 0:e77d6ddce807 | 92 | for (int i=0; i<5;i++){ |
FionaLebel | 0:e77d6ddce807 | 93 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 94 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 95 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 96 | } |
FionaLebel | 0:e77d6ddce807 | 97 | } |
FionaLebel | 0:e77d6ddce807 | 98 | |
FionaLebel | 0:e77d6ddce807 | 99 | else if (volume>0.6 && volume<0.8){ |
FionaLebel | 0:e77d6ddce807 | 100 | for (int i=0; i<6;i++){ |
FionaLebel | 0:e77d6ddce807 | 101 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 102 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 103 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 104 | } |
FionaLebel | 0:e77d6ddce807 | 105 | |
FionaLebel | 0:e77d6ddce807 | 106 | } |
FionaLebel | 0:e77d6ddce807 | 107 | else if (volume>0.8 && volume<0.9){ |
FionaLebel | 0:e77d6ddce807 | 108 | for (int i=0; i<7;i++){ |
FionaLebel | 0:e77d6ddce807 | 109 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 110 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 111 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 112 | } |
FionaLebel | 0:e77d6ddce807 | 113 | |
FionaLebel | 0:e77d6ddce807 | 114 | } |
FionaLebel | 0:e77d6ddce807 | 115 | else if (volume>0.9 && volume<1){ |
FionaLebel | 0:e77d6ddce807 | 116 | for (int i=0; i<9;i++){ |
FionaLebel | 0:e77d6ddce807 | 117 | lcd.SetBackColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 118 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 119 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 120 | } |
FionaLebel | 0:e77d6ddce807 | 121 | |
FionaLebel | 0:e77d6ddce807 | 122 | |
FionaLebel | 0:e77d6ddce807 | 123 | } |
FionaLebel | 0:e77d6ddce807 | 124 | else if(volume==1.0){ |
FionaLebel | 0:e77d6ddce807 | 125 | lcd.Clear(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 126 | lcd.SetBackColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 127 | lcd.SetTextColor(LCD_COLOR_LIGHTMAGENTA); |
FionaLebel | 0:e77d6ddce807 | 128 | lcd.DisplayStringAt(0, LINE(5),(uint8_t *) "VOUS AVEZ TUE ARTHUR BRAVO", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 129 | wait(5); |
FionaLebel | 0:e77d6ddce807 | 130 | etat =2; |
FionaLebel | 0:e77d6ddce807 | 131 | } |
FionaLebel | 0:e77d6ddce807 | 132 | |
FionaLebel | 0:e77d6ddce807 | 133 | break; |
FionaLebel | 0:e77d6ddce807 | 134 | |
FionaLebel | 0:e77d6ddce807 | 135 | case 2: |
FionaLebel | 0:e77d6ddce807 | 136 | volume = in.read(); |
FionaLebel | 0:e77d6ddce807 | 137 | pc.printf("Volume ana = %f \r\n", volume); |
FionaLebel | 0:e77d6ddce807 | 138 | wait(0.3); |
FionaLebel | 0:e77d6ddce807 | 139 | sprintf(volumeChar, "%0.4f", volume); |
FionaLebel | 0:e77d6ddce807 | 140 | lcd.Clear(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 141 | lcd.SetBackColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 142 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 143 | lcd.DisplayStringAt(0, LINE(10), (uint8_t *)volumeChar, RIGHT_MODE); |
FionaLebel | 0:e77d6ddce807 | 144 | |
FionaLebel | 0:e77d6ddce807 | 145 | |
FionaLebel | 0:e77d6ddce807 | 146 | |
FionaLebel | 0:e77d6ddce807 | 147 | lcd.SetBackColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 148 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 149 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Tuer Bastien", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 150 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 151 | lcd.SetTextColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 152 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"Bastien", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 153 | |
FionaLebel | 0:e77d6ddce807 | 154 | if (volume>0.00 && volume<0.05) |
FionaLebel | 0:e77d6ddce807 | 155 | { |
FionaLebel | 0:e77d6ddce807 | 156 | for (int i=0; i<1;i++){ |
FionaLebel | 0:e77d6ddce807 | 157 | |
FionaLebel | 0:e77d6ddce807 | 158 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 159 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 160 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 161 | } |
FionaLebel | 0:e77d6ddce807 | 162 | } |
FionaLebel | 0:e77d6ddce807 | 163 | else if (volume>0.05 && volume<0.08){ |
FionaLebel | 0:e77d6ddce807 | 164 | for (int i=0; i<2;i++){ |
FionaLebel | 0:e77d6ddce807 | 165 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 166 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 167 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 168 | } |
FionaLebel | 0:e77d6ddce807 | 169 | } |
FionaLebel | 0:e77d6ddce807 | 170 | else if (volume>0.08 && volume<0.1){ |
FionaLebel | 0:e77d6ddce807 | 171 | for (int i=0; i<3;i++){ |
FionaLebel | 0:e77d6ddce807 | 172 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 173 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 174 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 175 | } |
FionaLebel | 0:e77d6ddce807 | 176 | } |
FionaLebel | 0:e77d6ddce807 | 177 | else if (volume>0.2 && volume<0.4){ |
FionaLebel | 0:e77d6ddce807 | 178 | for (int i=0; i<4;i++){ |
FionaLebel | 0:e77d6ddce807 | 179 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 180 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 181 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 182 | } |
FionaLebel | 0:e77d6ddce807 | 183 | } |
FionaLebel | 0:e77d6ddce807 | 184 | |
FionaLebel | 0:e77d6ddce807 | 185 | else if (volume>0.4 && volume<0.6){ |
FionaLebel | 0:e77d6ddce807 | 186 | for (int i=0; i<5;i++){ |
FionaLebel | 0:e77d6ddce807 | 187 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 188 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 189 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 190 | } |
FionaLebel | 0:e77d6ddce807 | 191 | } |
FionaLebel | 0:e77d6ddce807 | 192 | |
FionaLebel | 0:e77d6ddce807 | 193 | else if (volume>0.6 && volume<0.8){ |
FionaLebel | 0:e77d6ddce807 | 194 | for (int i=0; i<6;i++){ |
FionaLebel | 0:e77d6ddce807 | 195 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 196 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 197 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 198 | } |
FionaLebel | 0:e77d6ddce807 | 199 | |
FionaLebel | 0:e77d6ddce807 | 200 | } |
FionaLebel | 0:e77d6ddce807 | 201 | else if (volume>0.8 && volume<0.9){ |
FionaLebel | 0:e77d6ddce807 | 202 | for (int i=0; i<7;i++){ |
FionaLebel | 0:e77d6ddce807 | 203 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 204 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 205 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 206 | } |
FionaLebel | 0:e77d6ddce807 | 207 | |
FionaLebel | 0:e77d6ddce807 | 208 | } |
FionaLebel | 0:e77d6ddce807 | 209 | else if (volume>0.9 && volume<1){ |
FionaLebel | 0:e77d6ddce807 | 210 | for (int i=0; i<9;i++){ |
FionaLebel | 0:e77d6ddce807 | 211 | lcd.SetBackColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 212 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 213 | lcd.DisplayStringAt(0, LINE(10-i), (uint8_t *)" ", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 214 | } |
FionaLebel | 0:e77d6ddce807 | 215 | |
FionaLebel | 0:e77d6ddce807 | 216 | |
FionaLebel | 0:e77d6ddce807 | 217 | } |
FionaLebel | 0:e77d6ddce807 | 218 | else if(volume==1.0){ |
FionaLebel | 0:e77d6ddce807 | 219 | lcd.Clear(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 220 | lcd.SetBackColor(LCD_COLOR_WHITE); |
FionaLebel | 0:e77d6ddce807 | 221 | lcd.SetTextColor(LCD_COLOR_RED); |
FionaLebel | 0:e77d6ddce807 | 222 | lcd.DisplayStringAt(0, LINE(5),(uint8_t *) "VOUS AVEZ TUE BASTIEN BRAVO", CENTER_MODE); |
FionaLebel | 0:e77d6ddce807 | 223 | wait(5); |
FionaLebel | 0:e77d6ddce807 | 224 | } |
FionaLebel | 0:e77d6ddce807 | 225 | break; |
FionaLebel | 0:e77d6ddce807 | 226 | |
FionaLebel | 0:e77d6ddce807 | 227 | |
FionaLebel | 0:e77d6ddce807 | 228 | } |
FionaLebel | 0:e77d6ddce807 | 229 | |
FionaLebel | 0:e77d6ddce807 | 230 | |
FionaLebel | 0:e77d6ddce807 | 231 | } |
FionaLebel | 0:e77d6ddce807 | 232 | |
FionaLebel | 0:e77d6ddce807 | 233 | } |
FionaLebel | 0:e77d6ddce807 | 234 | } |
FionaLebel | 0:e77d6ddce807 | 235 | |
FionaLebel | 0:e77d6ddce807 | 236 | } |