bobo | NPC | 创造力: | 帖子: | 发消息 | 串个门 | 加好友 | 打招呼
2014-6-22 21:29:07 [显示全部楼层]
10945浏览
查看: 10945|回复: 0

[教程] 《边学边用树莓派-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引脚的操作接口从内核空间暴露到用户空间:
  1. pi@raspberrypi ~ $ su
  2. Password:
  3. root@raspberrypi:/home/pi# echo 25 > /sys/class/gpio/export
复制代码
在以下地址产生了一个gpio25的目录,并产生了所需的控制文件
  1. root@raspberrypi:/home/pi# cd /sys/class/gpio/gpio25
  2. root@raspberrypi:/sys/class/gpio/gpio25# ls
  3. active_low  direction  edge  power  subsystem  uevent  value
复制代码

将GPIO25设置为输出
  1. root@raspberrypi:/sys/class/gpio/gpio25# echo out > direction
复制代码

将GPIO25 置高
  1. root@raspberrypi:/sys/class/gpio/gpio25# echo 1 > value
复制代码

将GPIO25 置低
  1. root@raspberrypi:/sys/class/gpio/gpio25# echo 0 > value
复制代码

我们也可以将GPIO25设置为输入模式,并读取IO状态,在这里我们使用一个按钮开关来做实验
  1. root@raspberrypi:/sys/class/gpio/gpio25# echo in > direction
  2. root@raspberrypi:/sys/class/gpio/gpio25# cat value
  3. 1
  4. root@raspberrypi:/sys/class/gpio/gpio25#
复制代码
试试按钮按下读取的状态

下面我们可以将操作保存为Shell脚本,所谓脚本是指包含了很多Shell命令的文件。
使用nano编辑器输入以下代码,将它保存为文件名为  on.sh  的文件
  1. #!/bin/bash
  2. echo Exporting pin $1.
  3. echo $1> /sys/class/gpio/export
  4. echo Setting direction to out
  5. echo out > /sys/class/gpio/gpio$1/direction
  6. echo Setting pin high.
  7. echo 1 > /sys/class/gpio/gpio$1/value
复制代码
$1指代第一个命令行参数,在执行脚本的时候通过命令行参数选择控制某个GPIO

通过chmod命令把它设置为可执行:
  1. root@raspberrypi:/home/pi# chmod +x on.sh
复制代码

执行这个Shell脚本置GPIO25为高:
  1. root@raspberrypi:/home/pi# ./on.sh 25
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail