zurück

7-Segment-LED-Anzeige

Video: Live-Demonstration

Anschlüsse

Anschlüsse der 7-Segment-Anzeige
Abb.: Anschlüsse der 7-Segment-Anzeige

Verwendete Bauteile

Aufbau

Hinweis: Sicherheitshalber sollten an jedem Pin der 7-Segment-Anzeige ein Vorwiderstand verwendet werden!

Aufbau der Schaltung
Abb.: Aufbau der Schaltung

Sketch

#define LED_SEG_A_PIN   2
#define LED_SEG_B_PIN   3
#define LED_SEG_C_PIN   4
#define LED_SEG_D_PIN   5
#define LED_SEG_E_PIN   6
#define LED_SEG_F_PIN   7
#define LED_SEG_G_PIN   8
#define LED_SEG_DOT_PIN 9

bool isDotActive;

void setup()
{
  isDotActive = false;
  pinMode(LED_SEG_A_PIN, OUTPUT);
  pinMode(LED_SEG_B_PIN, OUTPUT);
  pinMode(LED_SEG_C_PIN, OUTPUT);
  pinMode(LED_SEG_D_PIN, OUTPUT);
  pinMode(LED_SEG_E_PIN, OUTPUT);
  pinMode(LED_SEG_F_PIN, OUTPUT);
  pinMode(LED_SEG_G_PIN, OUTPUT);
  pinMode(LED_SEG_DOT_PIN, OUTPUT);
}

void loop()
{
  for(byte i=0; i<10; i++) {
    displayDigit(i);
    for(byte d=0; d<4; d++) {
      toggleDot();
      delay(250);
    }
  }
}

void toggleDot()
{
  if (isDotActive == true) {
    digitalWrite(LED_SEG_DOT_PIN, HIGH);
    isDotActive = false;
  } else {
    digitalWrite(LED_SEG_DOT_PIN, LOW);
    isDotActive = true;
  }
}

void displayDigit(byte digit)
{
  turnOffDisplay();
  if (digit > 9) {
    return;
  }

  //Conditions for displaying segment a
  if(digit!=1 && digit != 4) {
    digitalWrite(LED_SEG_A_PIN, HIGH);
  }

  //Conditions for displaying segment b
  if(digit != 5 && digit != 6) {
    digitalWrite(LED_SEG_B_PIN, HIGH);
  }

  //Conditions for displaying segment c
  if(digit !=2) {
    digitalWrite(LED_SEG_C_PIN, HIGH);
  }

  //Conditions for displaying segment d
  if(digit != 1 && digit !=4 && digit !=7) {
    digitalWrite(LED_SEG_D_PIN, HIGH);
  }

  //Conditions for displaying segment e
  if(digit == 2 || digit ==6 || digit == 8 || digit==0) {
    digitalWrite(LED_SEG_E_PIN, HIGH);
  }

  //Conditions for displaying segment f
  if(digit != 1 && digit !=2 && digit!=3 && digit !=7) {
    digitalWrite(LED_SEG_F_PIN, HIGH);
  }

  if (digit!=0 && digit!=1 && digit !=7) {
    digitalWrite(LED_SEG_G_PIN, HIGH);
  }
}

void turnOffDisplay()
{
  digitalWrite(LED_SEG_A_PIN, LOW);
  digitalWrite(LED_SEG_B_PIN, LOW);
  digitalWrite(LED_SEG_C_PIN, LOW);
  digitalWrite(LED_SEG_D_PIN, LOW);
  digitalWrite(LED_SEG_E_PIN, LOW);
  digitalWrite(LED_SEG_F_PIN, LOW);
  digitalWrite(LED_SEG_G_PIN, LOW);
}