Aide pour la comprehension d'un programme

Bonjour,

On avais un projet en groupe et je m’occupais des programmes pour afficher le classement, le nombre de tours et la vitesse.

Le classement et le nombre de tours j’y suis arrivé tout seul mais pour le programme de la vitesse je ne savais pas comment faire du coup je me suis renseigné sur google et j’ai trouvé ce site :

J’ai changé quelque truc et mon programme marche mais le problème c’est que je ne pourrais pas vraiment l’expliqué pourriez vous m’aider a le comprendre. La partie de “int getRPM()” à "
return kount2rpm;"

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,9,8,7);
const int hallPin=1;
const unsigned long periode = 1000; 

void setup() 
{
  pinMode(hallPin,INPUT);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Projet SIN");
  delay(1000);
  lcd.clear();
}

void loop() 
{
  delay(100);
  int rpm=getRPM();
  lcd.clear();
  displayRPM(rpm);
}
 
int getRPM()
{
  int kount=0;
  boolean kflag=LOW;
  unsigned long temp=0;
  unsigned long startTime=millis();
  while (temp<=periode)
  {
    if (digitalRead(hallPin)==HIGH)
    {
      kflag=HIGH;
    }
    if (digitalRead(hallPin)==LOW && kflag==HIGH)
    {
      kount++;
      kflag=LOW;
    }
    temp=millis()-startTime;
  }
  int kount2rpm = int(60000/periode)*kount;
  return kount2rpm;

}

  
void displayRPM(int rpm) 
{
  lcd.clear();
  lcd.setCursor(0, 0); 
  lcd.print(rpm);
  lcd.setCursor(4,0);
  lcd.print("RPM");
  
}

Et j’utilise un capteur à effet hall hamlin

Salut, je vais essayé de m’y collé du haut de mes 1 an d’expérience dans ce domaine… (seul devant un écran et un livre^)

int getRPM() // crée une variable "getRPM" pouvant prendre une valeur compris entre +-32767
{
  int kount=0; // crée une variable "kount"(compteur) et l'initialise a une valeur de 0
  boolean kflag=LOW;// crée une boolean"drapeau compteur^" et l'initialise a la valeur bas
  unsigned long temp=0;// crée une variable "temp" pouvant prendre une valeur compris entre 0; +4 294 967 295 et l'initialise a la valeur 0
  unsigned long startTime=millis();// crée une variable "startTime" et l'initialise a la valeur millis()
  while (temp<=periode)//tans que 0 est inférieur ou egal a 1 seconde
  {
    if (digitalRead(hallPin)==HIGH)//si lecture de la "hallPin" est a HAUT
    {
      kflag=HIGH;//alors drapeau^ HAUT
    }
    if (digitalRead(hallPin)==LOW && kflag==HIGH)//si lecture de la "hallPin" est egal a BAS et drapeau est egal a HAUT
    {
      kount++;//alors le compteur s'incremente de 1
      kflag=LOW;//et passe le drapeau compteur a BAS
    }
    temp=millis()-startTime;//la variable "temp" prend la valeur du calcul (millis()-startTime)
  }
  int kount2rpm = int(60000/periode)*kount;// crée deux variables*: une* "kount2rpm"(compteur de tr/min) qui prend la valeur calculé de: la deuxieme varible* qui est le calcul pour avoir des tr/min
  return kount2rpm;// retourne la valeur kount2rpm a la variable "getRPM"

}

en gros tu compte pendant 1seconde le nombre de fois que ton drapeau est passer à l’état haut et ensuite tu fais le calcul et retourne la valeur.

Merci beaucoup c'est un peu plus clair pour moi, il y a juste une ligne que je n'ai pas très bien compris mais je vais faire quelques recherches je trouverais surement =D.