bash - RPi - 使用 ">"运算符访问 GPIO 引脚

标签 bash raspberry-pi gpio

如网站所示:https://luketopia.net/2013/07/28/raspberry-pi-gpio-via-the-shell/

So if we want to be able to access pin 4, we would type echo 4 > /sys/class/gpio/export

To specify that we want to use the pin as an output, we can do echo out > /sys/class/gpio/gpio4/direction

我是 bash 菜鸟,我想通过终端访问 RPi 的 GPIO 引脚。我搜索了 Google 以找出“>”运算符的确切功能,但我发现的只是字符串比较(我认为返回 1 或 0)。这究竟是如何让我们到达针脚的?

最佳答案

在我看来这个问题有两个方面,

  1. 重定向运算符本身是如何工作的,以及...
  2. GPIO 驱动程序如何通过 RPi linux 工作

我将在下面分别回答:

1。重定向运算符 >

>就是所谓的“重定向运算符”。它获取进程或函数的输出,并将其从终端重定向到其他地方。 echo命令将输出写入终端。在这种特定情况下,echo 4 的终端输出(即值 4 )传递给 /sys/class/gpio/export .有关实际作用的更多详细信息,请参阅第 2 部分。

> 的另一种常见用法,这可能会给出一个更具体的例子,就是将输出重定向到一个文件中,例如:

$ echo "This text will go into a file." > "myfile.txt"

文件myfile.txt将被创建,我们回显的行将被放入其中,所以它的内容将是“This text will go into a file.”。

不只是echo或者,可以重定向任何命令的控制台输出,例如:

$ ls -la > "directoryListing.txt"

上面会列出所有文件的目录,并将结果输出到文本文件“directoryListing.txt”,而不是控制台。

有关 Linux 概念的更多详细信息,特别是像重定向这样有用的概念 >和管道| ,我建议您尝试以下链接:

https://unix.stackexchange.com/questions/159513/what-are-the-shells-control-and-redirection-operators

2。 GPIO驱动访问

来自阅读 this RPi linux site 上的描述, 它看起来像 /sys/class/gpio/export进入 GPIO 引脚的设备驱动程序并告诉它您希望使用提供的引脚(在本例中为引脚 4)。您通过从控制台重定向它来向该虚拟目录提供输入(见上文第 1 节)。

调用导出后,您已经告诉驱动程序您希望使用哪个引脚(或多个引脚),它会创建类似于虚拟文件系统的东西以允许控制。

这是 gpio4/direction 的位置部分进来了。那个gpio4导出时创建文件夹 pin 4多于。该目录中有许多(您可以认为是)虚拟文件,然后您可以使用这些文件设置引脚配置。 direction一个告诉驱动程序该引脚是输入引脚(在这种情况下传递单词 in )还是输出引脚(在这种情况下我们传递单词 out )。

同样,我们使用控制台重定向运算符 > 进行设置我们可以像读取普通文件一样读取它,以获取分配的值,如下所示:

$ cat /sys/class/gpio/gpio4/direction

要将值读/写到引脚(即它是设置为打开还是关闭),只需遵循与 value 相同的想法。文件:

$ echo 1 > /sys/class/gpio/gpio4/value

将引脚 4 的值设置为 1 ,这意味着。等价地,它可以通过做关闭

$ echo 0 > /sys/class/gpio/gpio4/value

最后,如果您已将引脚的方向指定为输入,请执行以下操作:

$ echo in > /sys/class/gpio/gpio4/direction

您可以这样读取该值:

$ cat /sys/class/gpio/gpio4/value

如果你想把它存储在一个变量中,你可以这样做:

$ myPinValue=$(cat /sys/class/gpio/gpio4/value)

请注意这些示例未经测试,我的 Linux-fu 有点生疏,因为我现在很遗憾在 Windows 世界中工作。

关于bash - RPi - 使用 ">"运算符访问 GPIO 引脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40014997/

相关文章:

linux - 尝试运行从另一台计算机复制的程序时权限被拒绝

linux - 删除 bash 中最后一个点的所有文本

c - 在 Raspberry Pi 上,backtrace() 返回 0 帧

MySQL MariaDB 服务器树莓派远程访问

c - linux gpio 驱动程序无法导出 GPIO

bash 并行循环

regex - bash_rematch 和正则表达式(带有嵌套的括号)

javascript - 树莓派 PHP GPIO 读取

c - 哪种 MCU(Cortex-M) 适用于时间关键的 GPIO 应用?

python - """TypeError: only length-1 arrays can be converted to Python scalars"""尝试在具有 7 段显示的 Pi3 上运行计数器时