-
shell命令行方式
操作文件存在于Linux虚拟文件系统,树莓派重启以后消失
- sudo su:
切换到root用户
- echo 25 > /sys/class/gpio/export:
将25写入 /sys/class/gpio目录下创建一个gpio25的文件夹
cd /sys/class/gpio/gpio25
- echo out > direction
输出电流方向
- echo 1 >value
赋值:点亮(1后面必须有空格)
- echo 0 > value
赋值:熄灭(同上)
- shell脚本方式
一系列shell命令的集合
- sudo su
切换到root用户
- cd ~
pwd
切换到/root的“家目录”
- nano blinkled.sh
创建脚本文件,后缀为sh方便区分
#!/bin/sh
echo 25 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio25/direction
while true
do
echo 1 > /sys/class/gpio/gpio25/value
sleep 0.5
echo 0 > /sys/class/gpio/gpio25/value
sleep 0.5
done
- chmod +x blinkled.sh
修改脚本为可执行文件
- ./blinkled.sh
执行脚本
- Python控制
使用模块,可移植性高
- sudo python
进入python交互界面
- >>import RPi.GPIO as GPIO
引用RPi.GPIO模块
(如果出错则回到shell中安装 )
quit( )返回shell命令行;
sudo apt-get install python-rpi-gpio
再进入Python交互界面
>>GPIO.VERSION 可以顺便查看版本
- >>GPIO.setmode(GPIO.BCM)
设置GPIO的定义方式(必须先引入模块)
- >>GPIO.setup(25,GPIO.OUT)
设置引脚接口为GPIO25,电流方向为OUT
- >>GPIO.output(25,GPIO.HIGH)
点亮LED
- >>GPIO.output(25,GPIO.LOW)
熄灭LED
- Python控制GPIO
- LED闪烁
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(25,GPIO.OUT)
while True:
GPIO.output(25,GPIO.HIGH)
time.sleep(0.5)
GPIO.output(25,GPIO.LOW)
time.sleep(0.5)
- 按键输入(消抖)
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25,GPIO.OUT)
ledStatus = True
while True:
if (GPIO.input(24) == GPIO.HIGH):
print("button pressed!")
ledStatus = not ledStatus
if ledStatus:
GPIO.output(25,GPIO.HIGH)
else:
GPIO.output(25,GPIO.LOW)
time.sleep(0.3)
time.sleep(0.01)
- 中断
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25, GPIO.OUT)
ledStatus = True
def my_callback(channel):
print("button pressed")
global ledStatus
ledStatus = not ledStatus
if ledStatus:
GPIO.output(25, GPIO.HIGH)
else:
GPIO,output(25, GPIO.LOW)
GPIO.add_event_detect(24, GPIO.RISING, callback=my_callback)
while True:
try:
print("I'm working...")
time.sleep(5)
except KeyboardInterrupt:
break
GPIO.cleanup
shell命令行方式
操作文件存在于Linux虚拟文件系统,树莓派重启以后消失
- sudo su:
切换到root用户
- echo 25 > /sys/class/gpio/export:
将25写入 /sys/class/gpio目录下创建一个gpio25的文件夹
cd /sys/class/gpio/gpio25
- echo out > direction
输出电流方向
- echo 1 >value
赋值:点亮(1后面必须有空格)
- echo 0 > value
赋值:熄灭(同上)
一系列shell命令的集合
- sudo su
切换到root用户
- cd ~
pwd
切换到/root的“家目录”
- nano blinkled.sh
创建脚本文件,后缀为sh方便区分
#!/bin/sh
echo 25 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio25/direction
while true
do
echo 1 > /sys/class/gpio/gpio25/value
sleep 0.5
echo 0 > /sys/class/gpio/gpio25/value
sleep 0.5
done
- chmod +x blinkled.sh
修改脚本为可执行文件
- ./blinkled.sh
执行脚本
使用模块,可移植性高
- sudo python
进入python交互界面
- >>import RPi.GPIO as GPIO
引用RPi.GPIO模块
(如果出错则回到shell中安装 )
quit( )返回shell命令行;
sudo apt-get install python-rpi-gpio
再进入Python交互界面
>>GPIO.VERSION 可以顺便查看版本
- >>GPIO.setmode(GPIO.BCM)
设置GPIO的定义方式(必须先引入模块)
- >>GPIO.setup(25,GPIO.OUT)
设置引脚接口为GPIO25,电流方向为OUT
- >>GPIO.output(25,GPIO.HIGH)
点亮LED
- >>GPIO.output(25,GPIO.LOW)
熄灭LED
- LED闪烁
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(25,GPIO.OUT)
while True:
GPIO.output(25,GPIO.HIGH)
time.sleep(0.5)
GPIO.output(25,GPIO.LOW)
time.sleep(0.5)
- 按键输入(消抖)
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25,GPIO.OUT)
ledStatus = True
while True:
if (GPIO.input(24) == GPIO.HIGH):
print("button pressed!")
ledStatus = not ledStatus
if ledStatus:
GPIO.output(25,GPIO.HIGH)
else:
GPIO.output(25,GPIO.LOW)
time.sleep(0.3)
time.sleep(0.01)
- 中断
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25, GPIO.OUT)
ledStatus = True
def my_callback(channel):
print("button pressed")
global ledStatus
ledStatus = not ledStatus
if ledStatus:
GPIO.output(25, GPIO.HIGH)
else:
GPIO,output(25, GPIO.LOW)
GPIO.add_event_detect(24, GPIO.RISING, callback=my_callback)
while True:
try:
print("I'm working...")
time.sleep(5)
except KeyboardInterrupt:
break
GPIO.cleanup