Bonjour, je souhaite mesurer le nombre de tour par minute que fait ma roue codeuse. Pour cela j'ai un capteur infrarouge qui me permet de compter le nombre de tour que fais ma roue. J'essaye de mesure grâce à deux timer que soustrait la duré que fait ma roue lorsque elle fait un tour complet. Malheureusement mon code me permet pas de mesurer le temps que fais ma roue. Pouvez vous m'aider à modifier mon code pour qu'il puisse mesurer le nombre de tour par minute que fais ma roue.
Ci dessous mon code
int vitesse = 0;
float compteur = 0;
int capteur = 3; // Déclaration du capteur sur la broche 3
int val = 0; // Déclaration d'un variable numérique
unsigned long time;
unsigned long time1;
int duree = 250;
int freq = 200;
#include<Wire.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.init();
lcd.backlight();
Serial.begin(9600);
//Déclaration de Led en tant que sortie
pinMode(capteur, INPUT_PULLUP); // Déclaration de capteur en tant qu'entrée
pinMode (8, OUTPUT); //Pin relié au buzzer et configuré comme sortie
}
void loop()
{
time = millis();
delay(1000);
val = digitalRead(3);
if (val == HIGH) {
compteur = compteur + 1;
for (int i = 1; i <= 255; i++) {
if (compteur == 4 * i) {
time1 = millis();
delay(1000);
vitesse = compteur * (time - time1) / 1000;
i = i + 1;
}
}
}
}
lcd.setCursor(9, 0);
lcd.print(vitesse);
delay(500);
lcd.setCursor(0, 0);
lcd.print("Vitesse:");
}