用最少I/O直接推動最多LED的方法
在LGT群組內 bbsniua 提供了一個很有趣的 用最少I/O直接推動最多LED的方法。一個範例:
#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]