// Die Datei kann man mit Simulation komplett als Common cathode finden
// Der Link lautet https://wokwi.com/projects/381842732654213121
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, //0
0b01100000, //1
0b11011010, //2
0b11110010, //3
0b01100110, //4
0b10110110, //5
0b10111110, //6
0b11100000, //7
0b11111110, //8
0b11110110 //9
}; //Ende Bitmuster - Array
int count = 0; //Zählvariable um die Bitmuster durch zu zählen
void setup()
{
//Initialisierung der Ports D13-->DP, D12-->Segment g,... bis D6-->Segment a
for(uint16_t i=0;i<=7;i++)
{
pinMode(seven_seg_ports[i], OUTPUT);
}
Serial.begin(115200);
Serial.println("Hello, 7 Segment Display");
}
void loop()
{
//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;
}
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");
}
void write7_seg(uint16_t anzeige_var) //Funktion zum Schreiben an 7Seg Anzeige
{
for(int16_t j=7;j>=0;j--)
{
delay(100);
//gibt aktuellen Portpin aus, der geschrieben wird...und mit welchem Wert
Serial.print("aktueller Portpin: ");
Serial.print(seven_seg_ports[j],DEC);
Serial.print(" mit Wert:");
Serial.println(bitRead(anzeige_var,7-j),BIN);
Serial.println("");
//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 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