Bonjour,
Je réalise un système pour calculer la vitesse d'une roue à partir d'une fourche optique. En fonction d'une nombre de trous dans la roue je calcul donc sa vitesse. Maintenant, la ou je bloque avec la fonction millis, c'est pour calculer la distance parcouru par cette roue. J'ai la vitesse, mais je ne vois pas comment rajouter le calcul de la distance dans mon code...
Si quelqu'un ici présent peut m'aider ?
Voici mon code :
#include <LiquidCrystal.h>
LiquidCrystal lcd(45, 47, 37, 35, 33, 31); // Ecran LCD
int encoder_pin = 2; // Pin du capteur
unsigned int rpm = 0; // Tour par minute
volatile int pulses = 0; // Nombre de pulsations
unsigned long timeold = 0;
unsigned int pulsesperturn = 8; // Nombre de trous dans la roue
float rayonroue = 0.01; // En mètre
float speed = 0;
float distance = 0;;
void counter() // Compteur
{
pulses++;
}
void setup()
{
lcd.begin (40, 2);
pinMode(encoder_pin, INPUT);
lcd.clear();
}
void loop()
{
attachInterrupt(0, counter, RISING);
if (millis() - timeold >= 1000 && pulses >= 4)
{
detachInterrupt(0);
rpm = (60 * 1000 / pulsesperturn) / (millis() - timeold) * pulses;
speed = 2 * 3.14 * (rpm / 60) * rayonroue * 3.6;
timeold = millis();
pulses = 0;
if (rpm)
{
lcd.setCursor (0, 0);
lcd.print(rpm);
lcd.print(" tr/min ");
lcd.setCursor (0, 1);
lcd.print(speed);
lcd.print(" km/h ");
}
else
{
lcd.clear();
lcd.setCursor (0, 0);
lcd.print(" A l'arret...");
}
}
if (millis() - timeold >= 5000 && pulses < 4)
{
detachInterrupt(0);
rpm = (60 * 5000 / pulsesperturn) / (millis() - timeold) * pulses;
speed = 2 * 3.14 * (rpm / 60) * rayonroue * 3.6;
timeold = millis();
pulses = 0;
lcd.setCursor (0, 1);
if (rpm)
{
lcd.setCursor (0, 0);
lcd.print(rpm);
lcd.print(" tr/min ");
lcd.setCursor (0, 1);
lcd.print(speed);
lcd.print(" km/h ");
}
else
{
lcd.clear();
lcd.setCursor (0, 0);
lcd.print(" A l'arret...");
}
}
}
Merci d'avance