![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
programme à analyser pendant le cours théorique
Dependencies: X_NUCLEO_6180XA1 mbed
Fork of 247-436-M1-S2-LAB-F302R8 by
main.cpp@4:8c64f7896cbf, 2018-02-07 (annotated)
- Committer:
- YROY2004
- Date:
- Wed Feb 07 01:55:59 2018 +0000
- Revision:
- 4:8c64f7896cbf
- Parent:
- 3:b115775ee641
version fonctionnelle du laboratoire M1-S2-LAB-A sauvegard?e juste avant la p?riode de th?orie M2-S3-TH
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
YROY2004 | 0:37eb67c8ebd0 | 1 | #include "mbed.h" |
YROY2004 | 1:90cc91745ff7 | 2 | #include "XNucleo6180XA1.h" |
YROY2004 | 1:90cc91745ff7 | 3 | #include <string.h> |
YROY2004 | 1:90cc91745ff7 | 4 | #include <stdlib.h> |
YROY2004 | 1:90cc91745ff7 | 5 | #include <stdio.h> |
YROY2004 | 1:90cc91745ff7 | 6 | #include <assert.h> |
YROY2004 | 1:90cc91745ff7 | 7 | |
YROY2004 | 3:b115775ee641 | 8 | //BRANCHEMENTS: |
YROY2004 | 3:b115775ee641 | 9 | // Ni le Nucleo ni le vl6180x n'ont de "pullup" pour supporter le I2C. |
YROY2004 | 3:b115775ee641 | 10 | // Il faut ajouter des résistances de 4.7k |
YROY2004 | 3:b115775ee641 | 11 | // Le vl6180x contient un microcontôleur qui doit être remis à zéro au démarrage |
YROY2004 | 3:b115775ee641 | 12 | // Cette remise à zéro se fait en mettant temporairement la broche gpio à la masse. |
YROY2004 | 3:b115775ee641 | 13 | // Un schéma de connexion sommaire suit: |
YROY2004 | 3:b115775ee641 | 14 | // __________ |
YROY2004 | 3:b115775ee641 | 15 | // | VL6180X | |
YROY2004 | 3:b115775ee641 | 16 | // | | |
YROY2004 | 3:b115775ee641 | 17 | // scl sda gnd |
YROY2004 | 3:b115775ee641 | 18 | // nc gpio 3.3v |
YROY2004 | 3:b115775ee641 | 19 | // |__________| |
YROY2004 | 3:b115775ee641 | 20 | |
YROY2004 | 3:b115775ee641 | 21 | // _______________________ |
YROY2004 | 3:b115775ee641 | 22 | // | | |
YROY2004 | 3:b115775ee641 | 23 | // | NUCLEO f302r8 | |
YROY2004 | 3:b115775ee641 | 24 | // | oo oo | |
YROY2004 | 3:b115775ee641 | 25 | // | oo scl-oo | |
YROY2004 | 3:b115775ee641 | 26 | // | oo sda-oo | |
YROY2004 | 3:b115775ee641 | 27 | // | oo oo | |
YROY2004 | 3:b115775ee641 | 28 | // | oo gnd-oo | |
YROY2004 | 3:b115775ee641 | 29 | // | oo oo | |
YROY2004 | 3:b115775ee641 | 30 | // | oo gpio-oo | |
YROY2004 | 3:b115775ee641 | 31 | // | oo-3.3V oo | |
YROY2004 | 4:8c64f7896cbf | 32 | // ... |
YROY2004 | 3:b115775ee641 | 33 | // | oo oo | |
YROY2004 | 3:b115775ee641 | 34 | // | cn7 cn10 | |
YROY2004 | 3:b115775ee641 | 35 | // |_______________________| |
YROY2004 | 3:b115775ee641 | 36 | |
YROY2004 | 3:b115775ee641 | 37 | // connexions: |
YROY2004 | 3:b115775ee641 | 38 | // vl6180x.3.3v <------> nucleo.3.3V |
YROY2004 | 3:b115775ee641 | 39 | // Vl6180x.scl <--------> nucleo.scl <-----> 4.7k <------> 3.3v (pullup requise) |
YROY2004 | 3:b115775ee641 | 40 | // Vl6180x.sda <--------> nucleo.sda <-----> 4.7k <------> 3.3v (pullup requise) |
YROY2004 | 3:b115775ee641 | 41 | // VL6180X.gpio <-------> nucleo.gpio (requis pour faire un "reset" du vl6180x au début) |
YROY2004 | 3:b115775ee641 | 42 | |
YROY2004 | 3:b115775ee641 | 43 | |
YROY2004 | 0:37eb67c8ebd0 | 44 | //options de compilation |
YROY2004 | 0:37eb67c8ebd0 | 45 | //#define TEST |
YROY2004 | 0:37eb67c8ebd0 | 46 | |
YROY2004 | 0:37eb67c8ebd0 | 47 | //intégration |
YROY2004 | 0:37eb67c8ebd0 | 48 | // représentation |
YROY2004 | 0:37eb67c8ebd0 | 49 | // G: gauche, D: droit, H: haut, B: bas |
YROY2004 | 0:37eb67c8ebd0 | 50 | // E: écran, T: touch |
YROY2004 | 0:37eb67c8ebd0 | 51 | // Ecran: |
YROY2004 | 0:37eb67c8ebd0 | 52 | // (XE_G,YE_H) ___ (XE_D,YE_H) |
YROY2004 | 0:37eb67c8ebd0 | 53 | // | | |
YROY2004 | 0:37eb67c8ebd0 | 54 | // | | |
YROY2004 | 0:37eb67c8ebd0 | 55 | // (XE_G,YE_B) |___| (XE_G,YE_B) |
YROY2004 | 0:37eb67c8ebd0 | 56 | // |
YROY2004 | 0:37eb67c8ebd0 | 57 | // représentation du touch |
YROY2004 | 0:37eb67c8ebd0 | 58 | // (XT_G,YT_H) ___ (XT_D,YT_H) |
YROY2004 | 0:37eb67c8ebd0 | 59 | // | | |
YROY2004 | 0:37eb67c8ebd0 | 60 | // | | |
YROY2004 | 0:37eb67c8ebd0 | 61 | // (XT_G,YT_B) |___| (XT_G,YT_B) |
YROY2004 | 0:37eb67c8ebd0 | 62 | |
YROY2004 | 0:37eb67c8ebd0 | 63 | // équations pour conversion |
YROY2004 | 0:37eb67c8ebd0 | 64 | // XT: x touch lu, YT: y touch lu, XE: x ecran, YE: y ecran |
YROY2004 | 0:37eb67c8ebd0 | 65 | // XE = (XE_D - XE_G)/(XT_D - XT_G)*(XT - XT_G) + XE_G |
YROY2004 | 0:37eb67c8ebd0 | 66 | // YE = (YE_H - YE_B)/(YT_H - YT_B)*(YT - YT_G) + YE_G |
YROY2004 | 0:37eb67c8ebd0 | 67 | |
YROY2004 | 0:37eb67c8ebd0 | 68 | // l'application présente 3 boutons et une surface de dessin |
YROY2004 | 0:37eb67c8ebd0 | 69 | // bouton noir: effacer |
YROY2004 | 0:37eb67c8ebd0 | 70 | // bouton rouge: dessiner en rouge |
YROY2004 | 0:37eb67c8ebd0 | 71 | // bouton blanc: dessiner en blanc |
YROY2004 | 0:37eb67c8ebd0 | 72 | |
YROY2004 | 0:37eb67c8ebd0 | 73 | //touchscreen |
YROY2004 | 0:37eb67c8ebd0 | 74 | #define IDLE 1 |
YROY2004 | 0:37eb67c8ebd0 | 75 | #define ACTIVE 0 |
YROY2004 | 0:37eb67c8ebd0 | 76 | #define COMMAND 0 |
YROY2004 | 0:37eb67c8ebd0 | 77 | #define DATA 1 |
YROY2004 | 0:37eb67c8ebd0 | 78 | |
YROY2004 | 0:37eb67c8ebd0 | 79 | #define YP A3 |
YROY2004 | 0:37eb67c8ebd0 | 80 | #define XM A2 |
YROY2004 | 0:37eb67c8ebd0 | 81 | #define YM D9 |
YROY2004 | 0:37eb67c8ebd0 | 82 | #define XP D8 |
YROY2004 | 0:37eb67c8ebd0 | 83 | |
YROY2004 | 0:37eb67c8ebd0 | 84 | #define TOUCH_SEUIL_HAUT 3000 |
YROY2004 | 0:37eb67c8ebd0 | 85 | #define TOUCH_SEUIL_BAS 16 |
YROY2004 | 0:37eb67c8ebd0 | 86 | |
YROY2004 | 0:37eb67c8ebd0 | 87 | |
YROY2004 | 0:37eb67c8ebd0 | 88 | #define TFTWIDTH 240 |
YROY2004 | 0:37eb67c8ebd0 | 89 | #define TFTHEIGHT 320 |
YROY2004 | 0:37eb67c8ebd0 | 90 | |
YROY2004 | 0:37eb67c8ebd0 | 91 | #define LCD_CS A3 |
YROY2004 | 0:37eb67c8ebd0 | 92 | #define LCD_CD A2 |
YROY2004 | 0:37eb67c8ebd0 | 93 | #define LCD_WR A1 |
YROY2004 | 0:37eb67c8ebd0 | 94 | #define LCD_RD A0 |
YROY2004 | 0:37eb67c8ebd0 | 95 | #define LCD_RESET A4 |
YROY2004 | 0:37eb67c8ebd0 | 96 | |
YROY2004 | 0:37eb67c8ebd0 | 97 | #define TFT_NORTH SPFD5408_MADCTL_MY | SPFD5408_MADCTL_BGR |
YROY2004 | 0:37eb67c8ebd0 | 98 | |
YROY2004 | 0:37eb67c8ebd0 | 99 | #define BLACK 0x0000 |
YROY2004 | 0:37eb67c8ebd0 | 100 | #define BLUE 0x001F |
YROY2004 | 0:37eb67c8ebd0 | 101 | #define RED 0xF800 |
YROY2004 | 0:37eb67c8ebd0 | 102 | #define GREEN 0x07E0 |
YROY2004 | 0:37eb67c8ebd0 | 103 | #define CYAN 0x07FF |
YROY2004 | 0:37eb67c8ebd0 | 104 | #define MAGENTA 0xF81F |
YROY2004 | 0:37eb67c8ebd0 | 105 | #define YELLOW 0xFFE0 |
YROY2004 | 0:37eb67c8ebd0 | 106 | #define WHITE 0xFFFF |
YROY2004 | 0:37eb67c8ebd0 | 107 | |
YROY2004 | 0:37eb67c8ebd0 | 108 | #define SPFD5408_SOFTRESET 0x01 |
YROY2004 | 0:37eb67c8ebd0 | 109 | #define SPFD5408_SLEEPOUT 0x11 |
YROY2004 | 0:37eb67c8ebd0 | 110 | |
YROY2004 | 0:37eb67c8ebd0 | 111 | #define SPFD5408_DISPLAYON 0x29 |
YROY2004 | 0:37eb67c8ebd0 | 112 | #define SPFD5408_COLADDRSET 0x2A |
YROY2004 | 0:37eb67c8ebd0 | 113 | #define SPFD5408_PAGEADDRSET 0x2B |
YROY2004 | 0:37eb67c8ebd0 | 114 | #define SPFD5408_MEMORYWRITE 0x2C |
YROY2004 | 0:37eb67c8ebd0 | 115 | #define SPFD5408_PIXELFORMAT 0x3A |
YROY2004 | 0:37eb67c8ebd0 | 116 | #define SPFD5408_FRAMECONTROL 0xB1 |
YROY2004 | 0:37eb67c8ebd0 | 117 | #define SPFD5408_MEMCONTROL 0x36 |
YROY2004 | 0:37eb67c8ebd0 | 118 | #define SPFD5408_MADCTL_MY 0x80 |
YROY2004 | 0:37eb67c8ebd0 | 119 | #define SPFD5408_MADCTL_BGR 0x08 |
YROY2004 | 0:37eb67c8ebd0 | 120 | |
YROY2004 | 0:37eb67c8ebd0 | 121 | #define IDLE 1 |
YROY2004 | 0:37eb67c8ebd0 | 122 | #define ACTIVE 0 |
YROY2004 | 0:37eb67c8ebd0 | 123 | #define COMMAND 0 |
YROY2004 | 0:37eb67c8ebd0 | 124 | #define DATA 1 |
YROY2004 | 0:37eb67c8ebd0 | 125 | |
YROY2004 | 0:37eb67c8ebd0 | 126 | #define TEMPS 40 |
YROY2004 | 0:37eb67c8ebd0 | 127 | |
YROY2004 | 1:90cc91745ff7 | 128 | //VL6180X |
YROY2004 | 1:90cc91745ff7 | 129 | #define VL6180X_I2C_SDA D14 |
YROY2004 | 1:90cc91745ff7 | 130 | #define VL6180X_I2C_SCL D15 |
YROY2004 | 1:90cc91745ff7 | 131 | |
YROY2004 | 1:90cc91745ff7 | 132 | #define VL6180X_I2C_SDA_MODE PullUp |
YROY2004 | 1:90cc91745ff7 | 133 | #define VL6180X_I2C_SCL_MODE PullUp |
YROY2004 | 1:90cc91745ff7 | 134 | |
YROY2004 | 0:37eb67c8ebd0 | 135 | |
YROY2004 | 0:37eb67c8ebd0 | 136 | //integration |
YROY2004 | 0:37eb67c8ebd0 | 137 | |
YROY2004 | 0:37eb67c8ebd0 | 138 | #define XE_G 0 |
YROY2004 | 0:37eb67c8ebd0 | 139 | #define XE_D 240 |
YROY2004 | 0:37eb67c8ebd0 | 140 | #define YE_H 0 |
YROY2004 | 0:37eb67c8ebd0 | 141 | #define YE_B 320 |
YROY2004 | 0:37eb67c8ebd0 | 142 | #define XT_G 3700 |
YROY2004 | 0:37eb67c8ebd0 | 143 | #define XT_D 600 |
YROY2004 | 0:37eb67c8ebd0 | 144 | #define YT_H 600 |
YROY2004 | 0:37eb67c8ebd0 | 145 | #define YT_B 3700 |
YROY2004 | 0:37eb67c8ebd0 | 146 | |
YROY2004 | 1:90cc91745ff7 | 147 | #define MODE_COULEUR_CONSTANTE 0 |
YROY2004 | 1:90cc91745ff7 | 148 | #define MODE_COULEUR_VARIABLE 1 |
YROY2004 | 0:37eb67c8ebd0 | 149 | //definitions de variables |
YROY2004 | 0:37eb67c8ebd0 | 150 | //touchscreen |
YROY2004 | 0:37eb67c8ebd0 | 151 | uint16_t x; |
YROY2004 | 0:37eb67c8ebd0 | 152 | uint16_t y; |
YROY2004 | 0:37eb67c8ebd0 | 153 | uint16_t z; |
YROY2004 | 0:37eb67c8ebd0 | 154 | |
YROY2004 | 0:37eb67c8ebd0 | 155 | //tftspfd5408 |
YROY2004 | 0:37eb67c8ebd0 | 156 | DigitalOut pinRD(LCD_RD); //PA_0; |
YROY2004 | 0:37eb67c8ebd0 | 157 | DigitalOut pinWR(LCD_WR); //PA_1; |
YROY2004 | 0:37eb67c8ebd0 | 158 | DigitalOut pinCD(LCD_CD); //PA_4; |
YROY2004 | 0:37eb67c8ebd0 | 159 | DigitalOut pinCS(LCD_CS); //PB_0; |
YROY2004 | 0:37eb67c8ebd0 | 160 | DigitalOut pinReset(LCD_RESET); //PC_1; |
YROY2004 | 0:37eb67c8ebd0 | 161 | |
YROY2004 | 1:90cc91745ff7 | 162 | //VL6180X |
YROY2004 | 1:90cc91745ff7 | 163 | DigitalOut enableVL6180X(D12); |
YROY2004 | 1:90cc91745ff7 | 164 | static XNucleo6180XA1 *board = NULL; |
YROY2004 | 1:90cc91745ff7 | 165 | uint32_t dist; |
YROY2004 | 1:90cc91745ff7 | 166 | |
YROY2004 | 0:37eb67c8ebd0 | 167 | //integration |
YROY2004 | 1:90cc91745ff7 | 168 | #ifdef TEST |
YROY2004 | 1:90cc91745ff7 | 169 | Serial pc(USBTX, USBRX, 9600); //SERIAL_TX, SERIAL_RX, 9600); |
YROY2004 | 1:90cc91745ff7 | 170 | #endif |
YROY2004 | 3:b115775ee641 | 171 | |
YROY2004 | 0:37eb67c8ebd0 | 172 | DigitalOut myled(LED1); |
YROY2004 | 0:37eb67c8ebd0 | 173 | uint16_t couleurVariable; |
YROY2004 | 0:37eb67c8ebd0 | 174 | uint16_t tableDeCouleur[]= |
YROY2004 | 0:37eb67c8ebd0 | 175 | { |
YROY2004 | 1:90cc91745ff7 | 176 | BLACK, RED, YELLOW, GREEN, CYAN, BLUE, MAGENTA, WHITE |
YROY2004 | 0:37eb67c8ebd0 | 177 | }; |
YROY2004 | 0:37eb67c8ebd0 | 178 | |
YROY2004 | 0:37eb67c8ebd0 | 179 | |
YROY2004 | 0:37eb67c8ebd0 | 180 | //declarations de fonctions |
YROY2004 | 0:37eb67c8ebd0 | 181 | //touchscreen |
YROY2004 | 0:37eb67c8ebd0 | 182 | void restoreXY(void); |
YROY2004 | 0:37eb67c8ebd0 | 183 | uint16_t readTouchX(void); |
YROY2004 | 0:37eb67c8ebd0 | 184 | uint16_t readTouchY(void); |
YROY2004 | 0:37eb67c8ebd0 | 185 | uint16_t detectTouch(void); |
YROY2004 | 0:37eb67c8ebd0 | 186 | |
YROY2004 | 0:37eb67c8ebd0 | 187 | //tftspfd5408 |
YROY2004 | 0:37eb67c8ebd0 | 188 | void WriteCommand(uint8_t c); |
YROY2004 | 0:37eb67c8ebd0 | 189 | void WriteData(uint8_t d); |
YROY2004 | 0:37eb67c8ebd0 | 190 | void begin(void); |
YROY2004 | 0:37eb67c8ebd0 | 191 | void setAddrWindow(int x1, int y1, int x2, int y2); |
YROY2004 | 0:37eb67c8ebd0 | 192 | void fillRect(uint16_t x1, uint16_t y1, uint16_t w, uint16_t h, uint16_t fillcolor); |
YROY2004 | 0:37eb67c8ebd0 | 193 | |
YROY2004 | 0:37eb67c8ebd0 | 194 | //definitions de fonctions |
YROY2004 | 0:37eb67c8ebd0 | 195 | //touchscreen |
YROY2004 | 0:37eb67c8ebd0 | 196 | void restoreXY(void) |
YROY2004 | 0:37eb67c8ebd0 | 197 | { |
YROY2004 | 0:37eb67c8ebd0 | 198 | DigitalOut pinXP(XP); |
YROY2004 | 0:37eb67c8ebd0 | 199 | DigitalOut pinXM(XM); |
YROY2004 | 0:37eb67c8ebd0 | 200 | DigitalOut pinYP(YP); |
YROY2004 | 0:37eb67c8ebd0 | 201 | DigitalOut pinYM(YM); |
YROY2004 | 0:37eb67c8ebd0 | 202 | |
YROY2004 | 0:37eb67c8ebd0 | 203 | pinXP = 1; |
YROY2004 | 0:37eb67c8ebd0 | 204 | pinXM = 1; |
YROY2004 | 0:37eb67c8ebd0 | 205 | pinYP = 1; |
YROY2004 | 0:37eb67c8ebd0 | 206 | pinYM = 1; |
YROY2004 | 0:37eb67c8ebd0 | 207 | wait_ms(1); |
YROY2004 | 0:37eb67c8ebd0 | 208 | } |
YROY2004 | 0:37eb67c8ebd0 | 209 | |
YROY2004 | 0:37eb67c8ebd0 | 210 | uint16_t readTouchX(void) |
YROY2004 | 0:37eb67c8ebd0 | 211 | { |
YROY2004 | 0:37eb67c8ebd0 | 212 | uint16_t value; |
YROY2004 | 0:37eb67c8ebd0 | 213 | DigitalOut pinXP(XP); |
YROY2004 | 0:37eb67c8ebd0 | 214 | DigitalOut pinXM(XM); |
YROY2004 | 0:37eb67c8ebd0 | 215 | AnalogIn pinYP(YP); |
YROY2004 | 0:37eb67c8ebd0 | 216 | DigitalIn pinYM(YM); |
YROY2004 | 0:37eb67c8ebd0 | 217 | |
YROY2004 | 0:37eb67c8ebd0 | 218 | pinXP = 0; |
YROY2004 | 0:37eb67c8ebd0 | 219 | pinXM = 1; |
YROY2004 | 0:37eb67c8ebd0 | 220 | pinYM.mode(OpenDrain); |
YROY2004 | 0:37eb67c8ebd0 | 221 | value = pinYP.read_u16() >> 4; |
YROY2004 | 0:37eb67c8ebd0 | 222 | restoreXY(); |
YROY2004 | 0:37eb67c8ebd0 | 223 | return value; |
YROY2004 | 0:37eb67c8ebd0 | 224 | } |
YROY2004 | 0:37eb67c8ebd0 | 225 | |
YROY2004 | 0:37eb67c8ebd0 | 226 | uint16_t readTouchY(void) |
YROY2004 | 0:37eb67c8ebd0 | 227 | { |
YROY2004 | 0:37eb67c8ebd0 | 228 | uint16_t value; |
YROY2004 | 0:37eb67c8ebd0 | 229 | DigitalIn pinXP(XP); |
YROY2004 | 0:37eb67c8ebd0 | 230 | AnalogIn pinXM(XM); |
YROY2004 | 0:37eb67c8ebd0 | 231 | DigitalOut pinYP(YP); |
YROY2004 | 0:37eb67c8ebd0 | 232 | DigitalOut pinYM(YM); |
YROY2004 | 0:37eb67c8ebd0 | 233 | |
YROY2004 | 0:37eb67c8ebd0 | 234 | pinYP = 1; |
YROY2004 | 0:37eb67c8ebd0 | 235 | pinYM = 0; |
YROY2004 | 0:37eb67c8ebd0 | 236 | pinXP.mode(OpenDrain); |
YROY2004 | 0:37eb67c8ebd0 | 237 | value = pinXM.read_u16() >> 4; |
YROY2004 | 0:37eb67c8ebd0 | 238 | restoreXY(); |
YROY2004 | 0:37eb67c8ebd0 | 239 | return value; |
YROY2004 | 0:37eb67c8ebd0 | 240 | } |
YROY2004 | 0:37eb67c8ebd0 | 241 | |
YROY2004 | 0:37eb67c8ebd0 | 242 | uint16_t detectTouch(void) |
YROY2004 | 0:37eb67c8ebd0 | 243 | { |
YROY2004 | 0:37eb67c8ebd0 | 244 | uint16_t firstValue; |
YROY2004 | 0:37eb67c8ebd0 | 245 | uint16_t secondValue; |
YROY2004 | 0:37eb67c8ebd0 | 246 | DigitalOut pinXP(XP); |
YROY2004 | 0:37eb67c8ebd0 | 247 | DigitalOut pinXM(XM); |
YROY2004 | 0:37eb67c8ebd0 | 248 | AnalogIn pinYP(YP); |
YROY2004 | 0:37eb67c8ebd0 | 249 | DigitalIn pinYM(YM); |
YROY2004 | 0:37eb67c8ebd0 | 250 | |
YROY2004 | 0:37eb67c8ebd0 | 251 | pinYM.mode(OpenDrain); |
YROY2004 | 0:37eb67c8ebd0 | 252 | pinXP = 1; |
YROY2004 | 0:37eb67c8ebd0 | 253 | pinXM = 0; |
YROY2004 | 0:37eb67c8ebd0 | 254 | firstValue = pinYP.read_u16() >> 4; |
YROY2004 | 0:37eb67c8ebd0 | 255 | |
YROY2004 | 0:37eb67c8ebd0 | 256 | pinXP = 0; |
YROY2004 | 0:37eb67c8ebd0 | 257 | pinXM = 1; |
YROY2004 | 0:37eb67c8ebd0 | 258 | secondValue = pinYP.read_u16() >> 4; |
YROY2004 | 0:37eb67c8ebd0 | 259 | |
YROY2004 | 0:37eb67c8ebd0 | 260 | restoreXY(); |
YROY2004 | 0:37eb67c8ebd0 | 261 | |
YROY2004 | 0:37eb67c8ebd0 | 262 | if (secondValue > firstValue) |
YROY2004 | 0:37eb67c8ebd0 | 263 | { |
YROY2004 | 0:37eb67c8ebd0 | 264 | return firstValue; |
YROY2004 | 0:37eb67c8ebd0 | 265 | } |
YROY2004 | 0:37eb67c8ebd0 | 266 | return secondValue; |
YROY2004 | 0:37eb67c8ebd0 | 267 | } |
YROY2004 | 0:37eb67c8ebd0 | 268 | |
YROY2004 | 0:37eb67c8ebd0 | 269 | //tftspfd5408 |
YROY2004 | 0:37eb67c8ebd0 | 270 | void WriteCommand(uint8_t c) |
YROY2004 | 0:37eb67c8ebd0 | 271 | { |
YROY2004 | 0:37eb67c8ebd0 | 272 | BusInOut portTFT(D8, D9, D2, D3, D4, D5, D6, D7); |
YROY2004 | 0:37eb67c8ebd0 | 273 | portTFT.output(); |
YROY2004 | 0:37eb67c8ebd0 | 274 | pinCD = COMMAND; |
YROY2004 | 0:37eb67c8ebd0 | 275 | pinWR = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 276 | portTFT = c; |
YROY2004 | 0:37eb67c8ebd0 | 277 | pinWR = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 278 | } |
YROY2004 | 0:37eb67c8ebd0 | 279 | |
YROY2004 | 0:37eb67c8ebd0 | 280 | void WriteData(uint8_t d) |
YROY2004 | 0:37eb67c8ebd0 | 281 | { |
YROY2004 | 0:37eb67c8ebd0 | 282 | BusInOut portTFT(D8, D9, D2, D3, D4, D5, D6, D7); |
YROY2004 | 0:37eb67c8ebd0 | 283 | portTFT.output(); |
YROY2004 | 0:37eb67c8ebd0 | 284 | pinCD = DATA; |
YROY2004 | 0:37eb67c8ebd0 | 285 | pinWR = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 286 | portTFT = d; |
YROY2004 | 0:37eb67c8ebd0 | 287 | pinWR = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 288 | } |
YROY2004 | 0:37eb67c8ebd0 | 289 | |
YROY2004 | 0:37eb67c8ebd0 | 290 | void begin(void) |
YROY2004 | 0:37eb67c8ebd0 | 291 | { |
YROY2004 | 0:37eb67c8ebd0 | 292 | pinCS = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 293 | pinCD = DATA; |
YROY2004 | 0:37eb67c8ebd0 | 294 | pinWR = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 295 | pinRD = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 296 | |
YROY2004 | 0:37eb67c8ebd0 | 297 | pinReset = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 298 | wait_ms(100); |
YROY2004 | 0:37eb67c8ebd0 | 299 | pinReset = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 300 | wait_ms(100); |
YROY2004 | 0:37eb67c8ebd0 | 301 | pinCS = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 302 | |
YROY2004 | 0:37eb67c8ebd0 | 303 | WriteCommand(SPFD5408_SOFTRESET); |
YROY2004 | 0:37eb67c8ebd0 | 304 | WriteData(0); |
YROY2004 | 0:37eb67c8ebd0 | 305 | wait_ms(50); |
YROY2004 | 0:37eb67c8ebd0 | 306 | |
YROY2004 | 0:37eb67c8ebd0 | 307 | WriteCommand(SPFD5408_MEMCONTROL); |
YROY2004 | 0:37eb67c8ebd0 | 308 | WriteData(TFT_NORTH); //(SPFD5408_MADCTL_MY | SPFD5408_MADCTL_BGR); |
YROY2004 | 0:37eb67c8ebd0 | 309 | |
YROY2004 | 0:37eb67c8ebd0 | 310 | WriteCommand(SPFD5408_PIXELFORMAT); |
YROY2004 | 0:37eb67c8ebd0 | 311 | WriteData(0x55); |
YROY2004 | 0:37eb67c8ebd0 | 312 | |
YROY2004 | 0:37eb67c8ebd0 | 313 | WriteCommand(SPFD5408_FRAMECONTROL); |
YROY2004 | 0:37eb67c8ebd0 | 314 | WriteData(0x00); |
YROY2004 | 0:37eb67c8ebd0 | 315 | WriteData(0x1B); |
YROY2004 | 0:37eb67c8ebd0 | 316 | |
YROY2004 | 0:37eb67c8ebd0 | 317 | WriteCommand(SPFD5408_SLEEPOUT); |
YROY2004 | 0:37eb67c8ebd0 | 318 | WriteData(0); |
YROY2004 | 0:37eb67c8ebd0 | 319 | |
YROY2004 | 0:37eb67c8ebd0 | 320 | WriteCommand(SPFD5408_DISPLAYON); |
YROY2004 | 0:37eb67c8ebd0 | 321 | WriteData(0); |
YROY2004 | 0:37eb67c8ebd0 | 322 | } |
YROY2004 | 0:37eb67c8ebd0 | 323 | |
YROY2004 | 0:37eb67c8ebd0 | 324 | void setAddrWindow(int x1, int y1, int x2, int y2) { |
YROY2004 | 0:37eb67c8ebd0 | 325 | pinCS = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 326 | wait_us(TEMPS); |
YROY2004 | 0:37eb67c8ebd0 | 327 | WriteCommand(SPFD5408_COLADDRSET); |
YROY2004 | 0:37eb67c8ebd0 | 328 | WriteData(x1 >> 8); |
YROY2004 | 0:37eb67c8ebd0 | 329 | WriteData(x1); |
YROY2004 | 0:37eb67c8ebd0 | 330 | WriteData(x2 >> 8); |
YROY2004 | 0:37eb67c8ebd0 | 331 | WriteData(x2); |
YROY2004 | 0:37eb67c8ebd0 | 332 | wait_us(TEMPS); |
YROY2004 | 0:37eb67c8ebd0 | 333 | pinCS = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 334 | |
YROY2004 | 0:37eb67c8ebd0 | 335 | pinCS = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 336 | wait_us(TEMPS); |
YROY2004 | 0:37eb67c8ebd0 | 337 | WriteCommand(SPFD5408_PAGEADDRSET); |
YROY2004 | 0:37eb67c8ebd0 | 338 | WriteData(y1 >> 8); |
YROY2004 | 0:37eb67c8ebd0 | 339 | WriteData(y1); |
YROY2004 | 0:37eb67c8ebd0 | 340 | WriteData(y2 >> 8); |
YROY2004 | 0:37eb67c8ebd0 | 341 | WriteData(y2); |
YROY2004 | 0:37eb67c8ebd0 | 342 | pinCS = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 343 | } |
YROY2004 | 0:37eb67c8ebd0 | 344 | |
YROY2004 | 0:37eb67c8ebd0 | 345 | void fillRect(uint16_t x1, uint16_t y1, uint16_t w, uint16_t h, uint16_t fillcolor) |
YROY2004 | 0:37eb67c8ebd0 | 346 | { |
YROY2004 | 0:37eb67c8ebd0 | 347 | BusInOut portTFT(D8, D9, D2, D3, D4, D5, D6, D7); |
YROY2004 | 0:37eb67c8ebd0 | 348 | uint8_t hi, lo; |
YROY2004 | 0:37eb67c8ebd0 | 349 | uint16_t x2, y2; |
YROY2004 | 0:37eb67c8ebd0 | 350 | uint16_t i, j; |
YROY2004 | 0:37eb67c8ebd0 | 351 | |
YROY2004 | 0:37eb67c8ebd0 | 352 | portTFT.output(); |
YROY2004 | 0:37eb67c8ebd0 | 353 | |
YROY2004 | 0:37eb67c8ebd0 | 354 | x2 = x1 + w - 1; |
YROY2004 | 0:37eb67c8ebd0 | 355 | y2 = y1 + h - 1; |
YROY2004 | 0:37eb67c8ebd0 | 356 | setAddrWindow(x1, y1, x2, y2); |
YROY2004 | 0:37eb67c8ebd0 | 357 | |
YROY2004 | 0:37eb67c8ebd0 | 358 | hi = fillcolor >> 8; |
YROY2004 | 0:37eb67c8ebd0 | 359 | lo = fillcolor; |
YROY2004 | 0:37eb67c8ebd0 | 360 | |
YROY2004 | 0:37eb67c8ebd0 | 361 | pinCS = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 362 | |
YROY2004 | 0:37eb67c8ebd0 | 363 | WriteCommand(SPFD5408_MEMORYWRITE); |
YROY2004 | 0:37eb67c8ebd0 | 364 | pinCD = DATA; |
YROY2004 | 0:37eb67c8ebd0 | 365 | for (i = h; i > 0; i--) |
YROY2004 | 0:37eb67c8ebd0 | 366 | { |
YROY2004 | 0:37eb67c8ebd0 | 367 | for (j = w; j > 0; j--) |
YROY2004 | 0:37eb67c8ebd0 | 368 | |
YROY2004 | 0:37eb67c8ebd0 | 369 | { |
YROY2004 | 0:37eb67c8ebd0 | 370 | pinWR = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 371 | portTFT = hi; |
YROY2004 | 0:37eb67c8ebd0 | 372 | pinWR = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 373 | pinWR = ACTIVE; |
YROY2004 | 0:37eb67c8ebd0 | 374 | portTFT = lo; |
YROY2004 | 0:37eb67c8ebd0 | 375 | pinWR = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 376 | } |
YROY2004 | 0:37eb67c8ebd0 | 377 | } |
YROY2004 | 0:37eb67c8ebd0 | 378 | pinCS = IDLE; |
YROY2004 | 0:37eb67c8ebd0 | 379 | } |
YROY2004 | 0:37eb67c8ebd0 | 380 | |
YROY2004 | 0:37eb67c8ebd0 | 381 | //intégration |
YROY2004 | 0:37eb67c8ebd0 | 382 | |
YROY2004 | 0:37eb67c8ebd0 | 383 | int32_t conversion(int32_t x, int32_t x0, int32_t y0, int32_t x1, int32_t y1) |
YROY2004 | 0:37eb67c8ebd0 | 384 | { |
YROY2004 | 0:37eb67c8ebd0 | 385 | int32_t retour; |
YROY2004 | 0:37eb67c8ebd0 | 386 | int32_t limiteInferieure; |
YROY2004 | 0:37eb67c8ebd0 | 387 | int32_t limiteSuperieure; |
YROY2004 | 0:37eb67c8ebd0 | 388 | if (y0 < y1) |
YROY2004 | 0:37eb67c8ebd0 | 389 | { |
YROY2004 | 0:37eb67c8ebd0 | 390 | limiteInferieure = y0; |
YROY2004 | 0:37eb67c8ebd0 | 391 | limiteSuperieure = y1; |
YROY2004 | 0:37eb67c8ebd0 | 392 | } |
YROY2004 | 0:37eb67c8ebd0 | 393 | else |
YROY2004 | 0:37eb67c8ebd0 | 394 | { |
YROY2004 | 0:37eb67c8ebd0 | 395 | limiteInferieure = y1; |
YROY2004 | 0:37eb67c8ebd0 | 396 | limiteSuperieure = y0; |
YROY2004 | 0:37eb67c8ebd0 | 397 | } |
YROY2004 | 0:37eb67c8ebd0 | 398 | retour = (x - x0) * (y1 -y0) / (x1 -x0) + y0; |
YROY2004 | 0:37eb67c8ebd0 | 399 | |
YROY2004 | 0:37eb67c8ebd0 | 400 | if (retour < limiteInferieure) |
YROY2004 | 0:37eb67c8ebd0 | 401 | { |
YROY2004 | 0:37eb67c8ebd0 | 402 | return limiteInferieure; |
YROY2004 | 0:37eb67c8ebd0 | 403 | } |
YROY2004 | 0:37eb67c8ebd0 | 404 | if (retour > limiteSuperieure) |
YROY2004 | 0:37eb67c8ebd0 | 405 | { |
YROY2004 | 0:37eb67c8ebd0 | 406 | return limiteSuperieure; |
YROY2004 | 0:37eb67c8ebd0 | 407 | } |
YROY2004 | 0:37eb67c8ebd0 | 408 | return retour; |
YROY2004 | 0:37eb67c8ebd0 | 409 | }; |
YROY2004 | 0:37eb67c8ebd0 | 410 | |
YROY2004 | 0:37eb67c8ebd0 | 411 | uint16_t determineLaCouleur(void) |
YROY2004 | 0:37eb67c8ebd0 | 412 | { |
YROY2004 | 3:b115775ee641 | 413 | |
YROY2004 | 1:90cc91745ff7 | 414 | board->sensor_top->get_distance(&dist); |
YROY2004 | 1:90cc91745ff7 | 415 | if (dist > 210) //en millimetres |
YROY2004 | 1:90cc91745ff7 | 416 | { |
YROY2004 | 1:90cc91745ff7 | 417 | dist = 210; |
YROY2004 | 1:90cc91745ff7 | 418 | } |
YROY2004 | 1:90cc91745ff7 | 419 | // board->sensor_top->get_lux(&lux); |
YROY2004 | 1:90cc91745ff7 | 420 | |
YROY2004 | 1:90cc91745ff7 | 421 | return tableDeCouleur[(int)(dist/30)]; |
YROY2004 | 0:37eb67c8ebd0 | 422 | } |
YROY2004 | 0:37eb67c8ebd0 | 423 | |
YROY2004 | 0:37eb67c8ebd0 | 424 | int main() |
YROY2004 | 1:90cc91745ff7 | 425 | { |
YROY2004 | 1:90cc91745ff7 | 426 | //variables locales du touchscreen |
YROY2004 | 0:37eb67c8ebd0 | 427 | uint16_t couleur; |
YROY2004 | 1:90cc91745ff7 | 428 | |
YROY2004 | 1:90cc91745ff7 | 429 | //variables locales du tftspfd5408 |
YROY2004 | 1:90cc91745ff7 | 430 | |
YROY2004 | 1:90cc91745ff7 | 431 | //variables locales pour le VL6180X |
YROY2004 | 1:90cc91745ff7 | 432 | int status; |
YROY2004 | 1:90cc91745ff7 | 433 | uint32_t lux; |
YROY2004 | 1:90cc91745ff7 | 434 | |
YROY2004 | 1:90cc91745ff7 | 435 | DevI2C *device_i2c = new DevI2C(VL6180X_I2C_SDA, VL6180X_I2C_SCL); |
YROY2004 | 3:b115775ee641 | 436 | |
YROY2004 | 3:b115775ee641 | 437 | |
YROY2004 | 1:90cc91745ff7 | 438 | //variables locales pour l'integration |
YROY2004 | 1:90cc91745ff7 | 439 | uint32_t mode; |
YROY2004 | 1:90cc91745ff7 | 440 | |
YROY2004 | 3:b115775ee641 | 441 | |
YROY2004 | 0:37eb67c8ebd0 | 442 | //initialisation du touchscreen |
YROY2004 | 0:37eb67c8ebd0 | 443 | restoreXY(); |
YROY2004 | 0:37eb67c8ebd0 | 444 | |
YROY2004 | 0:37eb67c8ebd0 | 445 | //initialisation du tftspfd5408 |
YROY2004 | 0:37eb67c8ebd0 | 446 | begin(); |
YROY2004 | 0:37eb67c8ebd0 | 447 | |
YROY2004 | 1:90cc91745ff7 | 448 | //initialisation du VL6180X |
YROY2004 | 1:90cc91745ff7 | 449 | // printf ("Initialisation *********\n"); |
YROY2004 | 1:90cc91745ff7 | 450 | //yr |
YROY2004 | 1:90cc91745ff7 | 451 | // pin_mode(VL6180X_I2C_SDA, (PinMode)PullUp); |
YROY2004 | 1:90cc91745ff7 | 452 | // pin_mode(VL6180X_I2C_SCL, (PinMode)PullUp); |
YROY2004 | 1:90cc91745ff7 | 453 | |
YROY2004 | 1:90cc91745ff7 | 454 | enableVL6180X = 1; |
YROY2004 | 1:90cc91745ff7 | 455 | wait_ms(1); |
YROY2004 | 1:90cc91745ff7 | 456 | enableVL6180X = 0; |
YROY2004 | 1:90cc91745ff7 | 457 | wait_ms(1); |
YROY2004 | 1:90cc91745ff7 | 458 | enableVL6180X = 1; |
YROY2004 | 1:90cc91745ff7 | 459 | wait_ms(1); |
YROY2004 | 1:90cc91745ff7 | 460 | |
YROY2004 | 1:90cc91745ff7 | 461 | /* Creates the 6180XA1 expansion board singleton obj. */ |
YROY2004 | 1:90cc91745ff7 | 462 | board = XNucleo6180XA1::instance(device_i2c, D11, D10, D13, D2); |
YROY2004 | 1:90cc91745ff7 | 463 | |
YROY2004 | 1:90cc91745ff7 | 464 | /* Initializes the 6180XA1 expansion board with default values. */ |
YROY2004 | 1:90cc91745ff7 | 465 | status = board->init_board(); |
YROY2004 | 1:90cc91745ff7 | 466 | if (status) { |
YROY2004 | 1:90cc91745ff7 | 467 | printf("Failed to init board!\n\r"); |
YROY2004 | 1:90cc91745ff7 | 468 | return 0; |
YROY2004 | 1:90cc91745ff7 | 469 | } |
YROY2004 | 1:90cc91745ff7 | 470 | |
YROY2004 | 0:37eb67c8ebd0 | 471 | //intégration |
YROY2004 | 1:90cc91745ff7 | 472 | mode = MODE_COULEUR_CONSTANTE; |
YROY2004 | 0:37eb67c8ebd0 | 473 | couleur = RED; |
YROY2004 | 0:37eb67c8ebd0 | 474 | couleurVariable = BLUE; |
YROY2004 | 0:37eb67c8ebd0 | 475 | fillRect(0, 0, 240, 280, BLACK); //surface de dessin |
YROY2004 | 0:37eb67c8ebd0 | 476 | //bouton noir |
YROY2004 | 0:37eb67c8ebd0 | 477 | fillRect(0, 280, 80, 2, WHITE); // ligne horizontale haut |
YROY2004 | 0:37eb67c8ebd0 | 478 | fillRect(0, 282, 2, 38, WHITE); // ligne verticale gauche |
YROY2004 | 0:37eb67c8ebd0 | 479 | fillRect(79, 282, 1, 38, WHITE); // ligne verticale droite |
YROY2004 | 0:37eb67c8ebd0 | 480 | fillRect(2, 318, 77, 2, WHITE); //ligne horizontale bas |
YROY2004 | 0:37eb67c8ebd0 | 481 | fillRect(2, 282, 77, 36, BLACK); // centre noir |
YROY2004 | 0:37eb67c8ebd0 | 482 | //bouton rouge |
YROY2004 | 0:37eb67c8ebd0 | 483 | fillRect(80, 280, 80, 40, WHITE); // moins d'instructions mais plus long |
YROY2004 | 0:37eb67c8ebd0 | 484 | fillRect(81, 282, 78, 36, RED); // bouton rouge |
YROY2004 | 0:37eb67c8ebd0 | 485 | //bouton cyan |
YROY2004 | 0:37eb67c8ebd0 | 486 | fillRect(160, 280, 80, 40, WHITE); // moins d'instructions mais plus long |
YROY2004 | 0:37eb67c8ebd0 | 487 | fillRect(161, 282, 77, 36, BLUE); //bouton bleu |
YROY2004 | 0:37eb67c8ebd0 | 488 | //indicateur |
YROY2004 | 0:37eb67c8ebd0 | 489 | fillRect(81, 282, 10, 10, GREEN); //couleur rouge par défaut |
YROY2004 | 0:37eb67c8ebd0 | 490 | |
YROY2004 | 0:37eb67c8ebd0 | 491 | while(1) { |
YROY2004 | 1:90cc91745ff7 | 492 | |
YROY2004 | 1:90cc91745ff7 | 493 | #ifdef TEST |
YROY2004 | 1:90cc91745ff7 | 494 | printf ("Distance: %d, Lux: %d\n\r", dist, lux); |
YROY2004 | 1:90cc91745ff7 | 495 | #endif |
YROY2004 | 1:90cc91745ff7 | 496 | |
YROY2004 | 0:37eb67c8ebd0 | 497 | //tâches du touchscreen |
YROY2004 | 0:37eb67c8ebd0 | 498 | myled = !myled; |
YROY2004 | 0:37eb67c8ebd0 | 499 | |
YROY2004 | 0:37eb67c8ebd0 | 500 | x = readTouchX(); |
YROY2004 | 0:37eb67c8ebd0 | 501 | y = readTouchY(); |
YROY2004 | 0:37eb67c8ebd0 | 502 | z = detectTouch(); |
YROY2004 | 0:37eb67c8ebd0 | 503 | //tâches du tftspfd5408 |
YROY2004 | 0:37eb67c8ebd0 | 504 | |
YROY2004 | 0:37eb67c8ebd0 | 505 | |
YROY2004 | 0:37eb67c8ebd0 | 506 | //tâches d'intégration |
YROY2004 | 0:37eb67c8ebd0 | 507 | couleurVariable = determineLaCouleur(); |
YROY2004 | 1:90cc91745ff7 | 508 | // fillRect(228, 282, 10, 10, couleurVariable); //indicateur de couleur |
YROY2004 | 0:37eb67c8ebd0 | 509 | |
YROY2004 | 0:37eb67c8ebd0 | 510 | if ((z > TOUCH_SEUIL_BAS)&&(z < TOUCH_SEUIL_HAUT)) |
YROY2004 | 0:37eb67c8ebd0 | 511 | { |
YROY2004 | 0:37eb67c8ebd0 | 512 | #ifdef TEST |
YROY2004 | 0:37eb67c8ebd0 | 513 | pc.printf("x lu %u\t ", x); |
YROY2004 | 0:37eb67c8ebd0 | 514 | pc.printf("y lu %u\t ", y); |
YROY2004 | 0:37eb67c8ebd0 | 515 | pc.printf("z lu %u\t ", z); |
YROY2004 | 0:37eb67c8ebd0 | 516 | #endif |
YROY2004 | 0:37eb67c8ebd0 | 517 | float u = conversion((float)x, XT_G, XE_G, XT_D, XE_D); |
YROY2004 | 0:37eb67c8ebd0 | 518 | float v = conversion((float)y, YT_B, YE_B, YT_H, YE_H); |
YROY2004 | 0:37eb67c8ebd0 | 519 | |
YROY2004 | 0:37eb67c8ebd0 | 520 | #ifdef TEST |
YROY2004 | 0:37eb67c8ebd0 | 521 | pc.printf("x ecran %f\t ", u); |
YROY2004 | 0:37eb67c8ebd0 | 522 | pc.printf("y ecran %f\r\n", v); |
YROY2004 | 0:37eb67c8ebd0 | 523 | #endif |
YROY2004 | 0:37eb67c8ebd0 | 524 | if (v < 280) |
YROY2004 | 0:37eb67c8ebd0 | 525 | { |
YROY2004 | 1:90cc91745ff7 | 526 | if (mode == MODE_COULEUR_CONSTANTE) |
YROY2004 | 1:90cc91745ff7 | 527 | { |
YROY2004 | 1:90cc91745ff7 | 528 | fillRect(u, v, 3, 3, couleur); |
YROY2004 | 1:90cc91745ff7 | 529 | } |
YROY2004 | 1:90cc91745ff7 | 530 | else |
YROY2004 | 1:90cc91745ff7 | 531 | { |
YROY2004 | 1:90cc91745ff7 | 532 | fillRect(u, v, 3, 3, couleurVariable); |
YROY2004 | 1:90cc91745ff7 | 533 | } |
YROY2004 | 0:37eb67c8ebd0 | 534 | } |
YROY2004 | 0:37eb67c8ebd0 | 535 | else |
YROY2004 | 0:37eb67c8ebd0 | 536 | { |
YROY2004 | 0:37eb67c8ebd0 | 537 | if (u < 80) |
YROY2004 | 0:37eb67c8ebd0 | 538 | { |
YROY2004 | 0:37eb67c8ebd0 | 539 | fillRect(0, 0, 240, 280, BLACK); |
YROY2004 | 0:37eb67c8ebd0 | 540 | } |
YROY2004 | 0:37eb67c8ebd0 | 541 | else |
YROY2004 | 0:37eb67c8ebd0 | 542 | { |
YROY2004 | 0:37eb67c8ebd0 | 543 | if (u < 160) |
YROY2004 | 0:37eb67c8ebd0 | 544 | { |
YROY2004 | 1:90cc91745ff7 | 545 | mode = MODE_COULEUR_CONSTANTE; |
YROY2004 | 0:37eb67c8ebd0 | 546 | //indicateur RED |
YROY2004 | 0:37eb67c8ebd0 | 547 | fillRect(81, 282, 10, 10, GREEN); //couleur rouge par défaut |
YROY2004 | 1:90cc91745ff7 | 548 | fillRect(161,282, 10, 10, BLUE); |
YROY2004 | 0:37eb67c8ebd0 | 549 | |
YROY2004 | 1:90cc91745ff7 | 550 | #ifdef TEST |
YROY2004 | 0:37eb67c8ebd0 | 551 | pc.printf("couleur: rouge\n\r"); |
YROY2004 | 1:90cc91745ff7 | 552 | #endif |
YROY2004 | 0:37eb67c8ebd0 | 553 | } |
YROY2004 | 0:37eb67c8ebd0 | 554 | else |
YROY2004 | 0:37eb67c8ebd0 | 555 | { |
YROY2004 | 1:90cc91745ff7 | 556 | mode = MODE_COULEUR_VARIABLE; |
YROY2004 | 0:37eb67c8ebd0 | 557 | //indicateur AUTRE |
YROY2004 | 0:37eb67c8ebd0 | 558 | fillRect(81, 282, 10, 10, RED); |
YROY2004 | 1:90cc91745ff7 | 559 | fillRect(161, 282, 77, 36, BLUE); |
YROY2004 | 1:90cc91745ff7 | 560 | fillRect(161, 282, 10, 10, GREEN); |
YROY2004 | 1:90cc91745ff7 | 561 | |
YROY2004 | 1:90cc91745ff7 | 562 | #ifdef TEST |
YROY2004 | 0:37eb67c8ebd0 | 563 | pc.printf("couleur variable\n\r"); |
YROY2004 | 1:90cc91745ff7 | 564 | #endif |
YROY2004 | 0:37eb67c8ebd0 | 565 | } |
YROY2004 | 0:37eb67c8ebd0 | 566 | } |
YROY2004 | 0:37eb67c8ebd0 | 567 | } |
YROY2004 | 0:37eb67c8ebd0 | 568 | } |
YROY2004 | 0:37eb67c8ebd0 | 569 | } |
YROY2004 | 0:37eb67c8ebd0 | 570 | } |