/* 
Bitte beachten, ob es eine 7 - Segment Anzeige mit gemeinsamer Anode oder Kathode ist.
schauen Sie sich die Funktionsweise des bitRead(x,n) - Befehls an z.B. unter www.arduino.cc
*/

int seven_seg_ports[] = {6,7,8,9,10,11,12,13}; //globales Array für Ports der 7Segment Anzeige
int seven_seg_anzeige[] = //Bitmuster für 7 - Segment Anzeige (7 Segment Codierung der Dezimalziffern)
{ 
  0b11111100,//Ziffer 0 im 7 Segment Code
  0b01100000,
  0b11011010,
  0b11110010,
  0b01100110,
  0b10110110,
  0b10111110,
  0b11100000,
  0b11111110,
  0b11110110,





  //// BITMUSTER für 7 Segment Anzeige ERGÄNZEN !!! (7 - Segment - Code)
}; //Ende Bitmuster - Array
int count = 0; //Zählvariable um die Bitmuster durch zu zählen
void setup()
{
 pinMode(D13, OUTPUT);
 pinMode(D12, OUTPUT);
 pinMode(D11, OUTPUT);
 pinMode(D10, OUTPUT);
 pinMode(D9, OUTPUT);
 pinMode(D8, OUTPUT);
 pinMode(D7, OUTPUT);
 pinMode(D6, OUTPUT);
 

 
  //Initialisierung der Ports D13-->DP, D12-->Segment g,... bis D6-->Segment a
 
 //  HIER PORTS Initialisieren mit einer for Schleife und dem Array seven_seg_ports[]
 
  Serial.begin(115200);
  Serial.println("Hello, 7 Segment Display");
  
}//Ende setup()
void loop()
{
    delay(1000);
    //Ausgabe der Ziffer an 7 Segment Anzeige
    write7_seg(seven_seg_anzeige[count]); 
    if(count == 9) // wenn die letzte Ziffer erreicht von 0 wieder anfangen
    {
      count = 0; // HIER ERGÄNZEN
    }
    else
    {
      count++;
    }// Ende if
    delay(500);
    // 7 Segment Anzeige leeren für neue Ziffer
    Serial.println("Anzeige clear\n");
    clear7_seg(0x00); 
  
  
    delay(10); // this speeds up the simulation
    Serial.println("------- nächste Ziffer --------\n");
}//Ende loop()

void write7_seg(uint16_t anzeige_var) //Funktion zum Schreiben an 7Seg Anzeige
{
  
   for (int16_t j = 7; j >= 0; j--)
   {
    digitalWrite(seven_seg_ports[j], bitRead(anzeige_var, 7 - j));
    // HIER ERGÄNZEN AUSGABE an das 7 Segment Display
}
}//Ende wirte7_seg
void clear7_seg(uint16_t anzeige_var) //Funktion zum Schreiben an 7Seg Anzeige
{
  for(int16_t j=7;j>=0;j--)
  { 
    delay(50);
   
    //Schreibt den Wert an den entsprechenden Portpin zum Anzeigen an der 7 Segment Anzeige
    digitalWrite(seven_seg_ports[j], bitRead(anzeige_var,7-j));
    
  }//Ende for
}//Ende clear7_seg