Как написать код, чтобы светодиоды мигали в следующей последовательности?

Как написать код, подобный этой последовательности? Что означает число 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);
}

, 👍0

Обсуждение

ваш третий вопрос не имеет смысла.... также не имеет смысла комментарий по поводу задержки, @jsotola

пожалуйста, помогите мне написать этот код, @user9139407

Нет, сэр, я спросил, правильный мой код или нет. Если неправильный мой код, помогите мне, @user9139407

что вы видите, когда запускаете код?, @jsotola

прочитайте вопрос, который вы разместили .... вы не спросили, правильный ли ваш код или нет, @jsotola


1 ответ


Лучший ответ:

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

int led_on = 0; // Начнем с первого (led_Pin_1)

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, (led_on == 0) ? HIGH : LOW);
  digitalWrite(led_Pin_2, (led_on == 1) ? HIGH : LOW);
  digitalWrite(led_Pin_3, (led_on == 2) ? HIGH : LOW);
  digitalWrite(led_Pin_4, (led_on == 3) ? HIGH : LOW);
  delay(250);

  led_on = (led_on + 1) % 4;
}

led_on запустится с 0 (контакт 1), включив только этот контакт. Некоторое объяснение:

(led_on == 0) ? HIGH : LOW

Это означает: если (led_on == 0), то значение будет ВЫСОКОЕ, иначе НИЗКОЕ. В результате работает только контакт 1, если led_on равен 0, а в следующем цикле включается только контакт 2, потому что led_on равен 1 и т. д.

led_on = (led_on + 1) % 4;

Это увеличивает значение led_on, но когда оно достигает 4, оно возвращается к 0.

Я не знаю, какое время задержки вам нужно. Я думаю, вы хотите заменить все светодиоды сразу, чем ждать.

Вы можете превратить 4 почти идентичные строки digitalWrite в функцию в качестве небольшого улучшения.

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

,