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

嵌套循环执行异常:步进电机往返动作重复问题排查

步进电机往返循环问题修复

问题根源

  1. 外层循环的计数器i递增语句i = i + 1写在了while i < reps循环块之外,导致i始终为初始值0,外层循环无限执行;同时第一次内层循环跑完后,n的值等于steps,后续外层循环直接跳过前进逻辑,只重复执行退回动作。
  2. 内层循环计数器n未在每次外层循环开始时重置,第一次完成steps步前进后,n不再满足n < steps的条件,后续循环无法触发前进动作。

修复后的代码

def steptofull(reps, steps, speed, axis, distance):
    i = 0
    strecke = distance
    # rdistance = 0
    while i < reps:
        n = 0  # 每次往返开始时重置内层步数计数器
        while n < steps:
            distance = strecke // steps  # 按步数拆分总距离(整除)
            # mod = strecke % steps # 可保留此逻辑处理剩余距离误差
            fahren(speed, axis, distance)
            time.sleep(1)
            flushbuffer()
            n = n + 1
            print(n)
        # 用初始总距离执行退回,避免变量混淆
        fahren(speed, axis, -strecke)
        time.sleep(1)
        i = i + 1  # 外层循环计数器移到循环内部递增

补充优化提示

  • 原代码退回时误用了被拆分后的distance变量,改用初始的strecke更准确,避免因变量重赋值导致的逻辑错误
  • 如果总距离无法被steps整除,可利用mod = strecke % steps计算剩余距离,在最后一次前进时将剩余距离补上,提升步进精度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:00:58