long currentMillis ; // start time for stop watch
long previousMillis ;
long elapsedMillis ;
int preincrementation = 8;
int vrai = 9;
float prevtension;// global variables are retained on each iteration of loop()
float time;
int valeurLue;
int analogPin = A0;
const int led = 13;
float tension; //variable pour stocker la valeur lue après conversion
void setup() {
pinMode(analogPin, INPUT);
pinMode( led, OUTPUT );
digitalWrite(led, HIGH);
delay (500);
digitalWrite(led, LOW); // 2.5cm
Serial.begin(115200);
}
void loop() {
prevtension = tension;
valeurLue = analogRead(analogPin);
//on traduit la valeur brute en tension (produit en croix)
tension = valeurLue * 5.0 / 1024;
long RPMactuel = 60000000 / elapsedMillis;
long initime = 0.05 * elapsedMillis;
long RPMconsigne = 3000;
long consigne = 60000000 / RPMconsigne;
long petit = consigne - (consigne * 0.02);
long grand = consigne + (consigne * 0.02);
if (tension < 2.8)
{
if (tension < (prevtension - 0.005)) { // compare them
currentMillis = micros(); //end point of time measurement
elapsedMillis = currentMillis - previousMillis;
previousMillis = micros(); // starting point
digitalWrite(led, HIGH);
if(elapsedMillis > consigne)
{
time = initime;
}
if(elapsedMillis < consigne)
{
time = 3;
if ( petit < elapsedMillis < grand )
digitalWrite (preincrementation, HIGH);
{
if ( elapsedMillis < consigne )
{
if ( elapsedMillis > (consigne - (consigne * 0.0001)) )
{
time += 0.1;
}
if ( elapsedMillis < (consigne + (consigne * 0.0001)) )
{
time -= 0.1;
}
if ((consigne - (consigne * 0.0001)) < elapsedMillis < (consigne + (consigne * 0.0001)))
{
digitalWrite (vrai, HIGH);
}
}
}
delayMicroseconds (time);
digitalWrite(led, LOW); // do something, they are different
{
}
}
}
}
Serial.println();
Serial.println();
Serial.print("elapsedMillis = ");
Serial.println(elapsedMillis);
Serial.println();
Serial.print("consigne = ");
Serial.println(consigne);
Serial.print("grand = ");
Serial.println(grand);
Serial.print("petit = ");
Serial.println(petit);
Serial.println();
Serial.print("currentMillis = ");
Serial.println(currentMillis);
Serial.print("previousMillis = ");
Serial.println(previousMillis);
Serial.println();
Serial.print("rpm actuel = ");
Serial.println(RPMactuel);
Serial.print("rpm consigne = ");
Serial.println(RPMconsigne);
Serial.println();
Serial.print("initime = ");
Serial.println(initime);
Serial.print("time = ");
Serial.println(time);
Serial.println();
Serial.print("tension = ");
Serial.println(tension);
Serial.println();
Serial.println();
Serial.println();
Serial.println();
}
time between my high to next high because this code is not working thank you