文章目录
- 前言
- 一、电位器的介绍
- 1.1 他是什么
- 1.2 电位器的原理
- 1.3 电位器的应用领域
- 二、读取电位器数据
- 2.1 如何读取
- 2.2 连线
- 2.3 示例代码
- 总结
前言
Arduino与ESP32是当今嵌入式系统开发领域中最受欢迎的平台之一,它们的灵活性和易用性使得它们成为了众多项目的首选开发工具。旋转电位器(Rotary Encoder)作为一种常用的输入设备,被广泛应用于各种交互式系统中,如旋钮、游戏手柄等。本教程将为您介绍如何在Arduino与ESP32平台上使用旋转电位器,以及如何利用它们实现各种实用的功能。
一、电位器的介绍
1.1 他是什么
电位器是一种常用的电阻器件,用于调节电压或电流的大小。它通常由一个可旋转的旋钮或杆和一个固定的电阻器构成,通过旋转旋钮或杆,可以改变电位器上的接触点位置,从而改变电阻值。
1.2 电位器的原理
电位器的工作原理基于电阻分压原理。它包含了一个可变电阻和一个固定电阻,两者之间通过一个可移动的接触点连接。当旋钮或杆旋转时,接触点的位置相应地移动,改变了可变电阻的长度,从而改变了整体电阻值。
1.3 电位器的应用领域
音量控制: 电位器常用于调节音频设备的音量,如收音机、音响系统等。
屏幕亮度控制: 在一些显示设备中,电位器被用来调节屏幕的亮度,如显示器、电视等。
电机速度控制: 电位器可用于调节电机的速度,如电动车、风扇等。
灯光调节: 在照明系统中,电位器可用于调节灯光的亮度,如台灯、车灯等。
温度控制: 在温控系统中,电位器可用于调节温度控制器的设置温度。
控制系统: 在工业自动化领域,电位器可用于调节控制系统的参数,如PID控制器的增益。
总之,电位器在各种电子设备和系统中都有广泛的应用,是一种简单而有效的调节元件,用于调节电压、电流或其他参数的大小。
二、读取电位器数据
2.1 如何读取
因为电位器的原理是改变电压的,我们通过普通的读取数据肯定读取不到具体改变多少,所以我们需要使用ADC来读取电压
2.2 连线
2.3 示例代码
在写代码之前,我们需要先介绍一个函数:map()
map()函数将输入值 x 从一个范围映射到另一个范围。例如,如果你有一个输入值范围在 in_min 和 in_max 之间,你可以使用 map() 函数将该值映射到 out_min 和 out_max 之间的值。这在许多情况下非常有用,比如将传感器读数映射到特定范围内的值,或者将模拟输入的范围转换为控制器的输出范围
在Arduino中,map()函数的原型如下:
long map(long x, long in_min, long in_max, long out_min, long out_max);
参数的作用如下:
x: 要映射的值。
in_min: 输入范围的最小值。这是原始值的最小边界。
in_max: 输入范围的最大值。这是原始值的最大边界。
out_min: 输出范围的最小值。这是映射后值的最小边界。
out_max: 输出范围的最大值。这是映射后值的最大边界。
const int potPin = 35; // 定义电位器接入的模拟输入引脚
int potValue = 0; // 存储电位器读数
int percentage = 0; // 存储转换后的进度值
void setup() {
pinMode(potPin,INPUT);
Serial.begin(9600); // 启动串口通信
}
void loop() {
// 读取电位器数值
potValue = analogRead(potPin);
// 将 0-1023 的模拟读数转换为 0-100 的进度值
percentage = map(potValue, 0, 4096, 0, 100);
// 打印进度值到串口监视器
Serial.print("Potentiometer Value: ");
Serial.print(potValue);
Serial.print(" | Percentage: ");
Serial.println(percentage);
// 延迟一段时间以便观察输出
delay(500);
}
总结
通过本教程,我们学习了如何在Arduino与ESP32平台上使用旋转电位器进行输入操作。首先,我们了解了旋转电位器的原理和工作方式,然后学习了如何通过编程读取旋转电位器的旋转方向和旋转速度。接着,我们实践了一些示例项目,如控制LED的亮度、调节音量等,展示了旋转电位器在实际项目中的应用。最后,我们总结了本教程的内容,并鼓励读者继续探索更多有趣的项目和应用场景,发挥Arduino与ESP32平台的无限潜力。