请帮我写一个Arduino代码,实现通过声音传感器,对于不同大小的声音,REBLED灯显示不同的颜色并将声音的数值显示在OLED屏幕上
时间: 2024-02-22 11:58:42 浏览: 14
好的,根据您的需求,我为您编写了如下的Arduino代码,实现声音传感器检测声音大小,并根据不同大小的声音,通过REBLED灯显示不同的颜色,同时将声音数值显示在OLED屏幕上。请注意,以下代码仅供参考,您需要根据具体硬件和传感器型号进行适当的修改和调整。
```C++
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define SOUND_SENSOR A0
#define RED_LED 3
#define BLUE_LED 5
#define GREEN_LED 6
void setup() {
pinMode(SOUND_SENSOR, INPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.println("Sound Sensor");
display.display();
}
void loop() {
int soundValue = analogRead(SOUND_SENSOR);
int redValue = 0;
int blueValue = 0;
int greenValue = 0;
if (soundValue < 300) {
redValue = 255;
} else if (soundValue >= 300 && soundValue < 600) {
redValue = 255;
greenValue = 255;
} else if (soundValue >= 600) {
blueValue = 255;
}
analogWrite(RED_LED, redValue);
analogWrite(GREEN_LED, greenValue);
analogWrite(BLUE_LED, blueValue);
display.clearDisplay();
display.setCursor(0,0);
display.print("Sound: ");
display.print(soundValue);
display.display();
delay(100);
}
```
在上述代码中,我们使用了Adafruit_SSD1306库来控制OLED屏幕的显示,使用了analogRead函数读取声音传感器的数值,使用analogWrite函数控制REBLED灯的亮度。根据声音数值的大小,我们分别设置了不同的颜色值,将其通过analogWrite函数传递给对应的REBLED灯。同时,我们将声音值通过OLED屏幕显示出来,以便用户查看。
在使用以上代码时,您需要注意以下几点:
1. 请确保已经正确连接好了硬件,包括声音传感器,REBLED灯和OLED屏幕;
2. 请根据具体传感器型号和硬件连接情况,适当修改代码中的引脚号;
3. 请根据需要适当调整代码中的阈值,以实现不同大小声音对应不同的颜色和亮度;
4. 代码中使用了延时函数delay(100),您可以根据需要调整延时时间,以实现更加精准的声音检测与显示。
祝您成功实现您的项目!