【问题标题】:Calculating the speed a variable increases (python)计算变量增加的速度(python)
【发布时间】:2020-07-07 09:38:13
【问题描述】:

我有一个小问题,经过一段时间的谷歌搜索,我真的无法弄清楚如何解决。 我的项目由一个 rasberry pi 和一个旋转编码器组成,我将用作传感器来查看轴的旋转速度。然后用 Python 编码。那么我的问题是我不知道如何计算这个。旋转编码器直接连接到轴上,并以与轴相同的速度旋转,如果我使用this code,变量“counter”将在每次“点击”时增加 1。假设这就是我必须做的,我需要知道如何计算计数器增加的速度,以便获得轴的速度。这是因为轴将始终以不同的速度旋转。 我需要知道轴旋转速度的原因是因为我有一个可以显示速度的 UI。

如果您有任何其他我错过的方法,我也将不胜感激。 提前谢谢你。

【问题讨论】:

    标签: python math encoder acceleration


    【解决方案1】:

    这就是我计算速度的方式:

    首先在顶部添加这个 import time

    然后是开始时间变量

    clk = 17
    dt = 18
    starttime = time.time() ## used to calculate a duration
    

    如果您从 time.time() 中减去 starttime,您将得到自定义开始时间变量以来的时间 ( time.time() - 开始时间)

    所以你然后添加这个

    if dtState != clkState:
        counter += 1
        timetakentospinshaft = time.time() - starttime ## this is how long the shaft took to spin 360 degrees
        starttime = time.time() # resetting the duartion
    

    现在你有时间了,所以你可以用距离除以时间来计算速度 (速度=距离/时间)

    可以通过将轴的长度乘以2π来计算距离(计算周长) (距离=轴长*2π)

    【讨论】:

    • 但是当你写 starttime = time.time() 时,会不会 starttime 总是等于 time.time()?因此,timetakentospinshaft = 0?正如我的用户名所描述的那样,我有点脱离了我的舒适区呵呵。
    • @CPlusPlusandHTMLguy time.time() 函数返回自纪元以来的时间 - 基本上是从时间模块开始记录时间以来的时间,它不断变化,因为实时总是在变化
    • 我明白这一点,但 starttime 与 time.time 是否相同,因为它们在全球范围内定义为相等?
    • @CPlusPlusandHTMLguy 当您调用 time.time() 时,它会以浮点数形式返回当前时间。例如,如果自纪元以来的时间为 2,则调用 time.time() 将返回浮点数“2”,当自纪元以来的时间为 3 时,如果您存储了 2,time.time() 将返回浮点数“3”作为一个变量,它不会变成 3
    • 很抱歉这么菜鸟,我发现我认为 starttime 与 time.time 相同的原因是因为我上次将变量分配为等于另一个变量等。我在一个不断保持它们相同的循环中完成了它。但是,我现在正在测试你的建议,看看我是否可以让它工作。我现在没有我的设备,所以我正在使用击键来模仿计数器。完全没问题,只需要将其连接到 ui 即可。
    猜你喜欢
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多