// ----------------- Кнопка GPIO TACH_PIN
//
void initTach() {
pinMode(TACH_PIN,INPUT_PULLUP);
// Кнопка будет работать по прерыванию
attachInterrupt(TACH_PIN, Tach, FALLING ); //прерывание сработает, когда состояние вывода изменится с высокого уровня на низкий
}
// Выполняется при нажатии на кнопку
void Tach() {
static unsigned long millis_prev;
// Устроняем дребезг контакта
if (millis() - 250 > millis_prev) {
if (state) {
state = 0;
ws2812fx.start();
}
else {
state = 1;
ws2812fx.stop();
}
Спасибо за помощь. Только лента изначально получается включена а нужно чтобы была выключена
include
define LED_COUNT 293
define LED_PIN 2
WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); uint8_t TACH_PIN = 5; int state = 0; void setup() { Serial.begin(115200); ws2812fx.init(); ws2812fx.setBrightness(1); ws2812fx.setSpeed(200); ws2812fx.setColor(0x007BFF); ws2812fx.setMode(FX_MODE_STATIC); state = 1; ws2812fx.start(); initTach(); }
void loop() { ws2812fx.service(); }
// ----------------- Кнопка GPIO TACH_PIN // void initTach() { pinMode(TACH_PIN,INPUT_PULLUP); // Кнопка будет работать по прерыванию attachInterrupt(TACH_PIN, Tach, FALLING ); //прерывание сработает, когда состояние вывода изменится с высокого уровня на низкий } // Выполняется при нажатии на кнопку void Tach() { static unsigned long millis_prev; // Устроняем дребезг контакта if (millis() - 250 > millis_prev) { if (state) { state = 0; ws2812fx.start(); } else { state = 1; ws2812fx.stop(); }
} millis_prev = millis(); }