Bei Deinem Code wird der Zähler permanent bei jedem Loop-Durchlauf inkrementiert, solange der Input LOW ist. Wenn Du es nur bei einem Wechsel von HIGH zu LOW haben willst, musst Du Dir den vorherigen Zustand merken.
int inPin12 = 12;
int state = LOW;
int lastState = LOW; // Variable zum Speichern des letzten Zustandes
int count = 0;
void setup()
{
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(inPin12, INPUT);
}
void loop()
{
state = digitalRead(inPin12);
if (state == HIGH)
{
digitalWrite(count, HIGH);
lastState = HIGH;
}
else
{
digitalWrite(count, LOW);
if (lastState == HIGH)
{
count++;
if (count >= 8)
count = 0;
lastState = LOW;
}
}
}
Wenn die Inkrementierung auch beim Wechsel von LOW zu HIGH erfolgen soll, dann so:
int inPin12 = 12;
int state = LOW;
int lastState = LOW; // Variable zum Speichern des letzten Zustandes
int count = 0;
void setup()
{
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(inPin12, INPUT);
}
void loop()
{
state = digitalRead(inPin12);
if (state == HIGH)
{
digitalWrite(count, HIGH);
}
else
{
digitalWrite(count, LOW);
}
if (state != lastState)
{
count++;
if (count >= 8)
count = 0;
lastState = state;
}
}