我正在尝试制作一个灯丝运动传感器并将其与运行在 Raspberry Pi 3 模型 B+ 上的 Octoprint 集成。
我的目标是制造一种设备,当它感应到灯丝在给定时间内没有移动时会暂停打印,比如说 10 秒。
我已经用周围的垃圾和从我兄弟那里偷来的玩具车制作了一个原型,并将其连接到 Raspberry。它使用带有 LM393 和其他内置材料的光耦合器编码器模块。它的数字输出连接到 Raspberry 的 GPIO 引脚。细丝进入橡胶轮之间转动它们,上轮的轴上安装了编码器轮,它改变了传感器的状态。
现在我的问题来了。我对 Python 不太熟悉,尤其是中断。
我知道如何循环读取传感器的状态:
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
我还看到最好为此实际使用中断:
GPIO.setup(pin, GPIO.IN)
GPIO.add_event_detect(pin, GPIO.BOTH, callback = function)
但我不知道如何设置倒计时,在更改传感器状态后从 10 计数到 0,并且在状态更改时停止并重置并再次计数。
当倒计时实际到 0 时,它会触发另一个 GPIO 引脚。
解决这个问题后,我会利用 OctoPrint 的插件
来处理卡纸指示信号并暂停打印。
我也很乐意为传感器做出更好的设计,并通过 thingiverse 或其他方式分享。
是的,我知道已经存在一种商业化的一体式堵塞传感器,但是仅仅购买所有东西而不使用垃圾(而不是偷汽车玩具)并没有什么乐趣。我也相信我的想法便宜一点。