Помогите написать программу, где три светодиода переключаются n количество раз. Причем один раз считается не весь цикл, а только переключение между одним и другим светодиодом. Например, n=10, значит должны последовательно загораться: 1, 2, 3, 1, 2, 3, 1, 2, 3, 1 (остановится на 1 светодиоде, который останется гореть).
Если n=5, то последовательно загораются 1, 2, 3, 1, 2 и переключение останавливается, на последнем светодиоде 2.
Это заказ?
Тема перенесена в коммерческий раздел, где делают за деньги.
Сделай два счётчика в лупе. Один считает с 1 до 3 по кругу, второй с 1 до N. По первому светодиоды вкллючаешь, по второму останавливаешься.
пока ( N > 0) {
если (кнопка нажата) { увеличить номер текущего светодиода на 1}
если (номер светодиода > 3) { номер светодиода = 1}
включить текущий светодиод
уменьшить N на 1
}
Ещё нужно все светодиоды выключить перед включением нужного
“… доработать напильником…”
Что-то как-то не видно благодарностей от ТС.
Вот и помогай после этого…
За що? Где готовый, проверенный код? Где блюдечко с голубой каёмочкой? Нифига ведь не помогаете, а благодарности требуете
Ваще, тема в коммерческом разделе, но почему-то ни одного коммерческого предложения не поступило! Где Бармалей? На Троицу в Храм пошёл?
за комплектухой
Или в хлам наотмечался))
Всем спасибо, всё сделал:
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
for (int i = 0; i < n/3; i++) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(delayTime);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
delay(delayTime);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
delay(delayTime);
}
int k = n % 3;
if (k == 1) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}
if (k == 2) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(delayTime);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
}
}
чЁ сделал то?
решил задачу
А если пины поместить в массив, то код будет покороче
const byte ledPin[3] = {LED1, LED2, LED3};
for (byte i = 0; i < n; i++) {
digitalWrite(ledPin[i % 3], HIGH);
digitalWrite(ledPin[(i+1) % 3], LOW);
digitalWrite(ledPin[(i+2) % 3], LOW);
}
зачем так криво? Ведь дан же пример выше
затем, что ему на амперке на бедность подали. А дареному коду в строки не заглядывают
и сразу все сделал! Сам!
какой молодец
Вот сумел же, когда захотел