Affichage de mesures environnementales sur bus CAN
Dependencies: Grove_LCD_RGB_Backlight mbed-rtos mbed
main.cpp@0:4727c7573f6b, 2017-06-03 (annotated)
- Committer:
- Damien75
- Date:
- Sat Jun 03 17:22:24 2017 +0000
- Revision:
- 0:4727c7573f6b
Affichage_MesureEnvironnement_CAN
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Damien75 | 0:4727c7573f6b | 1 | #include "mbed.h" |
Damien75 | 0:4727c7573f6b | 2 | #include "rtos.h" |
Damien75 | 0:4727c7573f6b | 3 | #include "Grove_LCD_RGB_Backlight.h" |
Damien75 | 0:4727c7573f6b | 4 | |
Damien75 | 0:4727c7573f6b | 5 | #define SDA_I2C p28 |
Damien75 | 0:4727c7573f6b | 6 | #define SCL_I2C p27 |
Damien75 | 0:4727c7573f6b | 7 | |
Damien75 | 0:4727c7573f6b | 8 | #define SIG_RX_CAN 0x01 |
Damien75 | 0:4727c7573f6b | 9 | |
Damien75 | 0:4727c7573f6b | 10 | DigitalOut led1(LED1); |
Damien75 | 0:4727c7573f6b | 11 | DigitalOut led2(LED2); |
Damien75 | 0:4727c7573f6b | 12 | Grove_LCD_RGB_Backlight Afficheur(SDA_I2C,SCL_I2C); |
Damien75 | 0:4727c7573f6b | 13 | |
Damien75 | 0:4727c7573f6b | 14 | Thread threadA; |
Damien75 | 0:4727c7573f6b | 15 | Thread threadB; |
Damien75 | 0:4727c7573f6b | 16 | |
Damien75 | 0:4727c7573f6b | 17 | CAN CanPort(p30, p29); |
Damien75 | 0:4727c7573f6b | 18 | CANMessage MessageRx; |
Damien75 | 0:4727c7573f6b | 19 | CANMessage MessageTx; |
Damien75 | 0:4727c7573f6b | 20 | |
Damien75 | 0:4727c7573f6b | 21 | unsigned int Id; |
Damien75 | 0:4727c7573f6b | 22 | |
Damien75 | 0:4727c7573f6b | 23 | void canReader(void) |
Damien75 | 0:4727c7573f6b | 24 | { |
Damien75 | 0:4727c7573f6b | 25 | if (CanPort.read(MessageRx)) |
Damien75 | 0:4727c7573f6b | 26 | { |
Damien75 | 0:4727c7573f6b | 27 | led1 = !led1; |
Damien75 | 0:4727c7573f6b | 28 | threadA.signal_set(SIG_RX_CAN); |
Damien75 | 0:4727c7573f6b | 29 | } |
Damien75 | 0:4727c7573f6b | 30 | } |
Damien75 | 0:4727c7573f6b | 31 | |
Damien75 | 0:4727c7573f6b | 32 | void affichage() |
Damien75 | 0:4727c7573f6b | 33 | { |
Damien75 | 0:4727c7573f6b | 34 | switch(MessageRx.id) |
Damien75 | 0:4727c7573f6b | 35 | { |
Damien75 | 0:4727c7573f6b | 36 | case '0x011' : |
Damien75 | 0:4727c7573f6b | 37 | printf("Temperature 1"); |
Damien75 | 0:4727c7573f6b | 38 | break; |
Damien75 | 0:4727c7573f6b | 39 | |
Damien75 | 0:4727c7573f6b | 40 | case '0x021' : |
Damien75 | 0:4727c7573f6b | 41 | printf("Humidite"); |
Damien75 | 0:4727c7573f6b | 42 | break; |
Damien75 | 0:4727c7573f6b | 43 | |
Damien75 | 0:4727c7573f6b | 44 | case '0x031' : |
Damien75 | 0:4727c7573f6b | 45 | printf("Temperature et Humidite"); |
Damien75 | 0:4727c7573f6b | 46 | break; |
Damien75 | 0:4727c7573f6b | 47 | |
Damien75 | 0:4727c7573f6b | 48 | case '0x111' : |
Damien75 | 0:4727c7573f6b | 49 | printf("Trop chaud"); |
Damien75 | 0:4727c7573f6b | 50 | break; |
Damien75 | 0:4727c7573f6b | 51 | |
Damien75 | 0:4727c7573f6b | 52 | case '0x112' : |
Damien75 | 0:4727c7573f6b | 53 | printf("Temperature normale"); |
Damien75 | 0:4727c7573f6b | 54 | break; |
Damien75 | 0:4727c7573f6b | 55 | |
Damien75 | 0:4727c7573f6b | 56 | case '0x113' : |
Damien75 | 0:4727c7573f6b | 57 | printf("Trop froid"); |
Damien75 | 0:4727c7573f6b | 58 | break; |
Damien75 | 0:4727c7573f6b | 59 | |
Damien75 | 0:4727c7573f6b | 60 | case '0x012' : |
Damien75 | 0:4727c7573f6b | 61 | printf("Temperature 2"); |
Damien75 | 0:4727c7573f6b | 62 | break; |
Damien75 | 0:4727c7573f6b | 63 | |
Damien75 | 0:4727c7573f6b | 64 | case '0x041' : |
Damien75 | 0:4727c7573f6b | 65 | printf("Pression atmosphérique"); |
Damien75 | 0:4727c7573f6b | 66 | break; |
Damien75 | 0:4727c7573f6b | 67 | |
Damien75 | 0:4727c7573f6b | 68 | case '0x051' : |
Damien75 | 0:4727c7573f6b | 69 | printf("Temperature 2 et Pression"); |
Damien75 | 0:4727c7573f6b | 70 | break; |
Damien75 | 0:4727c7573f6b | 71 | |
Damien75 | 0:4727c7573f6b | 72 | case '0x141' : |
Damien75 | 0:4727c7573f6b | 73 | printf("Orageux"); |
Damien75 | 0:4727c7573f6b | 74 | break; |
Damien75 | 0:4727c7573f6b | 75 | |
Damien75 | 0:4727c7573f6b | 76 | case '0x142' : |
Damien75 | 0:4727c7573f6b | 77 | printf("Nuageux"); |
Damien75 | 0:4727c7573f6b | 78 | break; |
Damien75 | 0:4727c7573f6b | 79 | |
Damien75 | 0:4727c7573f6b | 80 | case '0x143' : |
Damien75 | 0:4727c7573f6b | 81 | printf("Dégagé"); |
Damien75 | 0:4727c7573f6b | 82 | break; |
Damien75 | 0:4727c7573f6b | 83 | |
Damien75 | 0:4727c7573f6b | 84 | case '0x081' : |
Damien75 | 0:4727c7573f6b | 85 | printf("Luminosité"); |
Damien75 | 0:4727c7573f6b | 86 | break; |
Damien75 | 0:4727c7573f6b | 87 | |
Damien75 | 0:4727c7573f6b | 88 | case '0x181' : |
Damien75 | 0:4727c7573f6b | 89 | printf("Jour"); |
Damien75 | 0:4727c7573f6b | 90 | break; |
Damien75 | 0:4727c7573f6b | 91 | |
Damien75 | 0:4727c7573f6b | 92 | case '0x182' : |
Damien75 | 0:4727c7573f6b | 93 | printf("Nuit"); |
Damien75 | 0:4727c7573f6b | 94 | break; |
Damien75 | 0:4727c7573f6b | 95 | } |
Damien75 | 0:4727c7573f6b | 96 | } |
Damien75 | 0:4727c7573f6b | 97 | |
Damien75 | 0:4727c7573f6b | 98 | void requeteATous() // Requete demandant toutes les données |
Damien75 | 0:4727c7573f6b | 99 | { |
Damien75 | 0:4727c7573f6b | 100 | MessageTx.id=0x000; |
Damien75 | 0:4727c7573f6b | 101 | |
Damien75 | 0:4727c7573f6b | 102 | } |
Damien75 | 0:4727c7573f6b | 103 | |
Damien75 | 0:4727c7573f6b | 104 | void requeteTempHum() |
Damien75 | 0:4727c7573f6b | 105 | { |
Damien75 | 0:4727c7573f6b | 106 | MessageTx.id=0x031; |
Damien75 | 0:4727c7573f6b | 107 | } |
Damien75 | 0:4727c7573f6b | 108 | |
Damien75 | 0:4727c7573f6b | 109 | void requeteTempPress() |
Damien75 | 0:4727c7573f6b | 110 | { |
Damien75 | 0:4727c7573f6b | 111 | MessageTx.id=0x051; |
Damien75 | 0:4727c7573f6b | 112 | } |
Damien75 | 0:4727c7573f6b | 113 | |
Damien75 | 0:4727c7573f6b | 114 | void requeteLum() |
Damien75 | 0:4727c7573f6b | 115 | { |
Damien75 | 0:4727c7573f6b | 116 | MessageTx.id=0x081; |
Damien75 | 0:4727c7573f6b | 117 | } |
Damien75 | 0:4727c7573f6b | 118 | |
Damien75 | 0:4727c7573f6b | 119 | |
Damien75 | 0:4727c7573f6b | 120 | void thA() |
Damien75 | 0:4727c7573f6b | 121 | { |
Damien75 | 0:4727c7573f6b | 122 | while(true) |
Damien75 | 0:4727c7573f6b | 123 | { |
Damien75 | 0:4727c7573f6b | 124 | Thread::signal_wait(SIG_RX_CAN); |
Damien75 | 0:4727c7573f6b | 125 | led2 = !led2; |
Damien75 | 0:4727c7573f6b | 126 | affichage(); |
Damien75 | 0:4727c7573f6b | 127 | } |
Damien75 | 0:4727c7573f6b | 128 | } |
Damien75 | 0:4727c7573f6b | 129 | |
Damien75 | 0:4727c7573f6b | 130 | void thB() |
Damien75 | 0:4727c7573f6b | 131 | { |
Damien75 | 0:4727c7573f6b | 132 | while (true) |
Damien75 | 0:4727c7573f6b | 133 | { |
Damien75 | 0:4727c7573f6b | 134 | CanPort.write(MessageTx); |
Damien75 | 0:4727c7573f6b | 135 | requeteATous(); |
Damien75 | 0:4727c7573f6b | 136 | wait(1800000); |
Damien75 | 0:4727c7573f6b | 137 | } |
Damien75 | 0:4727c7573f6b | 138 | } |
Damien75 | 0:4727c7573f6b | 139 | |
Damien75 | 0:4727c7573f6b | 140 | void thC() |
Damien75 | 0:4727c7573f6b | 141 | { |
Damien75 | 0:4727c7573f6b | 142 | while (true) |
Damien75 | 0:4727c7573f6b | 143 | { |
Damien75 | 0:4727c7573f6b | 144 | CanPort.write(MessageTx); |
Damien75 | 0:4727c7573f6b | 145 | requeteLum(); |
Damien75 | 0:4727c7573f6b | 146 | wait(900000); |
Damien75 | 0:4727c7573f6b | 147 | } |
Damien75 | 0:4727c7573f6b | 148 | } |
Damien75 | 0:4727c7573f6b | 149 | |
Damien75 | 0:4727c7573f6b | 150 | void thD() |
Damien75 | 0:4727c7573f6b | 151 | { |
Damien75 | 0:4727c7573f6b | 152 | while (true) |
Damien75 | 0:4727c7573f6b | 153 | { |
Damien75 | 0:4727c7573f6b | 154 | CanPort.write(MessageTx); |
Damien75 | 0:4727c7573f6b | 155 | requeteTempHum(); |
Damien75 | 0:4727c7573f6b | 156 | wait(600000); |
Damien75 | 0:4727c7573f6b | 157 | } |
Damien75 | 0:4727c7573f6b | 158 | } |
Damien75 | 0:4727c7573f6b | 159 | |
Damien75 | 0:4727c7573f6b | 160 | void thE() |
Damien75 | 0:4727c7573f6b | 161 | { |
Damien75 | 0:4727c7573f6b | 162 | while (true) |
Damien75 | 0:4727c7573f6b | 163 | { |
Damien75 | 0:4727c7573f6b | 164 | CanPort.write(MessageTx); |
Damien75 | 0:4727c7573f6b | 165 | requeteTempPress(); |
Damien75 | 0:4727c7573f6b | 166 | wait(600000); |
Damien75 | 0:4727c7573f6b | 167 | } |
Damien75 | 0:4727c7573f6b | 168 | } |
Damien75 | 0:4727c7573f6b | 169 | |
Damien75 | 0:4727c7573f6b | 170 | int main() |
Damien75 | 0:4727c7573f6b | 171 | { |
Damien75 | 0:4727c7573f6b | 172 | wait(0.5); |
Damien75 | 0:4727c7573f6b | 173 | Afficheur.clear(); |
Damien75 | 0:4727c7573f6b | 174 | Afficheur.print("Hello"); |
Damien75 | 0:4727c7573f6b | 175 | Afficheur.setRGB(255, 255, 255); |
Damien75 | 0:4727c7573f6b | 176 | |
Damien75 | 0:4727c7573f6b | 177 | CanPort.frequency(20000); |
Damien75 | 0:4727c7573f6b | 178 | |
Damien75 | 0:4727c7573f6b | 179 | //Id = 0x1A5; |
Damien75 | 0:4727c7573f6b | 180 | //MessageTx.len=2; |
Damien75 | 0:4727c7573f6b | 181 | //MessageTx.data[0] = 0x55; |
Damien75 | 0:4727c7573f6b | 182 | //MessageTx.data[1] = 0xAA; |
Damien75 | 0:4727c7573f6b | 183 | |
Damien75 | 0:4727c7573f6b | 184 | //MessageTx.format = CANStandard; |
Damien75 | 0:4727c7573f6b | 185 | //MessageTx.format = CANExtended; |
Damien75 | 0:4727c7573f6b | 186 | |
Damien75 | 0:4727c7573f6b | 187 | //MessageTx.type = CANData; |
Damien75 | 0:4727c7573f6b | 188 | //MessageTx.type = CANRemote; |
Damien75 | 0:4727c7573f6b | 189 | |
Damien75 | 0:4727c7573f6b | 190 | CanPort.attach(canReader,CAN::RxIrq); |
Damien75 | 0:4727c7573f6b | 191 | |
Damien75 | 0:4727c7573f6b | 192 | threadA.start(thA); |
Damien75 | 0:4727c7573f6b | 193 | threadB.start(thB); |
Damien75 | 0:4727c7573f6b | 194 | |
Damien75 | 0:4727c7573f6b | 195 | led1 = 0; |
Damien75 | 0:4727c7573f6b | 196 | printf("Start OK\n"); |
Damien75 | 0:4727c7573f6b | 197 | |
Damien75 | 0:4727c7573f6b | 198 | while (true) |
Damien75 | 0:4727c7573f6b | 199 | { |
Damien75 | 0:4727c7573f6b | 200 | |
Damien75 | 0:4727c7573f6b | 201 | } |
Damien75 | 0:4727c7573f6b | 202 | } |