Salve a tutti
Mi sono cimentato nella realizzazione di un display ,al momento uno, a sette segmenti.
il mio scopo è quello tramite due pulsantini di incrementare e decrementare il numero sul display tipo come fà il volume dello stereo.
Ad incrementare non ho problemi..... premendo il bottone in successione ho i numeri da 0 a 9 facendo un contatore sulla pressione del pulsantino.
Il problema si pone quando collego il secondo pulsantino per far decrescere il contatore da 9 a0.... non so dove sbaglio!!
Posto il codice se gentilemnte qualche anima pia mi può dare una dritta e farmi un pò di luce in questa selva oscura ne sarei grato ![]()
Ah.. dimenticavo il display a 7 segmenti l' ho collegato con i 7 ingressi digitali non ho usato il multiplexer... e nel codice il decremento l' ho fatto solo da 9 a 8 per vedere se funzionama ma mi esce subito il nove non incrementando nemmeno all' inizio!!
#define BUTTON 11
#define BATTON 12
// Variabili
int ContatorePulsantePremuto = 0;
int StatoPulsante = 0;
int StatoPulsantePrecedente = 0;
int ContatorePulsantePremuto2 = 0;
int StatoPulsante2 = 0;
int StatoPulsantePrecedente2 = 0;
int G=2;
int F=3;
int A=4;
int B=5;
int DP=6;
int C=7;
int D=8;
int E=9;
int led=10;
void setup() {
pinMode(BUTTON, INPUT);
pinMode (BATTON,INPUT);
Serial.begin(9600);
pinMode(G, OUTPUT);
pinMode(F, OUTPUT);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(E, OUTPUT);
pinMode(D, OUTPUT);
pinMode(C, OUTPUT);
pinMode(DP, OUTPUT);
}
void loop() {
StatoPulsante = digitalRead(BUTTON);
if (StatoPulsante != StatoPulsantePrecedente) {
ContatorePulsantePremuto++;
if (ContatorePulsantePremuto == 1) {
digitalWrite(G, LOW);
digitalWrite(F, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(DP, HIGH);
}
if (ContatorePulsantePremuto == 2) {
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 3) {
digitalWrite(G, HIGH);
digitalWrite(F, LOW);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, LOW);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 4) {
digitalWrite(G, HIGH);
digitalWrite(F, LOW);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(E, LOW);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 5) {
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 6) {
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(E, LOW);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 7) {
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 8) {
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 9) {
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
if (ContatorePulsantePremuto == 10) {
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A,HIGH);
digitalWrite(B, HIGH);
digitalWrite(E, LOW);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
}
StatoPulsante2 = digitalRead(BATTON);
if (StatoPulsante2 != StatoPulsantePrecedente2) {
if (StatoPulsante2 == HIGH) {
ContatorePulsantePremuto2--;
if (ContatorePulsantePremuto2 == 1) {
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(DP, LOW);
}
}
}
}