Ich möchte ‚aufzuräumen‘ einige Code, der mehrere beinhaltet pinMode()
und digitalWrite()
unter Verwendung einer einzelnen Zeile eines Arrays Linien. Ich bin sehr neu in beiden Arrays, daher bin ich etwas verwirrt. Die folgenden Beispiele sind Abschnitte aus Code, der eine 4-stellige 7-Segment-LED steuert.
// Define display pins
// Digit pins (common cathode)
int digit1 = 13; //Display pin 1
int digit2 = 12; //Display pin 2
int digit3 = 11; //Display pin 6
int digit4 = 10; //Display pin 8
// Segment pins
int segA = 2; //Display pin 14
int segB = 3; //Display pin 16
int segC = 4; //Display pin 13
int segD = 5; //Display pin 3
int segE = 6; //Display pin 5
int segF = 7; //Display pin 11
int segG = 8; //Display pin 15
void setup() {
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
}
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGH
switch (numberToDisplay){
case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
Stifte definieren:
Ich bin mir ziemlich sicher, dass der folgende Code die richtige Art ist, die Pins als Array zu speichern (aber bitte korrigieren Sie mich, wenn ich falsch liege).
digitPins[] = {13 12 11 10};
segPins[] = {2 3 4 5 6 7 8};
pinMode():
Ich verstehe, dass ich eine for-Schleife verwenden könnte, um die Pin-Modi einzustellen, aber gibt es einen noch einfacheren Weg? Würde so etwas funktionieren?
pinMode(digitPins[], OUTPUT);
pinMode(segPins[], OUTPUT);
digitalWrite():
Ich könnte auf den entsprechenden Pin aus dem Array zugreifen, um ihn digitalWrite()
wie den folgenden Code zu verwenden, aber das würde zu der gleichen Anzahl von Codezeilen führen (und noch verwirrender sein). Gibt es eine andere Option?
digitalWrite(segPins[1], HIGH);