Display 7 segmenti a 4 cifre, timer.

Salve ragazzi, sto provando questo display a sette segmenti a 4 cifre per usarlo come timer, ovvero vorrei usarlo con arduino per fargli eseguire un conteggio di un tot secondi, ma non riesco a farlo funzionare in maniera corretta. Se potreste aiutarmi con il programma, grazie mille.

Display_7_segmenti_4cifre.ino (3.76 KB)

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Snappie:
Salve ragazzi, sto provando questo display a sette segmenti a 4 cifre

Questo... quale ? Hai un link ? Potrebbe essere a catodo od anodo comune.

nid69ita:
Questo... quale ? Hai un link ? Potrebbe essere a catodo od anodo comune.

Il codice è questo qui, scusami sono nuovo e non sapevo come pubblicarlo.

//Definisco segmenti
const int pinA=6;
const int pinB=2;
const int pinC=10;
const int pinD=12;
const int pinE=13;
const int pinF=5;
const int pinG=9;
const int pinDP=11;

//Definisco digit
const int digit1=7;
const int digit2=4;
const int digit3=3;
const int digit4=8;

//Definisco i secondi, minuti e ore
int secondi, minuti, ore;

void setup(){
  
  Serial.begin(9600);
  //segmenti output
  pinMode(pinA, OUTPUT);
  pinMode(pinB, OUTPUT);
  pinMode(pinC, OUTPUT);
  pinMode(pinD, OUTPUT);
  pinMode(pinE, OUTPUT);
  pinMode(pinF, OUTPUT);
  pinMode(pinG, OUTPUT);
  pinMode(pinDP, OUTPUT);
 
  //digit output
  pinMode(digit1, OUTPUT);
  pinMode(digit2, OUTPUT);
  pinMode(digit3, OUTPUT);
  pinMode(digit4, OUTPUT);
}

void loop(){
  
  for (secondi=30;secondi>0;secondi--)   
  { 
    if(secondi>10){
      
      digitalWrite(digit3, LOW);
      LedAcceso(1);
    
    } 
    digitalWrite(digit1, HIGH);
    digitalWrite(digit2, HIGH);
    digitalWrite(digit3, LOW);
    digitalWrite(digit4, LOW);
    LedAcceso(secondi);  
    delay (1000);  
  }

  for (secondi=9;secondi>0;secondi--)   
  {  
    digitalWrite(digit1, HIGH);
    digitalWrite(digit2, HIGH);
    digitalWrite(digit3, LOW);
    digitalWrite(digit4, HIGH);
    LedAcceso(secondi);  
    delay (1000);
  
  }
}

void LedAcceso(int n)  
{  
  switch(n)  
  {  
  case 0:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, HIGH);   
    digitalWrite(pinE, HIGH);  
    digitalWrite(pinF, HIGH);  
    digitalWrite(pinG, LOW);  
    break;  
  
  case 1:  
    digitalWrite(pinA, LOW);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, LOW);   
    digitalWrite(pinE, LOW);  
    digitalWrite(pinF, LOW);  
    digitalWrite(pinG, LOW);  
    break;  
  
  case 2:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, LOW);   
    digitalWrite(pinD, HIGH);   
    digitalWrite(pinE, HIGH);  
    digitalWrite(pinF, LOW);  
    digitalWrite(pinG, HIGH);
    break;  
  case 3:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, HIGH);   
    digitalWrite(pinE, LOW);  
    digitalWrite(pinF, LOW);  
    digitalWrite(pinG, HIGH);  
    break;  
  
  case 4:  
    digitalWrite(pinA, LOW);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, LOW);   
    digitalWrite(pinE, LOW);  
    digitalWrite(pinF, HIGH);  
    digitalWrite(pinG, HIGH);  
    break;  
  
  case 5:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, LOW);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, HIGH);   
    digitalWrite(pinE, LOW);  
    digitalWrite(pinF, HIGH);  
    digitalWrite(pinG, HIGH);  
    break;  
  
  case 6:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, LOW);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, HIGH);   
    digitalWrite(pinE, HIGH);  
    digitalWrite(pinF, HIGH);  
    digitalWrite(pinG, HIGH); 
    break;  
  
  case 7:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, LOW);   
    digitalWrite(pinE, LOW);  
    digitalWrite(pinF, LOW);  
    digitalWrite(pinG, LOW);  
    break;  
  
  case 8:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, HIGH);   
    digitalWrite(pinE, HIGH);  
    digitalWrite(pinF, HIGH);  
    digitalWrite(pinG, HIGH); 
    break;  
  
  case 9:  
    digitalWrite(pinA, HIGH);  
    digitalWrite(pinB, HIGH);  
    digitalWrite(pinC, HIGH);   
    digitalWrite(pinD, HIGH);   
    digitalWrite(pinE, LOW);  
    digitalWrite(pinF, HIGH);  
    digitalWrite(pinG, HIGH);
    break;  
  }  
}

Non hai capito la mia domanda. Quale Hardware hai ? Quale display ? Mica sono tutti uguali-uguali. :slight_smile:

P.S. per i pin basta byte e risparmi memoria:

const byte pinA=6;

nid69ita:
Non hai capito la mia domanda. Quale Hardware hai ? Quale display ? Mica sono tutti uguali-uguali. :slight_smile:

P.S. per i pin basta byte e risparmi memoria:

const byte pinA=6;

Va bene, comunque ho risolto grazie mille per il supporto. :slight_smile: