这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » Beetle 树莓派RP2350 - 电位计

共1条 1/1 1 跳转至

Beetle 树莓派RP2350 - 电位计

助工
2025-06-02 23:50:41     打赏

Beetle 树莓派RP2350 - 电位计

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

扩展板及 3D 外壳详见:Beetle-RP2350扩展板 - 立创开源硬件平台 .https://oshwhub.com/lijinlei0907/beetle-rp2350-expansion-board

项目介绍

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

旋转电位器

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

potentionmeter_show.jpg

物理构造

电阻轨道:通常由碳膜、导电塑料或金属丝制成

滑动触点(电刷):与旋转轴相连,在电阻轨道上滑动

旋转轴:用户操作的旋转部件(通常有300°左右旋转范围)

三个引脚:两端接电源/VCC和GND,中间为可变的输出信号

工作原理

根据旋转角度改变电阻轨道与滑动触点之间的接触位置

形成分压电路,输出与角度成比例的电压信号

旋转角度与输出电压呈线性(线性电位器)或对数(音频电位器)关系

应用场景

参数调节(音量、亮度、速度等)

用户输入控制

模拟信号生成

位置/角度传感器(低成本应用)

原理图

SCH_Potentionmeter.jpg

硬件连接

GP26 -> S (rotate sensor)

GP4 -> SDA (OLED)

GP5 -> SCL (OLED)

BAT -> Battery Positive

GND -> Battery Negative

rotate_sensor_connect.jpg

流程图

flowchart_potentionmeter.jpg

代码

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

from machine import Pin, I2C, ADC
import ssd1306
import utime

# 初始化ADC
potentiometer = ADC(26)

# 初始化OLED (I2C0)
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=400000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)

# 用于存储ADC值的数组
adc_values = [0] * 128

def map_value(value, in_min, in_max, out_min, out_max):
    """将值从一个范围映射到另一个范围"""
    return (value - in_min) * (out_max - out_min) // (in_max - in_min) + out_min

def draw_graph():
    """在OLED上绘制ADC值曲线"""
    oled.fill(0)  # 清屏
    
    # 绘制坐标轴
    oled.hline(0, 63, 128, 1)  # X轴
    oled.vline(0, 0, 64, 1)     # Y轴
    
    # 绘制刻度标记
    for x in range(0, 128, 16):
        oled.vline(x, 61, 3, 1)
    for y in range(63, 0, -16):
        oled.hline(0, y, 5, 1)
    
    # 绘制曲线
    for x in range(1, 128):
        y1 = 63 - map_value(adc_values[x-1], 0, 65535, 0, 63)
        y2 = 63 - map_value(adc_values[x], 0, 65535, 0, 63)
        oled.line(x-1, y1, x, y2, 1)
    
    # 显示当前值
    current_value = adc_values[-1]
    oled.text("Value: {}".format(current_value), 0, 0)
    oled.rotate(0)
    oled.show()

while True:
    # 读取ADC值并更新数组
    adc_value = potentiometer.read_u16()
    adc_values.pop(0)
    adc_values.append(adc_value)
    
    draw_graph()
    
    utime.sleep_ms(50)

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

效果

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

potentionmeter_test.jpg

总结

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





关键词: 树莓派     RP2350     OLED     电位计     开发     DI    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]