使用shell脚本控制gpio输出高低电平

文章提供了一组bash脚本,用于控制GPIO端口(如GPIO26到GPIO37和GPIO52)输出高低电平,以实现LED灯的亮灭。基础版脚本实现循环闪烁,而升级版增加了自定义亮灯/熄灭时长和循环次数的功能。

基础版

复用了gpio26~gpio37、gpio52,进行测试输出高低电平,
gpio_led.sh:用于点亮led灯

#!/bin/bash

# 设置GPIO Pin编号
PINS=(26 27 28 29 30 31 32 33 34 35 36 37 52)

# 设置GPIO Pin为输出模式
for PIN in ${PINS[@]}
do
    echo $PIN > /sys/class/gpio/export
    echo "out" > /sys/class/gpio/gpio$PIN/direction
done

# 循环控制LED灯闪烁
while true
do
    for PIN in ${PINS[@]}
    do
        echo "1" > /sys/class/gpio/gpio$PIN/value # 设置高电平
    done
    sleep 1 # 延时1for PIN in ${PINS[@]}
    do
        echo "0" > /sys/class/gpio/gpio$PIN/value # 设置低电平
    done
    sleep 1 # 延时1秒
done

gpio_unexport.sh:用于将gpio取消export

#!/bin/bash

# 设置GPIO Pin编号
PINS=(26 27 28 29 30 31 32 33 34 35 36 37 52)

for PIN in ${PINS[@]}
do
    echo $PIN > /sys/class/gpio/unexport
done

升级版

gpio_test.sh
使用方法:./gpio_test.sh d c
其中 d代表每次亮点/熄灭的时长,单位为s,默认0.3s
c为循环测试次数,默认为1W次,比如
./gpio_test.sh 1 100 意思是每次亮点/熄灭时长为1秒,循环测试100次

#!/bin/bash

function clear()
{
# 设置GPIO Pin编号
PINS=(26 27 28 29 30 31 32 33 34 35 36 37 52)

for PIN in ${PINS[@]}
do
    [ -d /sys/class/gpio/gpio$PIN ] && echo $PIN > /sys/class/gpio/unexport
done
}

function light()
{

clear

# 设置GPIO Pin编号
PINS=(26 27 28 29 30 31 32 33 34 35 36 37 52)

# 设置GPIO Pin为输出模式
for PIN in ${PINS[@]}
do
    [ ! -d /sys/class/gpio/gpio$PIN ] &&  echo $PIN > /sys/class/gpio/export
    echo "out" > /sys/class/gpio/gpio$PIN/direction
done

# 循环控制LED灯闪烁
#while true
for _i in $(seq 1 $2)
do
    for PIN in ${PINS[@]}
    do
        echo "1" > /sys/class/gpio/gpio$PIN/value # 设置高电平
    done
    sleep $1 # 延时1for PIN in ${PINS[@]}
    do
        echo "0" > /sys/class/gpio/gpio$PIN/value # 设置低电平
    done
    sleep $1 # 延时1秒
done

}

[ -n "$1" ] && duration=$1 || duration=0.3 # 每次亮灯/熄灯时长(s) 默认0.3[ -n "$2" ] && loop_count=$2 || loop_count=10000 # 循环测试次数,默认(1W次)

light $duration $loop_count

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值