Отслеживание только 2х нажатий кнопки

bool a_dr=false;
bool first=false;
uint16_t=period;
unsigned long=_time_;
void setup() {
    
}

void loop() {
  if (allow)
  { if (!digitalRead(/* нужная ножка*/))
    if(!first){first=true;
      allow=false;
      _time_=millis;
      period=30;
      a_dr=true;
    }
    else{
    digitalWrite(/* нужная ножка*/,true);//включаем СД  
    _time_=millis();
    period=8000;
    allow=false;
    }
  }
  else{
  if(millis()-_time_>=period&&a_dr){
    allow=true;
    }
  if(millis()-_time_>=100)digitalWrite(/* нужная ножка*/,false);//выключаем СД  
  if(millis()-_time_>=period)allow=true;  
  }  
}
попробуйте так

Да? То есть два клика отслеживать не надо (и на этом останавливаться)? Умываю руки.

Немного подправить придётся

Интересно! Я ведь ещё только понедельник, будь он не ладен!

Ваш код не заработал, я поправил как посчитал правильным(но видать ошибся) срабатывает от первого нажатия…

bool a_dr = false;
bool first = false;
uint16_t period;
unsigned long _time_;
int allow;
int led = 4;
int butt = 2;
void setup() {
    pinMode(led, OUTPUT);
    pinMode(butt, INPUT_PULLUP);
}

void loop() {
  if (allow)
  { if (!digitalRead(2))
    if(!first){first=true;
      allow=false;
      _time_=millis;
      period=30;
      a_dr=true;
    }
    else{
    digitalWrite(4,true);//включаем СД  
    _time_=millis();
    period=8000;
    allow=false;
    }
  }
  else{
  if(millis()-_time_>=period&&a_dr){
    allow=true;
    }
  if(millis()-_time_>=100)digitalWrite(4,false);//выключаем СД  
  if(millis()-_time_>=period)allow=true;  
  }  
}

а где pressingCounter++ и if(pressingCounter>42) {} ?

А вот здесь уже моих знаний не хватает к сожалению…

Попробуйте хотя-бы - вдруг получится.

очень может быть, с первого раза всегда не так

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

bool a_dr = false;
bool first = false;
uint16_t period;
unsigned long _time_;
int allow;
int led = 4;
int butt = 2;
int pressingCounter;
void setup() {
    pinMode(led, OUTPUT);
    pinMode(butt, INPUT_PULLUP);
}

void loop() {
  if (allow)
  { if (!digitalRead(2))
  if(pressingCounter>42) {}
    if(!first){first=true;
    pressingCounter++;
      allow=false;
      _time_=millis;
      period=30;
      a_dr=true;

    }
    else{
    digitalWrite(4,true);//включаем СД  
    _time_=millis();
    period=8000;
    allow=false;
    }
  }
  else{
  if(millis()-_time_>=period&&a_dr){
    allow=true;
    }
  if(millis()-_time_>=100)digitalWrite(4,false);//выключаем СД  
  if(millis()-_time_>=period)allow=true;  
  }  
}

это нужно там, где поджигается светодиод.
Ну, и не забывайте, что когда-то счётчик следует обнулять.

Откуда взято 42, я правильно понимаю?

Тему можно закрывать. решил вопрос благодаря библиотеке kakmyc_btn

#include <kakmyc_btn.h>
kakmyc_btn Btn2 (2, INPUT_PULLUP, 2);
int led = 4;
void setup(){
pinMode(led, OUTPUT);
}
void loop() {
int BTN2=Btn2.read();
if((BTN2) == 2) {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(10000);
 }
}

Пришлось поковыряться в CPP файле и поправить мультиклик под мой интервал. И все заработало. Огромное спасибо тебе BOOM за наводку)))
Так же спасибо всем кто пытался помочь: [Alexey_Rem] , а не строил умника!)

Мне интересно, а как не показывать ум, если человек реально умнее?
Нельзя “строить умника” чтобы не оскорблять чувства тупых, так правильно?

Для чего создан форум? Чтобы обсуждать и помогать я правильно понимаю? Ну так если видно что я делаю что то не так, неужели нельзя все сделать правильно как понимающий человек? Мое время деньги. Ваше тоже. Надо заплатить, заплатил бы…

Кто-нибудь знает, слово “псец” - это слово “пёс” “с суффиксом -ец в роли субъективной оценки”? Или это другое?

Этот - для общения по интересам. Не для помощи страждущим :wink:

Нет, неправильно. Отсюда (от неправильного понимания) и Ваши проблемы в общении на форуме.

Форум создан для общение по интересам. С Вами не общаются потому, что Вы неинтересны присутствующим. Станьте интересным, и Вас будут боготворить.

Я тут поспешил немного, начал проверять, код ждет пока я завершу щелкать кнопку… Есть мысли? Прописать может типа остановки после 2х нажатий?.. а так все хорошо было…

kakmyc_btn Btn2 (2, INPUT_PULLUP, 2);
int led = 4;
void setup(){
pinMode(led, OUTPUT);
}
void loop() {
int BTN2=Btn2.read();
if((BTN2) == 2) {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(10000);
 }
}```

Кажется, я сам дошёл до ответа на своё вопрос: