Как написать код, чтобы светодиоды мигали в следующей последовательности?
Как написать код, подобный этой последовательности? Что означает число 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);
}
@user9139407, 👍0
Обсуждение1 ответ
Лучший ответ:
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 для их итерации.
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Связь Arduino master/slave с использованием RS485
ваш третий вопрос не имеет смысла.... также не имеет смысла комментарий по поводу задержки, @jsotola
пожалуйста, помогите мне написать этот код, @user9139407
Нет, сэр, я спросил, правильный мой код или нет. Если неправильный мой код, помогите мне, @user9139407
что вы видите, когда запускаете код?, @jsotola
прочитайте вопрос, который вы разместили .... вы не спросили, правильный ли ваш код или нет, @jsotola