《边学边用树莓派-5》树莓派通过Shell脚本控制 GPIO
Raspberry Pi主板配置了一组GPIO,一共有8个GPIO可以用作输入或输出,可以用这些GPIO来开发一些电子项目。如控制LED灯、电机、继电器。也可以作为输入接口,读取按键等开关量输入的传感器。这里需要提醒大家,树莓派的GPIO是3.3V的。这意味着他输出高电平是3.3V,作为输入的话也只能最大限度接受3.3V的输入。特别是树莓派的CPU非常精密,如果因为实验的时候输入了错误的电压或者不小心短路了GPIO,树莓派将损毁而基本不能修复。
如果要万无一失可以使用DFRobot开发的 Raspberry Pi 面包板扩展板或者 Raspberry Pi Meet Arduino 扩展板对IO进行保护,同时也将3.3V转化为5V,兼容更多的外设。
树莓派有多种GPIO控制方式:Shell脚本、Python编程、wiringPi C/C++库。这里咱们看看如何通过Shell脚本进行控制。
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
这里我们使用Raspberry Pi 面包板扩展板、一颗510欧电阻、一颗LED灯、一个面包板来做如下实验。
《面包板图》
首先进入root权限模式,将GPIO25引脚的操作接口从内核空间暴露到用户空间:
pi@raspberrypi ~ $ su
Password:
root@raspberrypi:/home/pi# echo 25 > /sys/class/gpio/export在以下地址产生了一个gpio25的目录,并产生了所需的控制文件
root@raspberrypi:/home/pi# cd /sys/class/gpio/gpio25
root@raspberrypi:/sys/class/gpio/gpio25# ls
active_lowdirectionedgepowersubsystemueventvalue
将GPIO25设置为输出
root@raspberrypi:/sys/class/gpio/gpio25# echo out > direction
将GPIO25 置高
root@raspberrypi:/sys/class/gpio/gpio25# echo 1 > value
将GPIO25 置低
root@raspberrypi:/sys/class/gpio/gpio25# echo 0 > value
我们也可以将GPIO25设置为输入模式,并读取IO状态,在这里我们使用一个按钮开关来做实验
root@raspberrypi:/sys/class/gpio/gpio25# echo in > direction
root@raspberrypi:/sys/class/gpio/gpio25# cat value
1
root@raspberrypi:/sys/class/gpio/gpio25#
试试按钮按下读取的状态
下面我们可以将操作保存为Shell脚本,所谓脚本是指包含了很多Shell命令的文件。
使用nano编辑器输入以下代码,将它保存为文件名为on.sh的文件
#!/bin/bash
echo Exporting pin $1.
echo $1> /sys/class/gpio/export
echo Setting direction to out
echo out > /sys/class/gpio/gpio$1/direction
echo Setting pin high.
echo 1 > /sys/class/gpio/gpio$1/value
$1指代第一个命令行参数,在执行脚本的时候通过命令行参数选择控制某个GPIO
通过chmod命令把它设置为可执行:
root@raspberrypi:/home/pi# chmod +x on.sh
执行这个Shell脚本置GPIO25为高:
root@raspberrypi:/home/pi# ./on.sh 25
页:
[1]