【史上最全面arduino esp32教程】电位器


前言

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平台的无限潜力。

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值