Bonjour, suite aux nombreux Topic que jai poster jai constaté que le problemme de mon programme etait le delta temps
je solicite donc votre pour m'aider à creer un delta temps pour un programme "Capteur de vitesse" utilisant un capteur de ligne et un ruban adhésif noir sur une roue. =(
Un peu de lecture : millis() - Arduino Reference
Merci beaucoup fdufnews
Je sais mtn que depuis 6 mois je travaille pour rien lol
en faite j'utlisais la variable temps pour faire des calculs mais il est bien preciser que
Note that the parameter for millis is an unsigned long, errors may be generated if a programmer tries to do math with other datatypes such as ints.
Donc mon programme est foutu enfin je pense. Le voila :
// DEFINITIONS DES VARIABLES
const int CapteurDeLigne = 4;
float Tours = 0;
int CapteurDeLigneState = 0;
float Vitesse = 0.00;
float TempsEcoule = 0.00;
float RefTemps = 0.00;
void setup() {
pinMode(CapteurDeLigne, INPUT);
Serial.begin (9600);
while(digitalRead(CapteurDeLigne)!=0) ;
RefTemps=millis();
while(digitalRead(CapteurDeLigne)==0) ;
delay(1000);
}
void loop(){
if(digitalRead(CapteurDeLigne)==LOW) {
TempsEcoule=millis()-RefTemps;
RefTemps=millis();
Tours=Tours+1;
Vitesse = 0.14*PI*(Tours/TempsEcoule*0.001);}
else {
TempsEcoule=millis()-RefTemps;
RefTemps=millis();
Tours=Tours;
Vitesse = 0.14*PI*(Tours/TempsEcoule*0.001);}
Serial.print (Tours);
Serial.print (" Tr ");
Serial.print (Vitesse);
Serial.print (" m/s ");
while(digitalRead(CapteurDeLigne)==0); // tant que le capteur n'est pas revenu à la normale on boucle
delay(1000);// à ajuster pour limiter les effets de rebond
}
Comment ça foutu ? Ca dit juste si tu utilise millis() ou micros() en ne prenant pas en compte que ce sont des unsigned long tu risques d'avoir des problèmes
par ailleurs ton code n'est pas bon : RefTemps est remis à zéro en permanence + des delay() au milieu c'est le bordel
Le plus marrant c'est que tu nous mets un texte qui explique que millis() doit être utilisé avec des variables de type unsigned long et toi tu modifies ton code et tu affectes millis() à un float.
Si c'est pas se tirer une balle dans le pied ....