Projet Control module

;D

//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// 7 Segments Pin correspondance
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;

// Push bouton
const int BUTTON = 10;
const int BUTTON2 = 11;
const int BUTTON3 = 12;

// Led remplace solenoid
const int LedSA = A14;
const int LedSB = A13;
const int LedSClutch = A12;
const int LedSLockup = A7;
const int LedSPressure = A6;


// on when pin is high
// off when pin is low
const int ON = HIGH;
const int OFF = LOW;

//vitesse
int vitesse = 1;


// action push bouton
int Push = +1;
int Push2 = -1;
int Push3 = 1;

// état précédent
static int pushPrec = LOW;
static int push2Prec = LOW;
static int push3Prec = LOW;

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(BUTTON2, INPUT_PULLUP);
  pinMode(BUTTON3, INPUT_PULLUP);
  pinMode(LedSA, OUTPUT);        //solenoid A
  pinMode(LedSB, OUTPUT);        //solenoid B
  pinMode(LedSClutch, OUTPUT);   //solenoid Overrun Clutch
  pinMode(LedSLockup, OUTPUT);  //solenoid Lock-up
  pinMode(LedSPressure, OUTPUT); //solenoid Line Pressure

}
void loop() { // début du loop
  Push3 = digitalRead(BUTTON3);
  if (Push3 == HIGH)
  {
     Vitesse1();//
    // Début du programme de passage vitesse inferrieure avec bouton -

    static int pushPrec = LOW;    // état précédent
    Push = digitalRead(BUTTON);                 // action bouton +
    if (Push != pushPrec)
    {
      // le bouton a changé d'état
      {
        if (Push == HIGH)                               // pression capté
          if (vitesse < 4)
            vitesse++;                                  // vitesse +1
      }
      pushPrec = Push;
    }



    switch (vitesse) { //début du cycle 1-4
      case 1:                 //-
        Vitesse1();
        break;
      case 2:                 //
        Vitesse2();                        // A partir de 1 monter à 4
        break;
      case 3:                 //
        Vitesse3();
        break;
      case 4:                 //-
        Vitesse4();
        break;

    }//fin cycle 1-4
  }
    // Fin du programme de passage vitesse inferrieure avec bouton +
else Push3 == LOW;
  {
    PositionD();
  }

    //
    // Début du programme de passage vitesse inferrieure avec bouton -
if (Push3 == HIGH)
  {
 Vitesse1();
 
    static int push2Prec = LOW;    // état précédent
    Push2 = digitalRead(BUTTON2);                 // action bouton +
    if (Push2 != push2Prec)
    {
      // le bouton a changé d'état
      {
        if (Push2 == HIGH)                              // pression capté
          if (vitesse > 1)
            --vitesse;                                  // vitesse +1
      }
      push2Prec = Push2;
    }


    switch (vitesse) { //début du cycle 1-4
      case 1:                 //-
        Vitesse1();
        break;
      case 2:                 //
        Vitesse2();                        // A partir de 1 monter à 4
        break;
      case 3:                 //
        Vitesse3();
        break;
      case 4:                 //-
        Vitesse4();
        break;

    }//fin cycle 1-4
  }
  // Fin du programme de passage vitesse inferrieure avec bouton -

  else Push3 == LOW;
  {
    PositionD();
  }

} //fin du loop





// 1 => BC
void Vitesse1() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);

}

// 2 => ABDEG
void Vitesse2() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 3 => ABCDG
void Vitesse3() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 4 => BCFG
void Vitesse4() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(LedSA, LOW);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// D => ABCDEF
void PositionD() {
  digitalWrite(A, OFF);
  digitalWrite(B, OFF);
  digitalWrite(C, OFF);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, LOW);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, LOW);
}

J'ai trouvé mon problème avec le 3eme bouton .
LA "PositionD" s'additionne au reste du coup example:
quand le "3" s'affiche avec le "0" tous les segement sont allumés.
J'ai donc tous éteint sur la "positionD" et la sa marche normalement.

Je continue à chercher car je veus qu'il affiche D en off et rien en on sauf de 1à4 pour les positions.