Raspberry Pi 上的按钮交互

Button Interactions on Raspberry Pi

我对编程还很陌生,最近一直在玩我的 raspberry Pi,使用 GPIO 引脚和一些按钮在按下时执行各种操作。在为按钮创建 "listener" 时,只有一件事我似乎无法接受。

根据我在网上收集到的所有信息,基本上你必须让你的程序陷入无限循环才能监听按钮交互,例如:

while True:
     if GPIO.input(10) == GPIO.HIGH:
          print("Button is pressed")
     else:
          print("Button is not pressed")

让程序 运行ning 一直处于无限循环中似乎有点密集,只是等待按下按钮。例如,当我 运行 在我的 Mac 上使用相同的代码时,风扇启动它只需要大约 30 秒,它会导致计算机升温。所以我的问题是(希望这不是一个太愚蠢的问题并且适合这个频道):这是计算机和程序监听按钮交互的标准方式吗?是否有更好、更有效的方式来监听按钮事件?我已经尝试在其他地方搜索有关此的更多信息,但一直找不到任何信息(至少我能理解)。

有更好(或至少不同)的方法,其中一种方法使用所谓的回调。有一个相当不错的教程,其中包含一些示例代码 here.

我不知道RaspberryPI的具体情况,但是在Arduino上,2个引脚可以在状态改变时触发中断。

中断是一种硬件,它会中断计算机正在执行的任何操作以跳转到那里。例如定时器或网络上接收到的数据是中断,因此它们会唤醒休眠的处理器。

它们是在较低级别处理的,但是您想设置一个在生成中断时运行的函数。看这篇文章https://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio-part-3