#include <Arduino.h>
#include <FastLED.h>
const int buttonPin = 2; // 按钮引脚
const int lightSensorPin = A0; // 光敏电阻传感器引脚
const int buzzerPin = 9; // 蜂鸣器引脚
const int ledPin = 6; // LED环引脚
#define NUM_LEDS 12 // LED环中LED的数量
CRGB leds[NUM_LEDS]; // 创建LED环对象
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // 设置按钮引脚为输入模式,使用内部上拉电阻
pinMode(buzzerPin, OUTPUT); // 设置蜂鸣器引脚为输出模式
FastLED.addLeds<WS2812, ledPin, GRB>(leds, NUM_LEDS); // 初始化LED环
Serial.begin(9600); // 初始化串口通信
}
void loop() {
if (digitalRead(buttonPin) == LOW) { // 检测按钮是否被按下
int lightSensorValue = analogRead(lightSensorPin); // 读取光敏电阻传感器的数值
int mappedValue = map(lightSensorValue, 0, 1023, 1, 10); // 将数值映射到1到10的范围
for (int i = 0; i < mappedValue; i++) { // 根据映射值控制蜂鸣器的响声次数
tone(buzzerPin, random(200, 2000)); // 产生随机的音调
delay(1000); // 延迟1秒
noTone(buzzerPin); // 停止蜂鸣器的声音
delay(1000); // 延迟1秒
}
Serial.print("Light Sensor Value: "); // 打印光敏电阻传感器的数值
Serial.println(lightSensorValue);
Serial.print("Mapped Value: "); // 打印映射后的数值
Serial.println(mappedValue);
// 控制LED环的亮灭和颜色
if (mappedValue >= 1 && mappedValue <= 3) {
fill_solid(leds, NUM_LEDS, CRGB(0, 255, 0)); // 设置LED环为绿色
FastLED.show();
} else if (mappedValue >= 4 && mappedValue <= 6) {
fill_solid(leds, NUM_LEDS, CRGB(255, 255, 0)); // 设置LED环为黄色
FastLED.show();
} else if (mappedValue >= 7 && mappedValue <= 10) {
fill_solid(leds, NUM_LEDS, CRGB(255, 0, 0)); // 设置LED环为红色
FastLED.show();
}
// 控制LED环闪烁
for (int i = 0; i < mappedValue; i++) {
fill_solid(leds, NUM_LEDS, CRGB(0, 0, 0)); // 关闭LED
FastLED.show();
delay(300); // 延迟0.3秒
fill_solid(leds, NUM_LEDS, CRGB(255, 255, 255)); // 打开LED
FastLED.show();
delay(300); // 延迟0.3秒
}
fill_solid(leds, NUM_LEDS, CRGB(0, 0, 0)); // 关闭LED
FastLED.show();
delay(1000); // 延迟1秒
}
}