You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino连接超声波传感器时Matplotlib实时绘图数值显示异常求助

问题修复方案

故障原因

核心故障是你直接把串口读取的字符串存入了Y轴数组,Matplotlib识别到Y值为字符串类型时,会将其作为分类变量处理,不会按照数值大小排序,因此会出现小数值显示在大数值上方的异常。

修复代码

import serial
import matplotlib.pyplot as plt

# 串口初始化,根据你的实际端口修改
ser = serial.Serial("COM3", baudrate=9600, timeout=1)
plt.ion()
fig = plt.figure()

x, y = list(), list()
i = 0

while True:
    ser.write(b'u')
    data = ser.readline()
    # 解码后转成整数再存入Y数组,有小数需求可换成float()
    pri_data = int(data.decode("ascii").strip())
    
    x.append(i)
    y.append(pri_data)
    # 清除上一轮绘图内容,避免曲线堆叠
    plt.clf()
    # 可根据你的超声波量程固定Y轴范围,比如最大测距400cm就设为0-400
    # plt.ylim(0, 400)
    plt.plot(x, y)
    plt.pause(0.0001)
    i += 1
    print(pri_data)

额外优化说明

  • 新增了.strip()处理解码后的字符串,自动过滤掉串口传输附带的换行符、空格等无效字符,避免类型转换报错
  • 每次循环前清除旧画布,不会重复生成多条曲线,长时间运行也不会出现卡顿
  • 可选固定Y轴范围,避免每次更新数据时Y轴刻度频繁跳动,观感更好

内容的提问来源于stack exchange,提问作者Falgun Pawar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 08:27:03