Bonjours à tous et à toutes,
Je suis un jeune qui aime beaucoup trop l'univers Arduino et passionné de moto.
Bref j'aimerais faire un compteur de rapport engagé pour ma bécane, pour ceux qui ne savent pas, c'est un afficheur 7 segments qui dit la vitesse enclenchée.
Voici mon montage :
et voici mon code :
#define SEGMENT_A 2
#define SEGMENT_B 3
#define SEGMENT_C 4
#define SEGMENT_D 5
#define SEGMENT_E 6
#define SEGMENT_F 7
#define SEGMENT_G 8
#define POINT_MORT 13
#define CAPTEUR_PLUS 11
#define CAPTEUR_MOINS 12
int Rapport_Engage = 0;
void(*tabRapport[7])(void);
void Chiffre_1(){
digitalWrite(SEGMENT_A, LOW);
digitalWrite(SEGMENT_B, HIGH);
digitalWrite(SEGMENT_C, HIGH);
digitalWrite(SEGMENT_D, LOW);
digitalWrite(SEGMENT_E, LOW);
digitalWrite(SEGMENT_F, LOW);
digitalWrite(SEGMENT_G, LOW);
}
void Chiffre_2(){
digitalWrite(SEGMENT_A, HIGH);
digitalWrite(SEGMENT_B, HIGH);
digitalWrite(SEGMENT_C, LOW);
digitalWrite(SEGMENT_D, HIGH);
digitalWrite(SEGMENT_E, HIGH);
digitalWrite(SEGMENT_F, LOW);
digitalWrite(SEGMENT_G, HIGH);
}
void Chiffre_3(){
digitalWrite(SEGMENT_A, HIGH);
digitalWrite(SEGMENT_B, HIGH);
digitalWrite(SEGMENT_C, HIGH);
digitalWrite(SEGMENT_D, HIGH);
digitalWrite(SEGMENT_E, LOW);
digitalWrite(SEGMENT_F, LOW);
digitalWrite(SEGMENT_G, HIGH);
}
void Chiffre_4(){
digitalWrite(SEGMENT_A, LOW);
digitalWrite(SEGMENT_B, HIGH);
digitalWrite(SEGMENT_C, HIGH);
digitalWrite(SEGMENT_D, LOW);
digitalWrite(SEGMENT_E, LOW);
digitalWrite(SEGMENT_F, HIGH);
digitalWrite(SEGMENT_G, HIGH);
}
void Chiffre_5(){
digitalWrite(SEGMENT_A, HIGH);
digitalWrite(SEGMENT_B, LOW);
digitalWrite(SEGMENT_C, HIGH);
digitalWrite(SEGMENT_D, HIGH);
digitalWrite(SEGMENT_E, LOW);
digitalWrite(SEGMENT_F, HIGH);
digitalWrite(SEGMENT_G, HIGH);
}
void Chiffre_6(){
digitalWrite(SEGMENT_A, HIGH);
digitalWrite(SEGMENT_B, LOW);
digitalWrite(SEGMENT_C, HIGH);
digitalWrite(SEGMENT_D, HIGH);
digitalWrite(SEGMENT_E, HIGH);
digitalWrite(SEGMENT_F, HIGH);
digitalWrite(SEGMENT_G, HIGH);
}
void Lettre_N(){
digitalWrite(SEGMENT_A, LOW);
digitalWrite(SEGMENT_B, LOW);
digitalWrite(SEGMENT_C, HIGH);
digitalWrite(SEGMENT_D, LOW);
digitalWrite(SEGMENT_E, HIGH);
digitalWrite(SEGMENT_F, LOW);
digitalWrite(SEGMENT_G, HIGH);
}
void setup() {
Serial.begin(115200);
pinMode(SEGMENT_A, OUTPUT);
pinMode(SEGMENT_B, OUTPUT);
pinMode(SEGMENT_C, OUTPUT);
pinMode(SEGMENT_D, OUTPUT);
pinMode(SEGMENT_E, OUTPUT);
pinMode(SEGMENT_F, OUTPUT);
pinMode(SEGMENT_G, OUTPUT);
pinMode(CAPTEUR_PLUS, INPUT);
pinMode(CAPTEUR_MOINS, INPUT);
pinMode(POINT_MORT, INPUT);
void(*ptChiffre1)();
ptChiffre1 = Chiffre_1;
void(*ptChiffre2)();
ptChiffre2 = Chiffre_2;
void(*ptChiffre3)();
ptChiffre3 = Chiffre_3;
void(*ptChiffre4)();
ptChiffre4 = Chiffre_4;
void(*ptChiffre5)();
ptChiffre5 = Chiffre_5;
void(*ptChiffre6)();
ptChiffre6 = Chiffre_6;
void(*ptLettreN)();
ptLettreN = Lettre_N;
tabRapport = ptChiffre1, ptLettreN, ptChiffre2, ptChiffre3, ptChiffre4, ptChiffre5, ptChiffre6;
}
void loop() {
if(CAPTEUR_PLUS == HIGH)
Rapport_Engage++;
if(Rapport_Engage==1 && POINT_MORT!=HIGH)
Rapport_Engage++;
if(CAPTEUR_MOINS == HIGH)
Rapport_Engage--;
if(Rapport_Engage==2 && POINT_MORT!=HIGH)
Rapport_Engage--;
tabRapport[Rapport_Engage];
}
Je sais que j'ai une erreur avec la mise en tableau, sauf que c'est une amie qui m'a aidée à faire ce code et elle ne se souvenait plus trop du C++, donc je me retourne vers vous car je ne comprends pas l'erreur. Pour plus de précision c'est cette ligne qui pose problème :
tabRapport = ptChiffre1, ptLettreN, ptChiffre2, ptChiffre3, ptChiffre4, ptChiffre5, ptChiffre6;
Pour les capteurs plus et moins j'utilise des capteur de porte avec un aimant le même principe qu'un bouton.
Merci d'avance à vous tous