Дополнить скетч для подсветки кнопкой включения

DmiwX

✩✩✩✩✩✩✩
31 Янв 2025
2
0
Оформи код соответствующим тэгом, см. Правила
Arduino nano. В этом скетче зажигается лента из 9 адресных светодиодов, нужно добавить в скетч управление кнопкой вкл\выкл, обычная кнопка (нормальноразомкнутый контакт) подключена к d3 и на gnd, лента на d6. Заранее благодарю. Вот скетч:


#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);
}
 

poty

★★★★★★✩
19 Фев 2020
3,449
982
@DmiwX, это шутка такая? Добавить кнопку, чтобы включала или выключала ленту? 8)
 

DmiwX

✩✩✩✩✩✩✩
31 Янв 2025
2
0
сделал, спасибо

#include <FastLED.h>

// Определение параметров светодиодов
#define NUM_LEDS 9
#define DATA_PIN 6 // Указываем номер пина как число, без D

CRGB leds[NUM_LEDS]; // Массив для светодиодов
const int buttonPin = 3; // Пин кнопки (указываем номер пина как число)
int brightnessLevel = 0; // Уровень яркости: 0 - выключено, 1 - 70%, 2 - 100%
const int buttonDebounceDelay = 300; // Задержка для устранения дребезга
unsigned long lastButtonPress = 0; // Время последнего нажатия на кнопку

void setup() {
// Инициализация светодиодов
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
pinMode(buttonPin, INPUT_PULLUP); // Настройка пина кнопки на вход с подтягивающим резистором
}

void loop() {
// Проверка состояния кнопки
if (digitalRead(buttonPin) == LOW && (millis() - lastButtonPress) > buttonDebounceDelay) {
lastButtonPress = millis(); // Обновляем время последнего нажатия

// Изменяем уровень яркости
brightnessLevel = (brightnessLevel + 1) % 3;

// Устанавливаем цвет в зависимости от уровня яркости
if (brightnessLevel == 0) {
// Выключаем светодиоды
for (int i = 0; i < NUM_LEDS; i++) {
leds = CRGB::Black;
}
} else if (brightnessLevel == 1) {
// Устанавливаем 70% яркость
for (int i = 0; i < NUM_LEDS; i++) {
leds = CRGB(0, 255 * 0.7, 0); // Зеленоватый цвет на 70%
}
} else if (brightnessLevel == 2) {
// Устанавливаем 100% яркость
for (int i = 0; i < NUM_LEDS; i++) {
leds = CRGB(0, 255, 0); // Зеленоватый цвет на 100%
}
}

FastLED.show(); // Обновление состояния светодиодов
}
}