Objectifs
- Savoir les 3 étapes de création d’une nouvelle bibliothèque
- Savoir les fichiers contenant une bibliothèque
- Savoir intégrer une nouvelle bibliothèque
- Savoir tester la bibliothèque
- Exemple de calcul de la valeur moyenne, maximale et minimale d’un buffer
- La différence entre « MyLib.h » & <MyLib.h> ?
A quoi sert une bibliothèque ?
- Regrouper un ensemble des fonctions redondantes dans ses projets
- Avoir un code modulaire et scalable (possibilité des mises à jour)
- Réduire le temps de développement & possibilité à faire des erreurs
- Gestions des modules (Moteur PAP, SPI, Capteurs, I2C, Filtrage,…)
- Etc.
étape 1 : développement du code de la nouvelle bibliothèque
- – maxf(): Calcul de la valeur maximale
- – minf(): Calcul de la valeur minimale
- – meanf(): Calcul de la valeur moyenne
- – MaxMinMean(): La fonction globale
Calcul de la valeur maximale
float maxf(int *Buffer, int taille)
{
int maxVal=Buffer[0];
for(int i=1;i<taille; i++)
if(Buffer[i]>maxVal)
maxVal=Buffer[i];
return (float)maxVal;
}
Calcul de la valeur minimale
float minf(int *Buffer, int taille)
{
int minVal=Buffer[0];
for(int i=1;i<taille; i++)
if(Buffer[i]<=minVal)
minVal=Buffer[i];
return (float)minVal;
}
Calcul de la valeur moyenne
float meanf(int *Buffer, int taille)
{
float meanVal=0.0;
for(int i=0;i<taille; i++)
meanVal+=(float)Buffer[i];
meanVal=meanVal/taille;
return meanVal;
}
La fonction globale
float MaxMinMean(int *Buffer, int taille, int Type)
{
float valRetour=0.0;
switch (Type)
{
case 0:
valRetour=maxf(Buffer,taille);
return valRetour;
break;
case 1:
valRetour=minf(Buffer,taille);
return valRetour;
break;
case 2:
valRetour=meanf(Buffer,taille);
return valRetour;
break;
default:
return 0.0;
break;
}
}
étape 2: Remplissage des fichiers « MyLib.h » et « MyLib.cpp »
- Fichier MyLib.h: Les déclarations des fonctions
- Fichier MyLib.cpp: Les définitions des fonctions
Contenu du fichier « MyLib.h »
// Calcul de la valeur maximale
float maxf(int *Buffer, int taille);
// Calcul de la valeur minimale
float minf(int *Buffer, int taille);
// Calcul de la valeur moyenne
float meanf(int *Buffer, int taille);
// La fonction globale
float MaxMinMean(int *Buffer, int taille, int Type);
étape 3: Test de la nouvelle bibliothèque
#include "MyLib.h"
#define Taille 128
int tab[Taille], i;
float maxVal, minVal, meanVal;
int ValInst;
void setup()
{
Serial.begin(115200);
}
void loop()
{
// Lecture de la valeur instantanée
ValInst=analogRead(A0);
// Remplissage du buffer
for(i=0; i<Taille; i++)
tab[i]=analogRead(A0);
// Récupération des données du signal
maxVal=MaxMinMean(tab, Taille,0);
minVal=MaxMinMean(tab, Taille,1);
meanVal=MaxMinMean(tab, Taille,2);
// Affichage dans le port série
Serial.print(ValInst); Serial.print(",");
Serial.print(maxVal); Serial.print(",");
Serial.print(minVal); Serial.print(",");
Serial.println(meanVal);
}
2 réponses sur « Arduino #27: Comment crée une nouvelle bibliothèque en 3 étapes ? »
Bonjour les détails des fonctions ne sont pas visible, est ce normal?
« pastacode lang= »c » manual= »float%20minf(int%20*Buffer%2C%20int%20taille)%0A%0A%7B%0A%0A%C2%A0%20int%20minVal%3DBuffer%5B0%5D%3B%0A%0A%C2%A0%20for(int%20i%3D1%3Bi%3Ctaille%3B%20i%2B%2B)%0A%0A%C2%A0%C2%A0%C2%A0%20if(Buffer%5Bi%5D%3C%3DminVal)%0A%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20minVal%3DBuffer%5Bi%5D%3B%0A%0A%0A%0A%0A%C2%A0%20return%20(float)minVal%3B%0A%0A%7D » message= » » highlight= » » provider= »manual »/] »
Cordialement
Merci pour ton commentaire, c’est bon, j’ai réglé le soucis d’affichage 🙂