Visualizzazione post con etichetta 7 segmenti. Mostra tutti i post
Visualizzazione post con etichetta 7 segmenti. Mostra tutti i post

mercoledì 31 marzo 2021

Arduino N° 88 - Random Display 7 segmenti

< Arduino N° 87

 Achille De Santis

> Arduino N°  89


Esempio su come gestire l'accensione e lo spegnimento dei singoli segmenti su un modulo display numerico a sette segmenti.

Non è stato implementato il segmento centrale (G) che, volendo, si può aggiungere.


Rotazione oraria e antioraria di un segmento acceso su un display a 7 segmenti.

L'inversione si ottiene premendo il pulsante.

In questo caso, l'unica resistenza di polarizzazione è collegata sul ramo comune e contribuisce alla giusta polarizzazione di tutti i segmenti accesi in sequenza.


Questa configurazione NON è adatta nel pilotaggio di più segmenti accesi contemporaneamente, dove invece è necessario predisporre una resistenza per ogni segmento.




Simulazione: 

Random Display7 segmenti


tecnatronATgmail.com

> Arduino n° 89


mercoledì 24 giugno 2020

Arduino N° 55 - Contatore per dieci - 2°

< Arduino N°  54 

 Achille De Santis

 > Arduino N°  56



 





Contatore per dieci ad una cifra, con display a sette segmenti.
Uso di una matrice 10x7 per la definizione delle cifre.



 /* 
  *  ---------------------- Inizio Programma -------------------------------------------
  * Contatore per 10 con Display a 7 segmenti con matrice
 */


 int Pin[7] = {13,12,11,10,9,8,7};        // inizializza pin board Arduino
 int R=0;                                 // inizializza indice di riga 
 int C=0;                                 // inizializza indice di colonna
    
 bool rom [10][7] =                        // matrice 10x7
           {          // definizione delle cifre a 7 segmenti
                 1,1,1,1,1,1,0,        // cifra 0
                 0,1,1,0,0,0,0,        // cifra 1    
                 1,1,0,1,1,0,1,        // cifra 2
                 1,1,1,1,0,0,1,        // cifra 3
                 0,1,1,0,0,1,1,        // cifra 4
                 1,0,1,1,0,1,1,        // cifra 5
                 1,0,1,1,1,1,1,        // cifra 6
                 1,1,1,0,0,0,0,        // cifra 7
                 1,1,1,1,1,1,1,        // cifra 8
                 1,1,1,1,0,1,1         // cifra 9
          };

 void setup() 
    {    
      for (C=0; C<=6; C++)   {  pinMode(Pin[C], OUTPUT);  }
    }
          
void loop() 
  {
    for(R=0; R<=9; R++)
      {
        for(C=0; C<=6; C++)   { digitalWrite(Pin[C], rom[R][C]); }  
        delay(1000);
      }
  }
// ---------------------- Fine Programma -------------------------------------------


Simulazione: 
Display Array 7 segmenti
Display Array 7 segmenti_V2

Argomenti correlati:


> Arduino N°  56

mercoledì 17 giugno 2020

Arduino N° 54 - Contatore per dieci - 1°

< Arduino N°  53

 Achille De Santis

 > Arduino N°  55








Contatore per dieci ad una cifra, con display a sette segmenti.

Uso di  routines per la definizione delle cifre.




/* --------------------- Inizio programma ----------------------------
 * Contatore per dieci con display a 7 segmenti - 1 cifra.
 * 
 */

#define a   2
#define b   3
#define c   4
#define d   5
#define e   6
#define f   7
#define g   8

const int T1=1000;
int i;

void spegni() { digitalWrite(a,0),(b,0),(c,0),(d,0),(e,0),(f,0),(g,0); }
void zero()   { digitalWrite(a,1),(b,1),(c,1),(d,1),(e,1),(f,1); }
void uno()    { digitalWrite(b,1),(c,1); }
void due()    { digitalWrite(a,1),(b,1),(d,1),(e,1),(g,1); }
void tre()    { digitalWrite(a,1),(b,1),(c,1),(d,1),(g,1); }
void quattro(){ digitalWrite(b,1),(c,1),(f,1),(g,1);  }
void cinque() { digitalWrite(a,1),(c,1),(d,1),(f,1),(g,1); }
void sei_()   { digitalWrite(a,1),(c,1),(d,1),(e,1),(f,1),(g,1); }
void sette()  { digitalWrite(a,1),(b,1),(c,1); }
void otto()   { digitalWrite(a,1),(b,1),(c,1),(d,1),(e,1),(f,1),(g,1); }
void nove()   { digitalWrite(a,1),(b,1),(c,1),(d,1),(f,1),(g,1); }
  
void setup() 
{
   pinMode(a,OUTPUT);
   pinMode(b,OUTPUT);
   pinMode(c,OUTPUT); 
   pinMode(d,OUTPUT); 
   pinMode(e,OUTPUT); 
   pinMode(f,OUTPUT); 
   pinMode(g,OUTPUT);
}

void loop()
   {
     for(i=0; i<=9; i++)
    {   spegni();
       switch(i)
       {
          case 0:   zero();     break;
          case 1:   uno();      break;
          case 2:   due();      break;
          case 3:   tre();      break;
          case 4:   quattro();  break;
          case 5:   cinque();   break;
          case 6:   sei_();     break;
          case 7:   sette();    break;
          case 8:   otto();     break;
          case 9:   nove();     break;
       }
       delay(T1);
    }      
   }
   // ------------- Fine programma ----------------------------


Simulazione: 
Display Array 7 segmenti
Display Array 7 segmenti_V2

Argomenti correlati:


> Arduino N°  55

mercoledì 30 ottobre 2019

Arduino N° 21 - Dado elettronico con display 7 segmenti

< Arduino N° 20

 Achille De Santis

> Arduino N° 22




Estrazione numeri da un Dado a sei facce (1-6).


Aggiunto un impulso di "strobe" per indicare l'esecuzione del comando.  

/* -------------------------- Inizio Programma -----------------------------------------------------------
  Achille De Santis - 28-04-2018
  V2.0 del 02-07-2019
  dado elettronico con display a 7 segmenti.
  Uso di funzioni per la definizione dei numeri con display 7-segmenti a "catodo comune".
*/

// --------------- I/O ------------------------
#define LED_A     5
#define LED_B     6
#define LED_C     7
#define LED_D     8       //Associo ad ogni segmento il proprio piedino
#define LED_E     9
#define LED_F     10
#define LED_G     11
#define DP            12
#define buttonPin   2
// --------------------------------------------

int buttonState;
long ran;
const int time = 1000;

void setup ()
{
  // ----------------------------------------------
  pinMode(buttonPin, INPUT_PULLUP);
 // -----------------------------------------------

  pinMode(LED_A, OUTPUT);
  pinMode(LED_B, OUTPUT);
  pinMode(LED_C, OUTPUT);    // INDIRIZZO I LED IN USCITA E IL PULSANTE IN ENTRATA
  pinMode(LED_D, OUTPUT);
  pinMode(LED_E, OUTPUT);
  pinMode(LED_F, OUTPUT);
  pinMode(LED_G, OUTPUT);
  pinMode(DP, OUTPUT);           // impulso di strobe sul "dot point"

  randomSeed(analogRead(0));
}

void strobe() // Impulso di "strobe" per indicare l'immissione del comando
{
  digitalWrite(DP, HIGH);  delay(100);
  digitalWrite(DP, LOW);         // delay(100);
}

void UNO()
{
  digitalWrite(LED_B, HIGH);
  digitalWrite(LED_C, HIGH);
}

void DUE()
{
   digitalWrite(LED_A, HIGH);
   digitalWrite(LED_B, HIGH);
   digitalWrite(LED_D, HIGH);
   digitalWrite(LED_E, HIGH);
   digitalWrite(LED_G, HIGH);
}

void TRE()
{
  digitalWrite(LED_A, HIGH);
  digitalWrite(LED_B, HIGH);
  digitalWrite(LED_D, HIGH);
  digitalWrite(LED_C, HIGH);
  digitalWrite(LED_G, HIGH);
}

void QUATTRO()
{
  digitalWrite(LED_B, HIGH);
  digitalWrite(LED_C, HIGH);
  digitalWrite(LED_F, HIGH);
  digitalWrite(LED_G, HIGH);
}

void CINQUE()
{
  digitalWrite(LED_A, HIGH);
  digitalWrite(LED_C, HIGH);
  digitalWrite(LED_D, HIGH);
  digitalWrite(LED_F, HIGH);
  digitalWrite(LED_G, HIGH);
}

void SEI()
{
   digitalWrite(LED_A, HIGH);
   digitalWrite(LED_C, HIGH);
   digitalWrite(LED_D, HIGH);
   digitalWrite(LED_E, HIGH);
   digitalWrite(LED_F, HIGH);
   digitalWrite(LED_G, HIGH);
}

void AZZERA()
{
   digitalWrite(LED_A, LOW);
   digitalWrite(LED_B, LOW);
   digitalWrite(LED_C, LOW);  // RESETTO TUTTI I segmenti
   digitalWrite(LED_D, LOW);
   digitalWrite(LED_E, LOW);
   digitalWrite(LED_F, LOW);
   digitalWrite(LED_G, LOW);
}

void loop()
{
  buttonState=digitalRead(buttonPin);
  if (buttonState==LOW)                     // attivo basso!
  { strobe(); AZZERA();
    ran=random(1,7);
    switch(ran)
      {
        case 1:     UNO();          break;
        case 2:     DUE();           break;
        case 3:     TRE();            break;
        case 4:     QUATTRO(); break;
        case 5:     CINQUE();    break;
        case 6:     SEI();             break;
        // case 7:     break;
       default: ;
      }
    delay (time);
  }
}
// ------------------------ Fine programma --------------------------------------------------------


Simulazione: Dado elettronico

Per utilizzare i display ad "anodo comune" si possono prevedere dei transistori invertitori di fase, in uscita, o "complementare le uscite sulle routines di definizione delle cifre, aggiungendo anche gli opportuni valori iniziali. Il corpo del programma resta lo stesso.
Invece delle routine così definite, per il pilotaggio del display si potrebbe fare uso di un array a 7 elementi.



Argomenti correlati:
Dado elettronico V2
Estrazione numeri al Lotto



> Arduino N° 22