【问题标题】:Stop GoPro using button press via herobus通过 herobus 使用按钮停止 GoPro
【发布时间】:2017-04-19 08:57:11
【问题描述】:

我相信 Hero 总线引脚是:

  • 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 与 herobus 上的 pwr 引脚连接并使用脚本,拥有它

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

电源引脚处于高位,将 GoPro 拉低约 1 秒即可正常工作。然后将其与 gpio125 一起保持低电平,然后在释放按钮时,两者都变高触发它停止。

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

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 

这显然受时间条件的限制,只要 pwr 引脚拉低就会触发。我需要在sleep x 区域周围进行修改,以允许在释放电源按钮时执行sleep x 之后的命令。

我考虑过使用类似的东西:

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 高时退出循环,然后执行停止记录并在之后关闭命令。

【问题讨论】:

    标签: bash shell scripting gopro


    【解决方案1】:

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

    假设您使用gpio read 125 检测引脚状态,并假设返回“0”表示低电平状态;使用:

    # start recording
    while [ "0" -eq "$(gpio read 125)" ]; do sleep 1; done
    # stop recording
    

    它将每秒轮询该引脚并在它不再低时继续。

    【讨论】:

    • 我试过这个,它似乎只是跳到停止视频并立即关闭。 GoPro 可能无法识别这些命令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2019-12-13
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多