Seguimi su Youtubue
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Google AdSense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» PROBLEMA SU LIBRERIE
Da papat Ieri alle 5:20 pm

» Recensione luci e bussola militare
Da Poderak Mar Set 19, 2017 10:45 pm

» Inserire data, ora RTC ds 3231
Da Poderak Gio Set 14, 2017 10:05 pm

» Recensione mouse per ufficio wireless di Amir
Da Poderak Mar Set 12, 2017 10:36 pm

» Attenti alle truffe di Instagram: Falsi profili regalano BUONI fake
Da Poderak Gio Set 07, 2017 9:43 pm

» Recensione cuffie sportive Choetech
Da Poderak Lun Set 04, 2017 10:51 pm

» Bussola militare, luci potenti e per la sopravvivenza
Da Poderak Lun Set 04, 2017 12:30 pm

» Recensione rivista MakersMag.it
Da Poderak Gio Ago 31, 2017 7:48 pm

» Guida in italiano per pilotare il Parrot Swing
Da Poderak Dom Ago 27, 2017 9:06 pm

I postatori più attivi del mese
Poderak
 
papat
 


Codice display a 7 segmenti - Arduino

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Codice display a 7 segmenti - Arduino

Messaggio Da Poderak il Sab Ott 01, 2016 7:55 pm


Per la realizzazione di questo progetto, sono necessari i seguenti componenti elettronici.

  • Display a 7 segmenti (su Amazon.it): http://amzn.to/2dgT3Z5
  • Cavi Arduino: (su Amazon.it): http://amzn.to/2d4jrmC
  • Breadboard: (su Amazon.it): http://amzn.to/2dEZszO
  • Arduino Uno: (su Amazon.it): http://amzn.to/2dgcTXw

I display a 7 segmenti non sono altro che un concentrato di LED (diodi) in un componente unico. Come potete dedurre dal nome, si tratta di 7 LED + 1. Ho aggiunto il "+1" perché in realtà sono 8 perché in alcuni display è present il pallino che è anch'esso un LED indipendente. Esistono differenti tipi di display a 7 segmenti. Cambiano in dimensioni o nel tipo di collegamento. Per esempio:
- Anodo comune: Si dovrà collegare il pin centrale del display a 7 segmenti al +5V. Nel software LOW corrisponde a 1 (acceso) mentre HIGH corrisponde a 0 (spento).
- Catodo comune: Si dovrà collegare il pin centrale del display a 7 segmenti al GND. Nel software LOW corrisponde a 0 (spento) mentre HIGH corrisponde a 0 (acceso).

In questo progetto è stato utilizzato un display a 7 segmenti ad anodo comune e questi sono i collegamenti:
Per individuare la polarità e i collegamenti del proprio display è sufficiente leggere il datasheet del componente, facilmente reperibile tramite una ricerca su Google. In caso non si riesce ad individuare il datasheet, è possibile fare delle prove verificando quando i LED del display si illumina facendo dei test con il +5V e GND dell'Arduino.

Per quanto riguarda il codice, ho deciso di utilizzare come funzione lo switch. In pratica, con l'aiuto di un for, contiamo da 0 a 9:
Codice:
int a=2;  
int b=3;  
int c=4;  
int d=5;  
int e=6;  
int f=7;  
int g=8;  
  
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 (int i=0;i<10;i++) {  
  switch(i)  
  {  
  case 0:  
    digitalWrite(a, HIGH);  
    digitalWrite(b, LOW);  
    digitalWrite(c, LOW);  
    digitalWrite(d, LOW);  
    digitalWrite(e, LOW);  
    digitalWrite(f, LOW);  
    digitalWrite(g, LOW);  
    break;  
  
  case 1:  
    digitalWrite(a, HIGH);  
    digitalWrite(b, HIGH);  
    digitalWrite(c, HIGH);  
    digitalWrite(d, LOW);  
    digitalWrite(e, HIGH);  
    digitalWrite(f, HIGH);  
    digitalWrite(g, LOW);  
    break;  
  
  case 2:  
    digitalWrite(a, LOW);  
    digitalWrite(b, HIGH);  
    digitalWrite(c, LOW);  
    digitalWrite(d, LOW);  
    digitalWrite(e, LOW);  
    digitalWrite(f, LOW);  
    digitalWrite(g, HIGH);  
    break;  
  case 3:  
    digitalWrite(a, LOW);  
    digitalWrite(b, HIGH);  
    digitalWrite(c, LOW);  
    digitalWrite(d, LOW);  
    digitalWrite(e, HIGH);  
    digitalWrite(f, LOW);  
    digitalWrite(g, LOW);  
    break;  
  
  case 4:  
    digitalWrite(a, LOW);  
    digitalWrite(b, LOW);  
    digitalWrite(c, HIGH);  
    digitalWrite(d, LOW);  
    digitalWrite(e, HIGH);  
    digitalWrite(f, HIGH);  
    digitalWrite(g, LOW);  
    break;  
  
  case 5:  
    digitalWrite(a, LOW);  
    digitalWrite(b, LOW);  
    digitalWrite(c, LOW);  
    digitalWrite(d, HIGH);  
    digitalWrite(e, HIGH);  
    digitalWrite(f, LOW);  
    digitalWrite(g, LOW);
    break;  
  
  case 6:  
    digitalWrite(a, LOW);  
    digitalWrite(b, LOW);  
    digitalWrite(c, LOW);  
    digitalWrite(d, HIGH);  
    digitalWrite(e, LOW);  
    digitalWrite(f, LOW);  
    digitalWrite(g, LOW);  
    break;  
  
  case 7:  
    digitalWrite(a, HIGH);  
    digitalWrite(b, LOW);  
    digitalWrite(c, LOW);  
    digitalWrite(d, LOW);  
    digitalWrite(e, HIGH);  
    digitalWrite(f, HIGH);  
    digitalWrite(g, LOW);  
    break;  
  
  case 8:  
    digitalWrite(a, LOW);  
    digitalWrite(b, LOW);  
    digitalWrite(c, LOW);  
    digitalWrite(d, LOW);  
    digitalWrite(e, LOW);  
    digitalWrite(f, LOW);  
    digitalWrite(g, LOW);  
    break;  
  
  case 9:  
    digitalWrite(a, LOW);  
    digitalWrite(b, LOW);  
    digitalWrite(c, LOW);  
    digitalWrite(d, LOW);  
    digitalWrite(e, HIGH);  
    digitalWrite(f, LOW);  
    digitalWrite(g, LOW);  
    break;  
  }  
  delay(1000);
  }
}  
Ogni "case" consiste in un numero (0, 1, 2 ecc.). Ricordo che ho utilizzato un display ad anodo comune, quindi il LOW corrisponde ad acceso mentre HIGH a spento. In caso fosse stato un catodo, è esattamente il contrario.
avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4208
Crediti Crediti : 11754
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Vedi il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum