529浏览
查看: 529|回复: 0
打印 上一主题 下一主题

[讨论] Beetle 树莓派RP2350 - 电位计

[复制链接]
本帖最后由 无垠的广袤 于 2025-6-3 00:54 编辑

Beetle 树莓派RP2350 - 电位计

本文介绍了 DFRobot Beetle RP2350 开发板结合 电位计 模块,实现 OLED 显示的电位曲线演化的项目设计。

扩展板及 3D 外壳详见:Beetle-RP2350扩展板 - 立创开源硬件平台 .

项目介绍

本项目包括旋转电位器模块介绍、工作原理、应用等信息,在此基础上实现工程代码编写、硬件测试等流程,最终实现电位计的制作。

旋转电位器

旋转电位器 (Rotary Potentiometer) 是一种常见的模拟输入设备,通过旋转轴来改变电阻值。

Beetle 树莓派RP2350 - 电位计图1

物理构造
  • 电阻轨道:通常由碳膜、导电塑料或金属丝制成
  • 滑动触点(电刷):与旋转轴相连,在电阻轨道上滑动
  • 旋转轴:用户操作的旋转部件(通常有300°左右旋转范围)
  • 三个引脚:两端接电源/VCC和GND,中间为可变的输出信号

工作原理
  • 根据旋转角度改变电阻轨道与滑动触点之间的接触位置
  • 形成分压电路,输出与角度成比例的电压信号
  • 旋转角度与输出电压呈线性(线性电位器)或对数(音频电位器)关系

应用场景
  • 参数调节(音量、亮度、速度等)
  • 用户输入控制
  • 模拟信号生成
  • 位置/角度传感器(低成本应用)

原理图
Beetle 树莓派RP2350 - 电位计图2

硬件连接

  • GP26 -> S (rotate sensor)
  • GP4 -> SDA (OLED)
  • GP5 -> SCL (OLED)
  • BAT -> Battery Positive
  • GND -> Battery Negative
Beetle 树莓派RP2350 - 电位计图3

流程图

Beetle 树莓派RP2350 - 电位计图4

代码


打开 Thonny IDE 软件,连接开发板,新建 main.py 文件,并添加如下代码

  1. from machine import Pin, I2C, ADC
  2. import ssd1306
  3. import utime
  4. # 初始化ADC
  5. potentiometer = ADC(26)
  6. # 初始化OLED (I2C0)
  7. i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=400000)
  8. oled = ssd1306.SSD1306_I2C(128, 64, i2c)
  9. # 用于存储ADC值的数组
  10. adc_values = [0] * 128
  11. def map_value(value, in_min, in_max, out_min, out_max):
  12.     """将值从一个范围映射到另一个范围"""
  13.     return (value - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
  14. def draw_graph():
  15.     """在OLED上绘制ADC值曲线"""
  16.     oled.fill(0)  # 清屏
  17.    
  18.     # 绘制坐标轴
  19.     oled.hline(0, 63, 128, 1)  # X轴
  20.     oled.vline(0, 0, 64, 1)     # Y轴
  21.    
  22.     # 绘制刻度标记
  23.     for x in range(0, 128, 16):
  24.         oled.vline(x, 61, 3, 1)
  25.     for y in range(63, 0, -16):
  26.         oled.hline(0, y, 5, 1)
  27.    
  28.     # 绘制曲线
  29.     for x in range(1, 128):
  30.         y1 = 63 - map_value(adc_values[x-1], 0, 65535, 0, 63)
  31.         y2 = 63 - map_value(adc_values[x], 0, 65535, 0, 63)
  32.         oled.line(x-1, y1, x, y2, 1)
  33.    
  34.     # 显示当前值
  35.     current_value = adc_values[-1]
  36.     oled.text("Value: {}".format(current_value), 0, 0)
  37.     oled.rotate(0)
  38.     oled.show()
  39. while True:
  40.     # 读取ADC值并更新数组
  41.     adc_value = potentiometer.read_u16()
  42.     adc_values.pop(0)
  43.     adc_values.append(adc_value)
  44.    
  45.     draw_graph()
  46.    
  47.     utime.sleep_ms(50)
复制代码


将该文件上传至 Beetle RP2350 开发板根目录,上电自动运行程序。

效果

旋转电位计旋钮,可实现对应 ADC 数值的输出与动态演化曲线

Beetle 树莓派RP2350 - 电位计图5

总结

本文介绍了 DFRobot Beetle RP2350 开发板结合 电位计 模块,实现 OLED 显示的电位曲线演化的项目设计,为 RP2350 的开发设计和产品应用提供了参考。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail