Station Meteo Laos
/
Simulation_carte_maitresse
Permet de créer, envoyer, filtrer et decrypter la trame meteo.
main.cpp
- Committer:
- Station_Meteo_Laos
- Date:
- 2019-06-29
- Revision:
- 2:4a57fcb1ab30
- Parent:
- 1:265dc028a37d
File content as of revision 2:4a57fcb1ab30:
#include "mbed.h" #include "meteoCAN.h" #define can_len 8 Serial pc(USBTX, USBRX, 115200); // tx, rx for Tera Term output DigitalOut myled(LED1); // LED1 displays messsage sent Status CAN can1(PA_11, PA_12); // CAN interface meteoCAN meteo(PA_11, PA_12); CANMessage msg; // create empty CAN message int main() { uint16_t i, octet; char trame[8]; bool readCAN=false; while(1){ readCAN=false; pc.printf("**********Envoi de la Requete meteo par bus CAN**********\n\n"); //Tant que readCAN est faux,autrement dit tant qu'il n'y as pas de trame à lire sur le Bus CAN while(readCAN == false){ //Envoi d'un requête météo avec l'ID 21 if (can1.write(CANMessage(21, trame, 0))) { pc.printf("Message envoye !\n"); myled = !myled; } else{ pc.printf("Echec de l'envoi\n"); can1.reset(); // Reset le bus CAN en cas de problème } wait(1.0); // Paus de 1s //readCAN reste faux si aucune trame n'est reçu, sinon devient vrai readCAN = can1.read(msg); } //Affiche la trame meteo reçue pc.printf("\nRecepetion en cours..."); pc.printf("\n"); pc.printf("|******TRAME RECU**********|\n"); printf("ID de la trame CAN : %d\n", msg.id); printf("Nombre d'octets recus: %d\n", msg.len); // display message data for(i=0;i<msg.len;i++) printf(" -> data[%d] = %d\n", i, msg.data[i]); //Décode la trame météo et affiche la valeurs des donnees reçues //Affiche la température pc.printf(" ->Temperature = %2.2f degres celsius\n", meteo.getTemperature(msg)); //Affiche l'humidité pc.printf(" ->Humidite = %2.2f %%RH\n", meteo.getHumidite(msg)); //Affiche l'irradiance pc.printf(" ->Irradiance = %hu W/m2\n", meteo.getIrradiance(msg)); //Affiche la vitesse du vent pc.printf(" ->Vitesse du vent = %f m/s\n", meteo.getVitesseVent(msg)); //Affiche la direction du vent pc.printf(" ->Direction du vent = %u\n", meteo.getDirectionVent(msg)); myled = !myled;//inverse l'état de la led wait(5.0);//Attente de 5s avant de renvoyer uen requête météo } }