;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.