Emetteur GO ? Qu'en pense le ChatGPT?

Après s’être inscrit, il faut aller sur cette page :

Suivre le lien " Playground".

1 « J'aime »

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.