Tôi muốn 'dọn sạch' một số mã liên quan đến một số pinMode()
và digitalWrite()
các dòng bằng cách sử dụng một dòng duy nhất của một mảng. Tôi rất mới với cả hai mảng nên tôi hơi bối rối. Các ví dụ sau đây là các phần từ mã điều khiển đèn LED 4 chữ số, 7 đoạn.
// 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;
Xác định chân:
Tôi khá chắc chắn mã dưới đây là cách chính xác để lưu trữ các chân như một mảng (nhưng vui lòng sửa lại cho tôi nếu tôi sai).
digitPins[] = {13 12 11 10};
segPins[] = {2 3 4 5 6 7 8};
pinMode():
Tôi hiểu rằng tôi có thể sử dụng vòng lặp for để đặt chế độ pin nhưng có cách nào đơn giản hơn không? Có công việc nào như vầy không?
pinMode(digitPins[], OUTPUT);
pinMode(segPins[], OUTPUT);
digitalWrite():
Tôi có thể truy cập mã pin thích hợp từ mảng để sử dụng digitalWrite()
như mã bên dưới nhưng điều đó sẽ dẫn đến cùng một số dòng mã (và thậm chí còn khó hiểu hơn). Có lựa chọn nào khác không?
digitalWrite(segPins[1], HIGH);