Problème programme Arduino IDE pour TFE.

Bonsoir à tous !

Tout d’abord j’espère ne pas enfreindre une des règles pour poster sur le Forum car je n’ai pas trouver la charte =/

Donc voilà la situation ! Je suis actuellement à la fin de mon stage et l’entreprise dans laquelle je me trouve m’a demandé de moderniser un ancien banc d’essai avec un moteur DC qui gère un levier en fonction d’un capteur optique (géré par carte Arduino installée par un ancien étudiant).

Etant donné que je suis un novice dans la programmation et dans le langage Arduino et que j’ai du coder par dessus l’ancien code, j’ai fais de mon mieux mais après quelques corrections et plusieurs heures à chercher sans jamais comprendre j’ai décidé de demander de l’aide à des personnes plus qualifiées que moi =)

Voici mon code complet :

int ledPin = 2 ;
float delaiacquisition = 2000 ;
float potentiometre = 0 ;
float couple = 0 ;
float capteuropt = 0 ;
float temps = 0 ;
float puissance = 0 ;
float regime=0;
float i = 0 ;
int j = 0 ;


int BROCHE_DIMINUTION_CHARGE = 8 ; //numéro de borche pour augmenter régime
int BROCHE_AUGMENTATION_CHARGE = 7 ; //numéro de borche pour diminuer régime.
//int BROCHE_AVERTISSEUR_SONORE = 6 ;
//const  =   ; // numéro de broche pour avertisseur sonore

void setup() 
{
  Serial.begin(9600);
  Serial.println("CLEARDATA");
  Serial.println("LABEL,TEMPS,REGIME tr/min,Couple Nm,Puissance Kw");
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
  attachInterrupt(0, comptetours, RISING);

    pinMode (BROCHE_DIMINUTION_CHARGE, OUTPUT); //pour dire que alimente dans le sens "augmenter régime"
    pinMode (BROCHE_AUGMENTATION_CHARGE, OUTPUT); //pour dire que alimente dans le sens "diminuer régime"
    
    //pinMode (BROCHE_AVERTISSEUR_SONORE, OUTPUT); //pour fermer l'avertisseur sonnore

}


void loop() 
{
    potentiometre = analogRead(A0);
    couple = potentiometre *(1054.0 / 1023.0);
    capteuropt = analogRead(A5);
  
      if(capteuropt >= 500.0)
        {
         digitalWrite(ledPin, HIGH);
        }
 
      else
        {
         digitalWrite(ledPin, LOW);
        }
        
  temps = millis();
  
      if (temps >= delaiacquisition + j*delaiacquisition)
       { 
         regime = i *60000 / delaiacquisition ;
         puissance = i *6.28 *couple / delaiacquisition ;
         Serial.print ("DATA,TIME,");
         Serial.print(regime);
         Serial.print (",");
         Serial.print (couple);
         Serial.print (",");   
         Serial.println(puissance);
  
         j = j + 1 ;
         i = 0 ;
        }



   /* If (capteuropt <500) { digitalwrite (n° de la pin de l'alarme; high);
                            delay (10000000);
                             digitalwrite (n° de la pin de l'alarme; Low);
                           }

   */

    if(millis <= 3600000)
      { 
            if(capteuropt <= 1000.0) 
              { 
               digitalWrite (BROCHE_DIMINUTION_CHARGE, HIGH);     // 1° alimenter pin pour diminuer force frein donc augmenter régime.
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum.
               digitalWrite (BROCHE_DIMINUTION_CHARGE, LOW);      // 3° arrêter d'alimenter.
              }

             else 
              {
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, HIGH);    // 1° alimenter pin pour augmenter force frein donc diminuer régime => digitalwrite (n°de pin; High). 
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum => delay.
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, LOW);     // 3° arrêter d'alimenter.
              }
       }



    else if(millis >= 3600000) 
       {
            if(capteuropt <= 2000.0)
              { 
               digitalWrite (BROCHE_DIMINUTION_CHARGE, HIGH);     // 1° alimenter pin pour diminuer force frein donc augmenter régime.
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum.
               digitalWrite (BROCHE_DIMINUTION_CHARGE, LOW);      // 3° arrêter d'alimenter.
              } 
              
             else 
              {
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, HIGH);    // 1° alimenter pin pour augmenter force frein donc diminuer régime => digitalwrite (n°de pin; High). 
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum => delay.
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, LOW);     // 3° arrêter d'alimenter.
              }
       }      
       

       
    else if(millis >= 7200000)
       { 
            if(capteuropt <= 3000.0);
              {
               digitalWrite (BROCHE_DIMINUTION_CHARGE, HIGH);     // 1° alimenter pin pour diminuer force frein donc augmenter régime
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum.
               digitalWrite (BROCHE_DIMINUTION_CHARGE, LOW);      // 3° arrêter d'alimenter.
              }
              
             else 
              {
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, HIGH);    // 1° alimenter pin pour augmenter force frein donc diminuer régime => digitalwrite (n°de pin; High). 
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum => delay.
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, LOW);     // 3° arrêter d'alimenter.
              }
       }



    else (millis >= 108000000)
       { 
            if(capteuropt <= 4000.0)
              {
               digitalWrite (BROCHE_DIMINUTION_CHARGE, HIGH);     // 1° alimenter pin pour diminuer force frein donc augmenter régime.
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum
               digitalWrite (BROCHE_DIMINUTION_CHARGE, LOW);      // 3° arrêter d'alimenter.
              }
              
             else 
              {
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, HIGH);    // 1° alimenter pin pour augmenter force frein donc diminuer régime => digitalwrite (n°de pin; High). 
               delay (500);                                        // 2° laisser un certain temps High pour permettre au moteur de tourner un minimum => delay.
               digitalWrite (BROCHE_AUGMENTATION_CHARGE, LOW);     // 3° arrêter d'alimenter.
              }
       }
       
      
     /*  Si capteur fin de course charge minimale, augmenter charge pour diminuer régime : if digitalread (n° de pin; High) {digitalwrite (n° de pin; High)
                                                                                                                            Delay (2000)
                                                                                                                            digitalwrite (n° de pin; Low)};
            
         Si capteur fin de course charge maximale, diminuer charge pour augmenter régime : if digital read (n° de pin; High) {digitalwrite (n° de pin; High)
                                                                                                                            Delay (1000)
                                                                                                                            digitalwrite (n° de pin; Low)};

    */
     
}


void comptetours ()
{
  i = i + 1 ;
}

Timmily:
Bonsoir à tous !

Tout d’abord j’espère ne pas enfreindre une des règles pour poster sur le Forum car je n’ai pas trouver la charte =/

tu ne fais pas d l’archéologie ?

pour trouver il suffit juste de lire le 1er lien

Les tests sur millis() ne sont pas bons. Par exemple :
    if(millis <= 3600000)doit être    if(millis() <= 3600000)
Ensuite les valeurs testées sont incohérentes :

 if(millis <= 3600000)



    else if(millis >= 3600000)  <-- c'est l'opposé du précédent test


       
    else if(millis >= 7200000)  <-- ça ne va pas avec un else, par rapport au test précédent


    else (millis >= 108000000)

Il manque le if du dernier test.
Pour cette suite de tests il faut tester dans le bon ordre :

  • if millis() >= 108000000)
  • else if(millis >= 7200000)
  • else if(millis >= 3600000)
  • else