首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >树莓Pi和OctoPrint纤维运动传感器

树莓Pi和OctoPrint纤维运动传感器
EN

Stack Overflow用户
提问于 2020-05-12 15:28:10
回答 1查看 195关注 0票数 0

我正在尝试制作一个长丝运动传感器,并将其与运行在Raspberry Pi 3型号B+上的Octoprint集成在一起。

我的目标是制作一个装置,当它感觉到灯丝在特定的时间内没有移动时,就会暂停打印,比如说10秒。

我已经从垃圾堆里挖出了一辆原型,还有一辆从我哥哥那里偷来的玩具车,并把它和Raspberry连接起来。它使用了光耦编码器模块与LM393和其他内置的东西。它的数字输出连接到Raspberry的GPIO引脚。灯丝进入橡胶轮之间,转动它们,在上轮的轴上安装编码器轮,改变传感器的状态。

现在我的问题来了。我不太熟悉Python,尤其是中断。

我知道如何在循环中读取传感器的状态:

代码语言:javascript
复制
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
    while True:
     if (GPIO.input(26) == 1)
      do magic
     elif (GPIO.input(26) == 0)
      do other magic

我还看到,更好的做法是在这方面使用中断:

代码语言:javascript
复制
GPIO.setup(pin, GPIO.IN)    
GPIO.add_event_detect(pin, GPIO.BOTH, callback = function)

但是,,我不知道如何设置一个倒计时,在改变传感器的状态后,它会从10计数到0,它会停止并重新设置状态的改变并重新计数。

当倒计时实际上达到0时,它会触发另一个GPIO引脚。

在解决了这个问题后,我将使用OctoPrint的插件来处理阻塞指示信号,并暂停打印。

我也很乐意为传感器做更好的设计,并与thingiverse或诸如此类的人分享。

是的,我知道商业全合一干扰传感器已经存在了,但是仅仅买下所有东西而不使用垃圾(以及不偷汽车玩具)就没有什么乐趣了。我也认为我的想法更便宜一些。

EN

回答 1

Stack Overflow用户

发布于 2020-08-13 22:10:39

你会用计时器。

import threading def hello(): print "hello, world" t = Timer(30.0, hello) t.start() # after 30 seconds, "hello, world" will be printed

来自https://docs.python.org/3.8/library/threading.html#timer-objects

当您移动到OctoPrint插件时,代码是类似的。

def hello(): print("Hello World!") t = RepeatedTimer(1.0, hello) t.start() # prints "Hello World!" every second

来自https://docs.octoprint.org/en/master/modules/util.html?highlight=repeatedtimer#octoprint.util.RepeatedTimer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61755628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档