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 HC_SR04_Ultrasonic_Library
Revision 0:c4844dc380b9, committed 2019-12-17
- Comitter:
- brunostgr
- Date:
- Tue Dec 17 17:52:28 2019 +0000
- Commit message:
- Asrf
Changed in this revision
diff -r 000000000000 -r c4844dc380b9 HC_SR04_Ultrasonic_Library.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HC_SR04_Ultrasonic_Library.lib Tue Dec 17 17:52:28 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/ejteb/code/HC_SR04_Ultrasonic_Library/#e0f9c9fb4cf3
diff -r 000000000000 -r c4844dc380b9 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Dec 17 17:52:28 2019 +0000 @@ -0,0 +1,109 @@ +/* + * Le 16 decembre 2019 + * Bruno St-Georges et Nicolas Brochu + * Instrumentation en systemes ordines + * + * Laboratoire 8 - Capteur ultrasonique + * Ce programme permet de mesurer une distance (mm) ou une vitesse (mm/s) a l'aide d'un capteur ultrasonique. + * Un bouton-poussoir permet de changer le mode de fonctionnement (correction d'erreur) selon la table suivante: + * - Mode 0: Correction par plafonnement + * - Mode 1: Correction par omission des donnees erronees + * - Mode 2: Correction par extrapolation + * - Mode 3: Affichage de la vitesse + * + * LPC1768 + * Connexions externes: + * Broche 21 - Bouton-poussoir + * + */ + +// Librairies +#include "mbed.h" +#include "ultrasonic.h" + +// Bornes statiques du capteur +#define I_MIN_RANGE 20 // en mm; Integer +#define I_MAX_RANGE 4000 // en mm; Integer + +// Variables +uint8_t uiMODECORRECTION = 0; +int iData[5] = {0, 0, 0, 0, 0}; +int iI = 0; +int iDISTANCE1, iDISTANCE2, iVITESSE; + +// Bouton-poussoir +DigitalIn bouton(p21); + +// Fonctions periodiques +Timer t; +Ticker flipper; +void dist(int iDistance) +{ + if(uiMODECORRECTION == 0){ // Plafonnement + if(iDistance < I_MIN_RANGE){ + iDistance = I_MIN_RANGE; // Remplacement par valeur minimale + }else if(iDistance > I_MAX_RANGE){ + iDistance = I_MAX_RANGE; // Remplacement par valeur maximale + } + printf("Distance %d mm\r\n", iDistance); + }else if(uiMODECORRECTION == 1){ // Omission des valeurs erronees + if(!(iDistance < I_MIN_RANGE || iDistance > I_MAX_RANGE)){ // Ignore les valeurs à l'extérieur de la plage + printf("Distance %d mm\r\n", iDistance); + } + }else if(uiMODECORRECTION == 2){ // Extrapolation + iData[4] = iData[3]; // FIFO pour calcul de variation moyenne + iData[3] = iData[2]; + iData[2] = iData[1]; + iData[1] = iData[0]; + iData[0] = iDistance; // Assignation de la valeur presente + int iVariationMoyenne = ((iData[1] - iData[2]) + (iData[2] - iData[3]) + (iData[3] - iData[4])) / 3; + if(!(iDistance < I_MIN_RANGE || iDistance > I_MAX_RANGE)){ // Valeurs à l'intérieur de la plage + printf("Distance %d mm\r\n", iDistance); + } else { + iData[0] = iData[1] + iVariationMoyenne; // Ajoute la variation moyenne a la derniere valeur valide + printf("Distance %d mm\r\n", iData[0]); + } + } +} + +// Objet capteur ultrasonique +ultrasonic sonar(p17, p18, .1, 1, &dist); // trig, echo, update speed, timeout, fonction a appeler + +// Fonction de vitesse +void check(void){ + if(uiMODECORRECTION == 3){ + if(iI == 0){ + iDISTANCE1 = sonar.getCurrentDistance(); + iI++; + } + else if(iI == 1){ + iDISTANCE2 = sonar.getCurrentDistance(); + iI++; + } + else{ + iI = 0; + iVITESSE = abs(iDISTANCE2 - iDISTANCE1) * 10; // Vitesse en mm/s + printf("\n\rVitesse: %i mm/s",iVITESSE); + } + } +} + +// Programme principal +int main(){ + flipper.attach(&check, 0.2); + sonar.startUpdates(); // Active le capteur + while(1) + { + sonar.checkDistance(); // Mesure de la distance + if(bouton == 0){ // Choix du mode de fonctionnement + uiMODECORRECTION++; + if(uiMODECORRECTION == 4){ + uiMODECORRECTION = 0; + } + printf("\n\rMode de correction: %u\n\r",uiMODECORRECTION); + while(bouton == 0); + wait_ms(25); + } + wait_ms(60); // Debounce + } +}
diff -r 000000000000 -r c4844dc380b9 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Dec 17 17:52:28 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file