Hallo Uwe,
vielen Dank für den super Tipp. Ich habe jetzt zwischendurch nicht nur A0-A3 abgeschaltet, sondern gleich alle, damit geht es am allerbesten. Bei 500 Microsekunden funktioniert es noch nicht ganz so gut.
Das klappt sowohl mit pinModeFast/ digitalWriteFast als auch ohne Fast.
Was ist hier besser?
/*
pin 2
---
pin 7 | | pin 3
| |
pin 8 ---
| | pin 4
pin 6 | |
--- . pin 9
pin 5
*/
#include <digitalWriteFast.h>
void setup(){
pinModeFast(A0, OUTPUT);
pinModeFast(A1, OUTPUT);
pinModeFast(A2, OUTPUT);
pinModeFast(A3, OUTPUT);
pinModeFast(2, OUTPUT);
pinModeFast(3, OUTPUT);
pinModeFast(4, OUTPUT);
pinModeFast(5, OUTPUT);
pinModeFast(6, OUTPUT);
pinModeFast(7, OUTPUT);
pinModeFast(8, OUTPUT);
pinModeFast(9, OUTPUT);
}
void loop(){
digitalWriteFast(A0, LOW); //linke Tube
digitalWriteFast(A1, LOW); //zweite Tube
digitalWriteFast(A2, LOW); //dritte Tube
digitalWriteFast(A3, LOW); //rechte Tube
digitalWriteFast(2, LOW);
digitalWriteFast(3, LOW);
digitalWriteFast(4, LOW);
digitalWriteFast(5, LOW);
digitalWriteFast(6, LOW);
digitalWriteFast(7, LOW);
digitalWriteFast(8, LOW);
digitalWriteFast(9, LOW);
delayMicroseconds(800);
digitalWriteFast(A0, HIGH); //linke Tube
digitalWriteFast(A1, LOW); //zweite Tube
digitalWriteFast(A2, LOW); //dritte Tube
digitalWriteFast(A3, LOW); //rechte Tube
digitalWriteFast(2, LOW); //oben
digitalWriteFast(3, HIGH); //oben rechst
digitalWriteFast(4, HIGH); //unten rechts
digitalWriteFast(5, LOW); //unten
digitalWriteFast(6, LOW); //unten links
digitalWriteFast(7, LOW); //oben links
digitalWriteFast(8, LOW); //mitte
digitalWriteFast(9, HIGH); //Punkt
delayMicroseconds(800);
digitalWriteFast(A0, LOW); //linke Tube
digitalWriteFast(A1, LOW); //zweite Tube
digitalWriteFast(A2, LOW); //dritte Tube
digitalWriteFast(A3, LOW); //rechte Tube
digitalWriteFast(2, LOW);
digitalWriteFast(3, LOW);
digitalWriteFast(4, LOW);
digitalWriteFast(5, LOW);
digitalWriteFast(6, LOW);
digitalWriteFast(7, LOW);
digitalWriteFast(8, LOW);
digitalWriteFast(9, LOW);
delayMicroseconds(800);
digitalWriteFast(A0, LOW);
digitalWriteFast(A1, HIGH);
digitalWriteFast(A2, LOW);
digitalWriteFast(A3, LOW);
digitalWriteFast(2, HIGH);
digitalWriteFast(3, HIGH);
digitalWriteFast(4, LOW);
digitalWriteFast(5, HIGH);
digitalWriteFast(6, HIGH);
digitalWriteFast(7, LOW);
digitalWriteFast(8, HIGH);
digitalWriteFast(9, LOW);
delayMicroseconds(800);
digitalWriteFast(A0, LOW); //linke Tube
digitalWriteFast(A1, LOW); //zweite Tube
digitalWriteFast(A2, LOW); //dritte Tube
digitalWriteFast(A3, LOW); //rechte Tube
digitalWriteFast(2, LOW);
digitalWriteFast(3, LOW);
digitalWriteFast(4, LOW);
digitalWriteFast(5, LOW);
digitalWriteFast(6, LOW);
digitalWriteFast(7, LOW);
digitalWriteFast(8, LOW);
digitalWriteFast(9, LOW);
delayMicroseconds(800);
digitalWriteFast(A0, LOW);
digitalWriteFast(A1, LOW);
digitalWriteFast(A2, HIGH);
digitalWriteFast(A3, LOW);
digitalWriteFast(2, HIGH);
digitalWriteFast(3, HIGH);
digitalWriteFast(4, HIGH);
digitalWriteFast(5, HIGH);
digitalWriteFast(6, LOW);
digitalWriteFast(7, LOW);
digitalWriteFast(8, HIGH);
digitalWriteFast(9, LOW);
delayMicroseconds(800);
digitalWriteFast(A0, LOW); //linke Tube
digitalWriteFast(A1, LOW); //zweite Tube
digitalWriteFast(A2, LOW); //dritte Tube
digitalWriteFast(A3, LOW); //rechte Tube
digitalWriteFast(2, LOW);
digitalWriteFast(3, LOW);
digitalWriteFast(4, LOW);
digitalWriteFast(5, LOW);
digitalWriteFast(6, LOW);
digitalWriteFast(7, LOW);
digitalWriteFast(8, LOW);
digitalWriteFast(9, LOW);
delayMicroseconds(800);
digitalWriteFast(A0, LOW);
digitalWriteFast(A1, LOW);
digitalWriteFast(A2, LOW);
digitalWriteFast(A3, HIGH);
digitalWriteFast(2, LOW);
digitalWriteFast(3, HIGH);
digitalWriteFast(4, HIGH);
digitalWriteFast(5, LOW);
digitalWriteFast(6, LOW);
digitalWriteFast(7, HIGH);
digitalWriteFast(8, HIGH);
digitalWriteFast(9, LOW);
delayMicroseconds(800);
}
Besten Gruß
Corax