Как написать код, чтобы загорелись светодиоды в следующей последовательности? - PullRequest
0 голосов
/ 03 июня 2019

Как написать код, подобный этой последовательности?Что означает 4 десятичных?Для этого нам пришлось добавить задержку в коде

led_Pin_1 1 0 0 0 
led_Pin_2 0 1 0 0 
led_Pin_3 0 0 1 0 
led_Pin_4 0 0 0 1 

мой код, он работает.Но мне нужно преобразовать этот код в приведенную выше последовательность?

int led_Pin_1 = 11;
int led_Pin_2 = 10;
int led_Pin_3 = 9;
int led_Pin_4 = 8;

void setup() {
  pinMode(led_Pin_1, OUTPUT);
  pinMode(led_Pin_2, OUTPUT);
  pinMode(led_Pin_3, OUTPUT);
  pinMode(led_Pin_4, OUTPUT);
}

void loop() {
  digitalWrite(led_Pin_1, HIGH);
  delay(200);
  digitalWrite(led_Pin_2, HIGH);
  delay(200);
   digitalWrite(led_Pin_3, HIGH);
  delay(200);
   digitalWrite(led_Pin_4, HIGH);
  delay(200);
  digitalWrite(led_Pin_1, LOW);
  delay(300);
   digitalWrite(led_Pin_2, LOW);
  delay(300);
   digitalWrite(led_Pin_3, LOW);
  delay(300);
   digitalWrite(led_Pin_4, LOW);
  delay(300);
}

Если такое изменение, каково это значение

LED1 1 0 0 0
LED2 1 1 0 0 
LED3 1 1 1 0
LED4 1 1 1 1

1 Ответ

1 голос
/ 03 июня 2019

Я рекомендую вам использовать Array .

Во-первых, вам нужно создать массив для ваших светодиодов. Затем создайте функцию, чтобы установить правильное значение для этого массива. После этого вы можете просто назначить нужные значения внутри цикла.

Хорошим в использовании массивом является то, что вы можете легко изменить размер без изменения всех кодов.

// Number of LEDs
#define ARRAY_SIZE 4

//Pin definitions
#define LED_PIN_1 11
#define LED_PIN_2 10
#define LED_PIN_3 9
#define LED_PIN_4 8

// Array that holds led pin numbers
const int led_pins[ARRAY_SIZE] = {LED_PIN_4, LED_PIN_3, LED_PIN_2, LED_PIN_1};

// a temp array to hold led values
int led_array_value[ARRAY_SIZE] = {0};

void display(int *input)
{
    for (int i = 0; i < ARRAY_SIZE; i++)
    {
        digitalWrite(led_pins[i], input[i]);
    }
}

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

void loop()
{
    for (int i = 0; i < ARRAY_SIZE; i++)
    {
        // reset all leds to 0
        memset(led_array_value, 0, sizeof(led_array_value));
        // turn on current led
        led_array_value[i] = 1;
        display(led_array_value);
        delay(500);
    }
}
...