Après s’être inscrit, il faut aller sur cette page :
Suivre le lien " Playground".
Après s’être inscrit, il faut aller sur cette page :
Suivre le lien " Playground".
Bonjour,
Il semble assez fort pour faire de la programmation:
code pour un fréquencemètre avec un arduino et un afficheur LCD en faisant la moyenne de plusieurs mesures
Et il me répond :
PS : pour ceux qui ont un arduino et un afficheur LCD, pourquoi ne pas tester ce bout de code
#include <LiquidCrystal.h> //bibliothèque pour l'afficheur LCD
const int pinIn = 2; //pin où est branché le signal à mesurer
const int nMesures = 10; //nombre de mesures pour la moyenne
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //initialisation de l'afficheur LCD
unsigned long tempsPrecedent = 0; //variable pour stocker le temps de la dernière interruption
unsigned int compteur = 0; //variable pour compter le nombre d'interruptions
unsigned int mesures[nMesures]; //tableau pour stocker les mesures
unsigned int sommeMesures = 0; //variable pour stocker la somme des mesures
int indiceMesure = 0; //indice pour parcourir le tableau des mesures
void setup() {
pinMode(pinIn, INPUT); //on configure le pin où est branché le signal en entrée
attachInterrupt(digitalPinToInterrupt(pinIn), compterInterruptions, RISING); //on attache une interruption qui appelle la fonction compterInterruptions lorsque le signal passe de bas à haut
lcd.begin(16, 2); //on configure l'afficheur LCD pour avoir 16 colonnes et 2 lignes
lcd.print("Frequence :"); //on affiche un message d'accueil
}
void loop() {
//on calcule la fréquence en faisant la moyenne des dernières nMesures mesures
unsigned int frequence = 0;
if (compteur > 0) {
frequence = compteur * 1000 / ((millis() - tempsPrecedent) / nMesures);
}
//on affiche la fréquence sur l'afficheur LCD
lcd.setCursor(0, 1); //on se positionne sur la seconde ligne
lcd.print(" "); //on efface l'affichage précédent
lcd.print(frequence); //on affiche la fréquence
lcd.print(" Hz"); //on affiche l'unité
}
void compterInterruptions() {
//on incrémente le compteur d'interruptions
compteur++;
//on calcule la durée entre cette interruption et la précédente
unsigned long tempsActuel = millis();
unsigned int duree = tempsActuel - tempsPrecedent;
tempsPrecedent = tempsActuel;
//on ajoute la durée à la somme des mesures
sommeMesures += duree;
//on remplace la mesure la plus ancienne par la nouvelle dans le tableau des mesures
sommeMesures -= mesures[indiceMesure];
mesures[indiceMesure] = duree;
indiceMesure = (indiceMesure + 1) % nMesures;
}
Pas trouvé!? Apparemment, il faut créer un compte?
Oui, il faut créer un compte.