Affichage de mesures environnementales sur bus CAN

Dependencies:   Grove_LCD_RGB_Backlight mbed-rtos mbed

Committer:
Damien75
Date:
Sat Jun 03 17:22:24 2017 +0000
Revision:
0:4727c7573f6b
Affichage_MesureEnvironnement_CAN

Who changed what in which revision?

UserRevisionLine numberNew 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 }