eddiewwm 发表于 2019-4-3 11:22:57

用最少I/O直接推動最多LED的方法

在LGT群組內 bbsniua 提供了一個很有趣的 用最少I/O直接推動最多LED的方法。

eddiewwm 发表于 2019-4-3 17:26:27

一個範例:

#define D2 2
#define D3 3
#define D4 4
#define D5 5

#define onTime 100

void setup() {
// put your setup code here, to run once:
LEDallOff();
}

void loop() {
// put your main code here, to run repeatedly:

LED1On();
delay(onTime);
LEDallOff();
delay(1);

LED2On();
delay(onTime);
LEDallOff();
delay(1);

LED3On();
delay(onTime);
LEDallOff();
delay(1);

LED4On();
delay(onTime);
LEDallOff();
delay(1);

LED5On();
delay(onTime);
LEDallOff();
delay(1);

LED6On();
delay(onTime);
LEDallOff();
delay(1);

LED7On();
delay(onTime);
LEDallOff();
delay(1);

LED8On();
delay(onTime);
LEDallOff();
delay(1);

LED9On();
delay(onTime);
LEDallOff();
delay(1);

LED10On();
delay(onTime);
LEDallOff();
delay(1);

LED11On();
delay(onTime);
LEDallOff();
delay(1);

LED12On();
delay(onTime);
LEDallOff();
delay(1);

}

void LEDallOff(){
pinMode(D2,INPUT);
pinMode(D3,INPUT);
pinMode(D4,INPUT);
pinMode(D5,INPUT);
}

void LED1On(){
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
}

void LED2On(){
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
digitalWrite(D3, HIGH);
digitalWrite(D2, LOW);
}

void LED3On(){
pinMode(D2,OUTPUT);
pinMode(D4,OUTPUT);
digitalWrite(D2, HIGH);
digitalWrite(D4, LOW);
}

void LED4On(){
pinMode(D2,OUTPUT);
pinMode(D4,OUTPUT);
digitalWrite(D4, HIGH);
digitalWrite(D2, LOW);
}

void LED5On(){
pinMode(D2,OUTPUT);
pinMode(D5,OUTPUT);
digitalWrite(D2, HIGH);
digitalWrite(D5, LOW);
}

void LED6On(){
pinMode(D2,OUTPUT);
pinMode(D5,OUTPUT);
digitalWrite(D5, HIGH);
digitalWrite(D2, LOW);
}

void LED7On(){
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
digitalWrite(D3, HIGH);
digitalWrite(D4, LOW);
}

void LED8On(){
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
digitalWrite(D4, HIGH);
digitalWrite(D3, LOW);
}

void LED9On(){
pinMode(D3,OUTPUT);
pinMode(D5,OUTPUT);
digitalWrite(D3, HIGH);
digitalWrite(D5, LOW);
}

void LED10On(){
pinMode(D3,OUTPUT);
pinMode(D5,OUTPUT);
digitalWrite(D5, HIGH);
digitalWrite(D3, LOW);
}

void LED11On(){
pinMode(D4,OUTPUT);
pinMode(D5,OUTPUT);
digitalWrite(D4, HIGH);
digitalWrite(D5, LOW);
}

void LED12On(){
pinMode(D4,OUTPUT);
pinMode(D5,OUTPUT);
digitalWrite(D5, HIGH);
digitalWrite(D4, LOW);
}

页: [1]
查看完整版本: 用最少I/O直接推動最多LED的方法