Как сюда поставить кнопку

Нет, в прямом. В выше приведенном коде не определена antidelay()

Оу, когда переписывал про него забыл.

#define BTN_PIN 3
void antidelay(uint32_t timing) {
timing += millis();
while(millis() <=timing);

}
bool checkButton() {
    static bool pState;
    bool state = !digitalRead(BTN_PIN);

    if (pState != state) {
        pState = state;
     
        return state;
    }
    return false;
}


void toggleLED() {
    antidelay(1000); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(7, LOW);
antidelay(700); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(7, LOW);
antidelay(700); 
digitalWrite(8, HIGH);
antidelay(70); 
digitalWrite(8, LOW);
antidelay(700); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(8, LOW);
antidelay(1200);
}

void setup() {
    Serial.begin(115200);
    pinMode(BTN_PIN, INPUT_PULLUP);
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    
    if (checkButton()) toggleLED();
}

Исправленный код

Загрузил из сообщения 23, работают после подачи питания или нажатия кнопки по циклу тех задержек только 1 раз, по проекту должны так работать до второго нажатия кнопки(выключения) на фотке отметил светодиоды которые делаю, не знаю чем это поможет, но ладно, код загружаю на Arduino nano

После подачи питания ничего не работает. Скетч и фото не соответствует действительности!

У меня же работает, и я вроде даже объяснил как, почему не соответствует действительности?

Смоделируйте свою схему, вставьте скетч, увидите результат. https://wokwi.com

В скетче кнопка и светодиод, а на фото? Вы пришли спорить или чему-то научиться решить проблему?

На фото тоже кнопка и светодиод, другие там стоят и жить насколько я знаю мешать не должны, я не спорю, просто не могу понять почему то, что работает у меня не работает у вас

Дубль два!

#define BTN_PIN 3
void antidelay(uint32_t timing) {
timing += millis();
while(millis() <=timing);

}
bool checkButton() {
    static bool pState;
    bool state = !digitalRead (3);

    if (pState != state) {
        pState = state;
     
        return state;
    }
    return false;
}


void toggleLED() {
    antidelay(1000); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(7, LOW);
antidelay(700); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(7, LOW);
antidelay(700); 
digitalWrite(8, HIGH);
antidelay(70); 
digitalWrite(8, LOW);
antidelay(700); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(8, LOW);
antidelay(1200);
}

void setup() {
    Serial.begin(115200);
    pinMode(3, INPUT_PULLUP);
    pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}

void loop() {
    
    if (checkButton()) toggleLED();
}

Поздравляю, ваш дубль 2 сработал)
Извините, что-то конкретно я однако сегодня туплю, такая программа работать должна

Не программа а код*

Ну, тогда поздравляю. Вопрос решён?

Не совсем, она пока всë равно работает не так как надо, если что извиняюсь за назойливость, она по нажатию кнопки включается на одно повторение, а должна цикл со светодиодами гнать до второго нажатия

Одного не пойму - чего такого “анти” в функции antidelay()? )))

А в чём заключается “цикл”?

Если интернет не врëт, то с такой функцией останавливается не вся программа, а определëнная часть заключëнная в скобках

antidelay(1000); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(7, LOW);
antidelay(700); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(7, LOW);
antidelay(700); 
digitalWrite(8, HIGH);
antidelay(70); 
digitalWrite(8, LOW);
antidelay(700); 
digitalWrite(7, HIGH);
antidelay(70); 
digitalWrite(8, LOW);
antidelay(1200);

Включение и выключения светодиодов, вначале одного, после второго с одинаковыми промежутками включения и отключения, но горят один за другим, а не одновременно

врет :rofl:

1 лайк

Значит врëт.