I want to light up different LEDs via multiplexing. The following code works as expected:
...
for (int i = 0; i < Day; i++) {
Serial.println("");
//delay(20);
rst();
digitalWrite(GNDrows[row[i]], LOW);
digitalWrite(VCCcols[col[i]], HIGH);
delay(2000);
}
}
void rst() {
for (int i = 0; i <= 3; i++) {
digitalWrite(GNDrows[i], HIGH);
}
for (int i = 0; i <= 5; i++) {
digitalWrite(VCCcols[i], LOW);
}
}
this does not:
...
for (int i = 0; i < Day; i++) {
//Serial.println("");
delay(20);
rst();
digitalWrite(GNDrows[row[i]], LOW);
digitalWrite(VCCcols[col[i]], HIGH);
delay(2000);
}
}
void rst() {
for (int i = 0; i <= 3; i++) {
digitalWrite(GNDrows[i], HIGH);
}
for (int i = 0; i <= 5; i++) {
digitalWrite(VCCcols[i], LOW);
}
}
I understand that Serial.println(""); will take some time to execute, however replacing it with a delay doesn't work. From my understanding the following should happen:
for (int i = 0; i < Day; i++) {
//Serial.println("");
delay(20);
rst(); Turn all LEDs off
digitalWrite(GNDrows[row_], LOW);set LED i GND to 0V_
digitalWrite(VCCcols[col_], HIGH); set LED i VCC to 5V_
delay(2000); keep the state for 2s, hence LED should stay on for 2s
}
I neither understand why I would need a delay before resetting nor why a manual delay won't work but Serial.print does. Baud Rate is set to 9600.
Hopefully someone can point out what inherent logic I'm missing.
best regards