首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过英雄总线停止使用按钮按下GoPro

通过英雄总线停止使用按钮按下GoPro
EN

Stack Overflow用户
提问于 2017-04-19 08:57:11
回答 1查看 210关注 0票数 1

我相信英雄巴士的引脚是:

  • Pin3 - GPIO 127
  • Pin4 - GPIO 2
  • Pin16 - GPIO 22
  • Pin17 - GPIO 19
  • Pin18 - GPIO 124
  • Pin19 - GPIO 129 (ID1)
  • Pin20 - GPIO 125 (ID2)
  • Pin22 - GPIO 136 (ID4)
  • Pin28 - GPIO 36
  • Pin29 - GPIO 37

使用这些引脚,我想将ID2与主总线上的pwr引脚连接起来,并使用脚本,拥有它。

  1. 开始录音
  2. 坐在一个循环中,检查gpio125,然后在125上升时退出循环。
  3. 脚本停止录制,然后关闭GoPro。

功率引脚坐高,并使GoPro在拉低它大约1s工作。这将是一个保持低的情况,与gpio125,然后在发布按钮,两者都走高,触发它停止。

目前,我在GitHub上有一个修改过的KonradITs代码,如下所示:

代码语言:javascript
复制
sleep 5
/usr/local/gopro/bin/gpsend ca CM%00   #selects video mode
sleep 5
/usr/local/gopro/bin/gpsend bp SH%01   #starts recording
sleep x
/usr/local/gopro/bin/gpsend bp SH%00   #stops recording after x seconds
sleep 5
/usr/local/gopro/bin/gpsend bp PW%00   #turns off GoPro 

这显然受到时间条件的限制,一旦压水堆引脚被拉低,就会触发。我需要对sleep x区域进行修改,以允许在sleep x之后执行命令,具体取决于何时释放power按钮。

我已经考虑过使用这样的方法:

代码语言:javascript
复制
echo 125 > /sys/class/gpio/export           # creates pin interface
echo in > /sys/class/gpio/gpio125/direction # sets it as output pin
echo 1 > /sys/class/gpio/gpio125/value      # sets value to 1

等等,但是我不确定如何完成代码的编写。我基本上希望它在一个循环中检查gpio125,然后当它读取125高时退出循环,然后执行停止记录和关闭命令。

EN

回答 1

Stack Overflow用户

发布于 2017-04-19 22:10:39

您可以将所有特定于硬件的代码与此问题分开。您的基本问题似乎是如何等待某个特定的命令返回特定的值,然后继续。

假设您使用gpio read 125检测引脚状态,并假设低状态返回'0‘;请使用:

代码语言:javascript
复制
# start recording
while [ "0" -eq "$(gpio read 125)" ]; do sleep 1; done
# stop recording

它会每秒钟投票一次,当它不再低的时候继续。

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

https://stackoverflow.com/questions/43490983

复制
相关文章

相似问题

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