Прошу добавить кнопку в скетч

Повторное включение - два раза нажать надо.

Та фигня, за счёт дребезга проскочит :slightly_smiling_face:

1 лайк

Раз уж на то пошло и, ТС- у везёт сегодня -
вот и мой вариант, и простейший антидребезг))
Лучше сделать тоже неблокирующий, но сейчас уже нет времени.
delay() в цикле for спокойно до 100мс, а то и больше.

Спойлер
#include "Adafruit_NeoPixel.h"
#define LED_COUNT 9
#define LED_PIN 6
#define BTN_PIN  3
 
uint8_t btnStat = 0;
bool BTN = false;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, 

NEO_GRB + NEO_KHZ800);
void setup()
{
  pinMode(BTN_PIN, INPUT_PULLUP);
  strip.begin(); //Инициализируем ленту.
  Serial.begin(9600);
}

bool btnCheck()
{
  
  if (!digitalRead(BTN_PIN))
  {
    delay(2);//простейший антидребегз
    if (!digitalRead(BTN_PIN) && btnStat == 0)
    {
      btnStat = 1;
      BTN = true;
    }
     if (!digitalRead(BTN_PIN) && btnStat == 2)
     {
      btnStat = 3;
      BTN = false;
     }  
  }
   else
  {
    delay(2);
    if (digitalRead(BTN_PIN) && btnStat == 1)
    {
      btnStat = 2;
      BTN = true;
    }
    if (digitalRead(BTN_PIN) && btnStat == 3)
    {
      btnStat = 0;
      BTN = false;
    }
  }
  return BTN;
}


void loop() {
  
  for (int i = 0; i < LED_COUNT; i++)
  {
    
   if(btnCheck())
   strip.setPixelColor(i, strip.Color(100, 170, 100)); //
   else
   strip.setPixelColor(i, strip.Color(0, 0, 0)); // 
   strip.show();
   Serial.println(BTN);
    delay(100);
  }
 
}
 if (btn_flag > 2) {
      btn_flag = 1;
    }