一、硬件介绍
1、主控开发板
使用的是XIAO ESP32S3开发板,集成ESP32S3 32位双核处理器芯片,最高运行频率240MHz,板载8MB PSRAM和8MB FLASH

功能引脚示意图

2、Grove Creator Kit 器件
在本次开发中,使用到的 `Grove Creator Kit 套件` 中的器件如下:
Grove - Buzzer 有源蜂鸣器
> Grove - 蜂鸣器模块的主要组件是一个压电蜂鸣器压;
> 压电蜂鸣器可以连接到数字输出,当输出为高电平时会发出音调

主要特性

Grove - Rotary Angle Sensor 旋转角度传感器
> 旋转角度传感器在其D1连接器上产生0到VCC之间的模拟输出;
> 角度范围为300度,值呈线性变化,电阻值为10k欧姆;

主要特性

二、功能实现
1、硬件搭建
将旋转角度传感器、蜂鸣器模块,分别通过Grove接口连接到开发板对应的引脚上;

实物搭建效果:

2、功能效果
通过蜂鸣器播放谐振频率(2300Hz)声音,并且通过旋转传感器旋钮,读取当前传感器的ADC数值,并换算出对应旋转角度所对应蜂鸣器音量的大小,从而实现音量调节;
> 串口打印输出当前旋钮角度(0~ 300)和音量的大小(0~ 255)数值;
三、代码编写
主要相关代码
#define ANGLE_SENSOR A8
#define Buzzer D5
#define ADC_REF 3.3
#define GROVE_VCC 3.3
#define FULL_ANGLE 300
#define PWM_FREQ 2300 // 蜂鸣器谐振频率
#define PWM_RES 8
void setup()
{
Serial.begin(115200);
pinMode(ANGLE_SENSOR, INPUT);
//固定2300Hz
ledcAttach(Buzzer, PWM_FREQ, PWM_RES);
}
void loop()
{
int sensor_value = analogRead(ANGLE_SENSOR);
float voltage = (float)sensor_value * ADC_REF / 4095.0f;
float degrees = (voltage * FULL_ANGLE) / GROVE_VCC;
//角度映射音量
int volume = map(degrees, 0, FULL_ANGLE, 0, 255);
volume = constrain(volume, 0, 255);
ledcWrite(Buzzer, volume);
Serial.print("角度:");
Serial.print(degrees);
Serial.print(" ° 音量大小:");
Serial.println(volume);
Serial.println("----------------");
delay(100);
}四、程序烧录
1、连接USB数据线至开发板;
2、选择端口号对应的开发板;
3、点击 `上传` 烧录程序到开发板上;

五、效果演示

我要赚赏金
