arduino UNO一个关于优化代码的简单问题

时间:2019-08-29 01:55:26

标签: arduino arduino-uno

这是关于关闭某些LED的非常简单的代码,但我希望它不要如此重复

我试图做一个循环,但是我听不懂,我已经尽力了,但是我真的很不好意思:((请别人帮忙

`

#define LED 2
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6

void setup()
{
  pinMode(LED, OUTPUT);
  pinMode (LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
}

void loop()
{
  digitalWrite(LED, HIGH);
  delay(1000);


  digitalWrite(LED2, HIGH);
  delay(500); 


  digitalWrite(LED3, HIGH);
  delay(250); 


  digitalWrite(LED4, HIGH);
  delay(125); 

  digitalWrite(LED5, HIGH);
  delay(500); 

  digitalWrite(LED, LOW);
  delay(1000);

  digitalWrite(LED2, LOW);
  delay(500);

  digitalWrite(LED3, LOW);
  delay(250);

  digitalWrite(LED4, LOW);
  delay(125);

  digitalWrite(LED5, LOW);
  delay(500);
}`

1 个答案:

答案 0 :(得分:1)

我将改写Oleg Mazurov在评论中说的话:

#define NUMBER_OF_LEDS 5

static const uint8_t a_led[NUMBER_OF_LEDS] = {2, 3, 4, 5, 6};
static const uint16_t a_delay[NUMBER_OF_LEDS] = {1000, 500, 250, 125, 500};

void setup() {
  for (int i = 0; i < NUMBER_OF_LEDS; i++) {
    pinMode(a_led[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < NUMBER_OF_LEDS; i++) {
    digitalWrite(a_led[i], !digitalRead(a_led[i]));
    delay(a_delay[i]);
  }
}