Affichage de mesures environnementales sur bus CAN
Dependencies: Grove_LCD_RGB_Backlight mbed-rtos mbed
main.cpp
- Committer:
- Damien75
- Date:
- 2017-06-03
- Revision:
- 0:4727c7573f6b
File content as of revision 0:4727c7573f6b:
#include "mbed.h" #include "rtos.h" #include "Grove_LCD_RGB_Backlight.h" #define SDA_I2C p28 #define SCL_I2C p27 #define SIG_RX_CAN 0x01 DigitalOut led1(LED1); DigitalOut led2(LED2); Grove_LCD_RGB_Backlight Afficheur(SDA_I2C,SCL_I2C); Thread threadA; Thread threadB; CAN CanPort(p30, p29); CANMessage MessageRx; CANMessage MessageTx; unsigned int Id; void canReader(void) { if (CanPort.read(MessageRx)) { led1 = !led1; threadA.signal_set(SIG_RX_CAN); } } void affichage() { switch(MessageRx.id) { case '0x011' : printf("Temperature 1"); break; case '0x021' : printf("Humidite"); break; case '0x031' : printf("Temperature et Humidite"); break; case '0x111' : printf("Trop chaud"); break; case '0x112' : printf("Temperature normale"); break; case '0x113' : printf("Trop froid"); break; case '0x012' : printf("Temperature 2"); break; case '0x041' : printf("Pression atmosphérique"); break; case '0x051' : printf("Temperature 2 et Pression"); break; case '0x141' : printf("Orageux"); break; case '0x142' : printf("Nuageux"); break; case '0x143' : printf("Dégagé"); break; case '0x081' : printf("Luminosité"); break; case '0x181' : printf("Jour"); break; case '0x182' : printf("Nuit"); break; } } void requeteATous() // Requete demandant toutes les données { MessageTx.id=0x000; } void requeteTempHum() { MessageTx.id=0x031; } void requeteTempPress() { MessageTx.id=0x051; } void requeteLum() { MessageTx.id=0x081; } void thA() { while(true) { Thread::signal_wait(SIG_RX_CAN); led2 = !led2; affichage(); } } void thB() { while (true) { CanPort.write(MessageTx); requeteATous(); wait(1800000); } } void thC() { while (true) { CanPort.write(MessageTx); requeteLum(); wait(900000); } } void thD() { while (true) { CanPort.write(MessageTx); requeteTempHum(); wait(600000); } } void thE() { while (true) { CanPort.write(MessageTx); requeteTempPress(); wait(600000); } } int main() { wait(0.5); Afficheur.clear(); Afficheur.print("Hello"); Afficheur.setRGB(255, 255, 255); CanPort.frequency(20000); //Id = 0x1A5; //MessageTx.len=2; //MessageTx.data[0] = 0x55; //MessageTx.data[1] = 0xAA; //MessageTx.format = CANStandard; //MessageTx.format = CANExtended; //MessageTx.type = CANData; //MessageTx.type = CANRemote; CanPort.attach(canReader,CAN::RxIrq); threadA.start(thA); threadB.start(thB); led1 = 0; printf("Start OK\n"); while (true) { } }