7 segmentový displej a jeho zapojení

V tomto návodu si ukážeme, jak pracovat se sedmi-segmentovým displejem a Arduinem. Displej bude postupně zobrazovat číslice 0-9 a poté se bude program opakovat.

0-9 Counter by Interfacing 7 Segment Display with Arduino

Sedmisegmentový displej získal svoje jméno díky tomu, že je složen ze sedmi samostatných svítících segmentů. Každý segment si můžeme představit jako LED diodu. Tyto displeje se zpravidla vyrábí ve dvou variantách: se společnou anodou (společný kladný pól „+“) nebo se společnou katodou (společný záporný pól „-„).

Seven Segment Display Types

Na obrázku výše si můžete prohlédnout vnitřní zapojení obou zmíněných variant.

Seznam komponent

  • Arduino UNO
  • napájecí zdroj 5V
  • HDSP5503 sedmisegmentový displej
  • rezistor 100 ohm
  • kondenzátor 47 uF

Schéma zapojení

Arduino 7 Segment Display Circuit Diagram

Jak tedy vidíte na schématu, displej zapojen následovně:

  • Pin1 na D6
  • Pin2 na D5
  • Pin4 na D4
  • Pin5 na D9 (není použit v ukázce)
  • Pin6 na D3
  • Pin7 na D2
  • Pin9 na D7
  • Pin10 na D8
  • Pin3 a Pin8 na zem GND přes 100 ohm rezistor

Common Cathode 7 Segment Display

Pro lepší představu o vnitřním zapojení sedmisegmentového displeje se můžete podívat na obrázek výše.

Ukázkový kód

#define segA 2//connecting segment A to PIN2
#define segB 3// connecting segment B to PIN3
#define segC 4// connecting segment C to PIN4
#define segD 5// connecting segment D to PIN5
#define segE 6// connecting segment E to PIN6
#define segF 7// connecting segment F to PIN7
#define segG 8// connecting segment G to PIN8
 
                int COUNT=0;//count integer for 0-9 increment
void setup()
{
                  for (int i=2;i<9;i++)
                  {
                                    pinMode(i, OUTPUT);// taking all pins from 2-8 as output
                  }
}
 
void loop()
{
switch (COUNT)
                {
 
                case 0://when count value is zero show”0” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, LOW);
                break;
 
                case 1:// when count value is 1 show”1” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, LOW);
                digitalWrite(segE, LOW);
                digitalWrite(segF, LOW);
                digitalWrite(segG, LOW);
                break;
 
                case 2:// when count value is 2 show”2” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, LOW);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, LOW);
                digitalWrite(segG, HIGH);
                break;
 
                case 3:// when count value is 3 show”3” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, LOW);
                digitalWrite(segF, LOW);
                digitalWrite(segG, HIGH);
                break;
 
                case 4:// when count value is 4 show”4” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, LOW);
                digitalWrite(segE, LOW);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, HIGH);
                break;
 
                case 5:// when count value is 5 show”5” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, LOW);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, LOW);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, HIGH);
                break;
 
                case 6:// when count value is 6 show”6” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, LOW);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, HIGH);
                break;
 
                case 7:// when count value is 7 show”7” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, LOW);
                digitalWrite(segE, LOW);
                digitalWrite(segF, LOW);
                digitalWrite(segG, LOW);
                break;
 
                case 8:// when count value is 8 show”8” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, HIGH);
                break;
 
                case 9:// when count value is 9 show”9” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, LOW);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, HIGH);
                break;
 
                break;
                }
                if (COUNT<10)
                {
                                COUNT++;
                                delay(1000);///increment count integer for every second
                }
                if (COUNT==10)
                {
                                COUNT=0;// if count integer value is equal to 10, reset it to zero.
                                delay(1000);
                }
}

Video

Převzato a přeloženo z:
https://circuitdigest.com/microcontroller-projects/7-segment-display-interfacing-with-arduino

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

Luboš