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

Помогите пожалуйста добавить кнопку в скетч, чтоб светодиоды включались при нажатии и откл. при повторном, - кнопка подключена к пину 2. вот скетч:

#include “Adafruit_NeoPixel.h”
#define LED_COUNT 9
#define LED_PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); //Инициализируем ленту.
}
void loop() {
for (int i = 0; i < LED_COUNT; i++)
{
strip.setPixelColor(i, strip.Color(100, 170, 100)); // Кр\Зел\Син.
strip.show();
delay(0);
}
for (int i = 0; i < LED_COUNT; i++)
{
}
strip.show();
delay(0);
}

Уж чем шмогла, чем шмогла. Вставлять в разрыв питания.
https://www.chipdip.ru/product0/8008774636

1 лайк

скетча не видно

#include "Adafruit_NeoPixel.h"
#define LED_COUNT 9
#define LED_PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup()
 {
  strip.begin(); //Инициализируем ленту.
}
void loop() {
  for (int i = 0; i < LED_COUNT; i++)
  {
    strip.setPixelColor(i, strip.Color(100, 170, 100)); // Кр\Зел\Син.
    strip.show();
    delay(0);
  }
  for (int i = 0; i < LED_COUNT; i++)
  {
  }
  strip.show();
  delay(0);
}

В глазки балуешься ?
Не ‘’’ , а ```

Не благодарите, “нема за що”.

9 лайков

Давай ты опишешь последовательные шаги как работает программа и место в этой последовательности, где можно вставить кнопку, а то может получиться что жмёшь кнопку, а программа продолжает выполнять задание отображать световой эффект и на кнопку не реагирует, т.к. время выполнения эффекта очень долгое. Без такого описания твоих хотелок ты будешь получать только глум, потому что вопрос сформулирован не корректно по отношению к тексту программы.

2 лайка

Вообщем у меня сделана подсветка из адресных светодиодов из 9 штук, она просто горит и все, меняю в программе Color(100, 170, 100)); // Кр\Зел\Син. и всё, подключена кнопка к d3 на минус, хотел сделать вкл\выкл.

Ви таки хочите это сами сделать или же “Прошу добавить кнопку в скетч”(с)

1 лайк

Я прошу по возможности помочь, кто компетентен в этих делах, вообщем добавить в скетч данные для возможности управлением светодиодами с помощью нажатия на кнопку с нормально-разомкнутым контактом.

Если вы так и будете на простые вопросы отвечать через четыре часа, то желающих помочь будет мало. Так и будет?

И да. Нужно пожоще ставить вопросы!

1 лайк

Мы бы рады, но возможности нет

1 лайк

Цикл for - блокирующий код и, лучше , по возможности, от него избавляться.
Но так тоже можно, при этом, вам придётся опрашивать кнопку внутри каждой итерации цикла for.

Для начала, научитесь управлять кнопкой одним светодиодом, примеров и в сети, и, на форуме полно.

Да ладно! Это смотря как ты его напишешь.)

1 лайк
Вот так пойдёть?
#include "Adafruit_NeoPixel.h"
#define LED_COUNT 9
#define LED_PIN 6
#define BUTTON_PIN 2

uint8_t btn_flag = 0;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin(); //Инициализируем ленту.
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {

  if ( !digitalRead(BUTTON_PIN) ) {
    btn_flag++;
    if (btn_flag > 2) {
      btn_flag = 0;
    }
    while (!digitalRead(BUTTON_PIN));
  }

  if (btn_flag == 1) {
    for (int i = 0; i < LED_COUNT; i++) {
      strip.setPixelColor(i, strip.Color(100, 170, 100)); // Кр\Зел\Син.
      strip.show();
      delay(0);
    }
  }

  if (btn_flag == 2) {
    for (int i = 0; i < LED_COUNT; i++) {
      strip.setPixelColor(i, strip.Color(0, 0, 0)); // Кр\Зел\Син.
      strip.show();
      delay(0);
    }
  }
}

Скетч использует 2680 байт (8%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 42 байт (2%) динамической памяти, оставляя 2006 байт для локальных переменных. Максимум: 2048 байт.

Для сельской местности пойдёт конечно(с кнопкой ещё косяк небольшой исправить), если LED_COUNT 9, и delay(0);
А, если больше диодов захочется, и, делей побольше - кнопка тормозить уже будет.

Это да, но в примере ТС - блокирующий ведь?

Об этом речи не было ))

Какой?