Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp
00001 /******************************************************************************* 00002 Université de Montpellier 00003 NemoSpace IUT de Nîmes 00004 IniSat Modèle 1 Version 2 00005 *******************************************************************************/ 00006 // La lecture du GPS utilise une liaison série software 00007 00008 // TP n°5 : Correction 00009 00010 // Exo 1 : Enregistrement des coordonnées GPS sur carte SD 00011 // Exo 2 : Gestion de messages descendants (Supervision) et montants (Commande) 00012 // Exo 3 : Tracer sur My Maps votre déplacement autour du batiment (Mission) 00013 00014 #include "mbed.h" 00015 //#include "platform/mbed_thread.h" 00016 #include "SDFileSystem.h" 00017 00018 #include "system.h" 00019 #include "user.h" 00020 #include "soft_uart.h" 00021 #include "gps.h" 00022 00023 SDFileSystem sd(PB_5, PB_4, PB_3, PA_11, "sd"); // MOSI, MISO, SCK, CS -> SPI pins on the Inisat 00024 00025 uint8_t etat, etat_mem; 00026 uint16_t compteur; 00027 float mes_accu; 00028 00029 int main() 00030 { 00031 Init_System(); 00032 etat = 0; 00033 Init_Soft_UART(); 00034 // thread_sleep_for(1000); 00035 00036 // Setup a serial interrupt function to receive data 00037 00038 wait_ms(1000); 00039 00040 while (1) { 00041 // thread_sleep_for(1); // Boucle toutes les 1 milliseconde environ 00042 wait_ms(1); 00043 compteur++; 00044 00045 // Gestion des modes avec une machine d'états 00046 switch (etat) { 00047 /******************************************************************************/ 00048 // Mode Init : Mise sous tension 00049 // Initialisation du µC 00050 case 0: { 00051 Init_User_Fonctions(); 00052 // thread_sleep_for(1000); 00053 wait_ms(1000); 00054 Stop_Led(); 00055 GPS_Init(); 00056 Start_Led(); 00057 Set_Led(Ve); 00058 // thread_sleep_for(1000); 00059 wait_ms(1000); 00060 etat = 1; 00061 break; } 00062 /******************************************************************************/ 00063 // Mode Gestion : Gestion des actions 00064 // Contrôle du système 00065 case 1: 00066 mes_accu = Mes_Bat(); 00067 if(mes_accu < BAT_SEUIL_BAS_1) { 00068 etat = 4; 00069 Set_Led(Ro); 00070 } else { 00071 etat = 2; 00072 Set_Led(Ve); 00073 } 00074 // thread_sleep_for(1000); 00075 wait_ms(1000); 00076 break; 00077 /******************************************************************************/ 00078 // Mode Mission : Acquisition de données 00079 // Mesure Batterie 00080 // Mesure Courant faces solaires 00081 // Stockage 00082 case 2: 00083 Lect_GPS(); 00084 GPS_Decodage(); 00085 Mes_SP(); 00086 Mes_Temp(); 00087 mes_accu = Mes_Bat(); 00088 if(mes_accu > BAT_SEUIL_HAUT_1) 00089 { 00090 etat = 3; 00091 Set_Led(Ro_Ve); 00092 } 00093 else 00094 { 00095 etat = 1; 00096 } 00097 // thread_sleep_for(1000); 00098 // wait_ms(1000); 00099 break; 00100 /******************************************************************************/ 00101 // Mode Radio : Transmission de données 00102 // Mise en forme pour affichage 00103 case 3: 00104 Envoi_GPS(); 00105 Envoi_Mes_Bat(); 00106 // Envoi_Mes_SP(); 00107 // Envoi_Mes_Temp(); 00108 00109 // thread_sleep_for(1000); 00110 // wait_ms(1000); 00111 etat = 1; 00112 break; 00113 /******************************************************************************/ 00114 // Mode Survie : Attente recharge de l'accu 00115 00116 case 4: 00117 mes_accu = Mes_Bat(); 00118 if(mes_accu < BAT_SEUIL_BAS_2) { 00119 etat = 5; 00120 Stop_User_Fonctions(); 00121 } 00122 00123 if(mes_accu > BAT_SEUIL_HAUT_1) { 00124 etat = 1; 00125 Set_Led(Ve); 00126 } 00127 break; 00128 /******************************************************************************/ 00129 // Mode Zombie : Coupure des consommateurs 00130 // Passage en mode faible consommation 00131 // Diminution de la fréquence du CPU 00132 // Passage en mode Sleep 00133 case 5: 00134 sleep(); 00135 mes_accu = Mes_Bat(); 00136 if(mes_accu > BAT_SEUIL_HAUT_1) 00137 etat = 0; 00138 break; 00139 /******************************************************************************/ 00140 default: 00141 etat = 0; 00142 break; 00143 /******************************************************************************/ 00144 } // end switch 00145 /* if(etat != etat_mem) // Debug des états 00146 { 00147 pc.printf("Etat_%d\r\n",etat); 00148 etat_mem = etat; 00149 }*/ 00150 /******************************************************************************/ 00151 } // end while 00152 } // end main 00153 /******************************************************************************/
Generated on Tue Sep 12 2023 09:27:22 by
1.7.2