Die Idee: Zahlen auf einem 7-Segment-Display anzeigen. Die Steuerung soll ein Arduino Nano übernehmen.

Der rechte Taster erhöht die Zahl um 1, der linke senkt sie um 1. Wenn man beide drückt wird die Zahl wieder auf 0 gesetzt.
Anfangs gab es nur ein Displaymodul. Daher konnte man nur die Zahlen von 0-9 darstellen, allerdings wollte ich mehr anzeigen. Das Problem ist aber, eine 7-Segment-Anzeige braucht 7 Pins. Ein Arduino hat aber nur 13, also einen zu wenig um zwei Displays anzuschließen. Also musste ein zweiter Arduino her. Um noch mehr Zahlen anzuzeigen kam dann der Dritte.
Die Funktionsweise:
Wenn Wenn der erste Arduino bei 10 angekommen ist, setzt er sich auf null und sendet ein Signal an den zweiten. Wenn der bei 10 angekommen ist, sendet er ein Signal an den dritten. Der Quelllcode (auf allen der Gleiche):
int zahl = 0;
int afs = -1;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop() {
if (digitalRead(9) == HIGH and digitalRead(10) == HIGH)
{
zahl = 0;
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(100);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
if (digitalRead(9) == HIGH and digitalRead(10) == LOW)
{
zahl=zahl+1;
if (zahl == 10)
{
zahl = 0;
digitalWrite(11,HIGH);
delay(100);
digitalWrite(11,LOW);
}
delay(150);
}
if (digitalRead(10) == HIGH and digitalRead(9) == LOW)
{
zahl=zahl-1;
if (zahl == -1)
{
zahl = 9;
digitalWrite(12,HIGH);
delay(100);
digitalWrite(12,LOW);
}
delay(150);
}
if (zahl != afs)
{
if (zahl == 0)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
digitalWrite(7,HIGH);
digitalWrite(6,HIGH);
digitalWrite(3,HIGH);
afs = 0;
}
if (zahl == 1)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
afs = 1;
}
if (zahl == 2)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(2,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
afs = 2;
}
if (zahl == 3)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(2,HIGH);
digitalWrite(8,HIGH);
digitalWrite(7,HIGH);
afs = 3;
}
if (zahl == 4)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
afs = 4;
}
if (zahl == 5)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
digitalWrite(8,HIGH);
digitalWrite(7,HIGH);
digitalWrite(4,HIGH);
afs = 5;
}
if (zahl == 6)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(2,HIGH);
afs = 6;
}
if (zahl == 7)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
afs = 7;
}
if (zahl == 8)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
afs = 8;
}
if (zahl == 9)
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
digitalWrite(7,HIGH);
afs = 9;
}
}
}