arduino平衡传感器控制灯带展现多种灯光效果的代码
时间: 2023-08-04 10:08:37 浏览: 207
灯带控制,利用Arduino
5星 · 资源好评率100%
以下是使用Arduino平衡传感器控制灯带展现多种灯光效果的代码:
```
#include <FastLED.h> // 引入FastLED库
#define LED_PIN 7 // 灯带连接的引脚
#define NUM_LEDS 60 // 灯带上LED灯珠的数量
CRGB leds[NUM_LEDS]; // 定义灯光数组
#define SAMPLES 30 // 平衡传感器采样数量
#define THRESHOLD 30 // 平衡传感器阈值
#define DELAY_TIME 10 // 延时时间
int sensorPin = A0; // 平衡传感器连接的引脚
int sensorValue = 0; // 平衡传感器采样值
int samples[SAMPLES]; // 平衡传感器采样数组
int sampleIndex = 0; // 平衡传感器采样索引
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); // 初始化灯光控制
}
void loop() {
sensorValue = analogRead(sensorPin); // 读取平衡传感器采样值
samples[sampleIndex] = sensorValue; // 将采样值存入数组中
sampleIndex = (sampleIndex + 1) % SAMPLES; // 更新采样索引
int sum = 0;
for (int i = 0; i < SAMPLES; i++) {
sum += samples[i]; // 计算采样值总和
}
int average = sum / SAMPLES; // 计算采样值平均值
if (abs(average - sensorValue) > THRESHOLD) { // 如果平衡传感器采样值变化超过阈值
int randomEffect = random(0, 3); // 随机选择一种灯光效果
switch (randomEffect) {
case 0:
rainbow(); // 彩虹效果
break;
case 1:
confetti(); // 糖果效果
break;
case 2:
sparkle(); // 闪烁效果
break;
}
}
FastLED.show(); // 更新灯光效果
delay(DELAY_TIME); // 等待一段时间
}
void rainbow() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CHSV(i * 255 / NUM_LEDS, 255, 255); // 设置HSV颜色
}
}
void confetti() {
for (int i = 0; i < NUM_LEDS; i++) {
int randomHue = random(0, 255); // 随机选择一种颜色
leds[i] = CHSV(randomHue, 255, 255); // 设置HSV颜色
}
}
void sparkle() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB::Black; // 先将所有LED灯珠设置为黑色
}
int randomIndex = random(0, NUM_LEDS); // 随机选择一个LED灯珠
leds[randomIndex] = CRGB::White; // 将该LED灯珠设置为白色
}
```
这段代码使用平衡传感器采集数据,当平衡传感器采样值变化超过阈值时,随机选择一种灯光效果展现在灯带上。其中,`rainbow()`函数实现彩虹效果,`confetti()`函数实现糖果效果,`sparkle()`函数实现闪烁效果。通过修改这些函数中的代码,可以实现更多种类的灯光效果。
阅读全文