Wiki Info
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.
Ricerca Avanzata
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti attivi
» Comunicazione termine servizio Arduino BT Control
Da Admin Mar Mag 10, 2022 12:55 pm

» Robot aspirapolvere per Alexa: Dreame D9
Da Admin Mar Feb 09, 2021 9:42 am

» Come costruire un robot smart con Arduino
Da Admin Mar Nov 17, 2020 12:15 pm

» TOPPS Trading Cards Match Attax Champsion League/Europa League 2020/21
Da Admin Mar Nov 10, 2020 3:21 pm

» Guida per utilizzare Arduino BT Control v1.2
Da Admin Gio Lug 09, 2020 12:01 pm

» Recensione Umidigi A3 Pro - Smartphone sotto i 100€
Da Admin Gio Apr 04, 2019 12:22 pm

» [Arduino] aiuto programma
Da Glak Mar Mar 12, 2019 9:30 am

» ERRORE NELLA COMPILAZIONE NEXTION
Da papat Mar Feb 26, 2019 7:11 am

» Comandare la Smart TV con Alexa senza broadlink (gratis)
Da Admin Mar Feb 19, 2019 4:31 pm

I postatori più attivi del mese
Nessun utente


Codice display a 7 segmenti - Arduino

Andare in basso

Codice display a 7 segmenti - Arduino Empty Codice display a 7 segmenti - Arduino

Messaggio Da Admin Sab Ott 01, 2016 7:55 pm


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

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:
Codice display a 7 segmenti - Arduino Displa10
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.
Admin
Admin
♔ Amministratore

Messaggi Messaggi : 4370
Crediti Crediti : 12173
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 26

https://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

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