#include <Adafruit_NeoPixel.h> //8 6 4 5
#define LED_PIN 8 // WS2812连接的引脚
#define NUM_LEDS 24 // WS2812的数量
int PRESS = 0;
int LIGHT = 0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(6, INPUT_PULLUP);
pinMode(16, INPUT_PULLUP);//左转
pinMode(17, INPUT_PULLUP); //右转
strip.begin();
strip.show(); // 初始化所有像素为'off'
}
void loop() {
if (!digitalRead(6)) {
int n = 0;
while (digitalRead(16) == LOW) {
strip.setPixelColor(n, strip.Color(255, 255, 0));
strip.show();
n++;
if (n == 24) {
n = 0;
delay(70);
setColor(0, 0, 0);
}
delay(60);
}
if (digitalRead(16) != digitalRead(17)) {
setColor(0, 0, 0);
}
n = 24;
while (digitalRead(17) == LOW) {//右转
Serial.println(n);
n--;
strip.setPixelColor(n, strip.Color(255, 255, 0));
strip.show();
if (n == 0) {
n = 24;
delay(70);
setColor(0, 0, 0);
}
delay(60);
}
if (digitalRead(16) != digitalRead(17)) {
setColor(0, 0, 0);
}
if (digitalRead(16) == digitalRead(17)) {
//////////////////////////////////////////////////////////////////////////////////////
PRESS = analogRead(4);
LIGHT = analogRead(5);
Serial.print(LIGHT);
Serial.print("L P");
Serial.println(PRESS);
if (LIGHT < 2000) {
if (PRESS > 100) {
breatheEffect(90); // 调用呼吸效果函数,频率为90次每秒
} else {
setColor(255, 0, 0); // 设置为常亮红色
}
}
else {
if (PRESS > 200) {
breatheEffect(90); // 调用呼吸效果函数,频率为90次每秒
}
else {
setColor(0, 0, 0);
}
}
}
}
else
{
delay(20);
}
}
void setColor(uint8_t r, uint8_t g, uint8_t b) {
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(r, g, b)); // 设置每个像素的颜色
}
strip.show(); // 显示更新后的颜色
}
void breatheEffect(int frequency) {
unsigned long interval = 1000 / (frequency * 2); // 计算每次呼吸的时间间隔(毫秒),乘2因为包含了淡入和淡出
for (int brightness = 0; brightness < 256; brightness++) {
setColor(brightness, 0, 0); // 呼吸效果的亮度控制
delay(interval);
}
for (int brightness = 255; brightness >= 0; brightness--) {
setColor(brightness, 0, 0); // 呼吸效果的亮度控制
delay(interval);
}
}Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1