#include <Adafruit_NeoPixel.h>
#include <LiquidCrystal.h>
#define LED_PIN 5
#define NUM_LEDS 256
#define BUTTON_UP_PIN 3
#define BUTTON_DOWN_PIN 4
#define LDR_PIN A0
#define SWITCH_PIN 6
Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
volatile int mode = 0;
bool switchState = false;
int threshold = 500; // Объявление и инициализация порогового значения
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
lcd.begin(16, 2);
pinMode(BUTTON_UP_PIN, INPUT_PULLUP);
pinMode(BUTTON_DOWN_PIN, INPUT_PULLUP);
pinMode(SWITCH_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_UP_PIN), increaseMode, FALLING);
attachInterrupt(digitalPinToInterrupt(BUTTON_DOWN_PIN), decreaseMode, FALLING);
}
void loop() {
int ldrValue = analogRead(LDR_PIN);
switchState = digitalRead(SWITCH_PIN);
if (switchState == LOW) {
if (ldrValue < threshold) { // Пороговое значение
strip.clear();
strip.show();
} else {
playAnimation(mode);
}
} else {
playAnimation(mode);
}
}
void increaseMode() {
mode = (mode + 1) % 3;
updateDisplay();
}
void decreaseMode() {
mode = (mode - 1 + 3) % 3;
updateDisplay();
}
void updateDisplay() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Mode: ");
lcd.print(mode + 1);
lcd.setCursor(0, 1);
lcd.print("Anim: ");
// Здесь добавьте код для отображения названия анимации
}
void playAnimation(int mode) {
switch (mode) {
case 0:
// Код для первой анимации
break;
case 1:
// Код для второй анимации
break;
case 2:
// Код для третьей анимации
break;
}
}