自动化脚本之GPIO/LED相关适用于Android/Linux

简介: 自动化脚本之GPIO/LED相关适用于Android/Linux

自个调试的时候写的简简单单脚本  Android/Linux 都兼容

简单的LED循环控制shell脚本

脚本功能介绍

这个脚本是用来控制一些LED灯的亮灭的。它定义了五个函数,每个函数都是一个无限循环,用来向/sys/devices/platform/leds/leds/led文件写入一些数字,来控制不同的LED灯的状态。每个函数都在后台运行,所以可以同时控制多个LED灯。最后一个函数还调用了另一个脚本/opt/test_gpio2.sh来控制一些GPIO引脚的电平。

使用示例

要运行这个脚本,只需要在终端中输入:

bash led.sh

然后就可以看到一些LED灯开始闪烁。要停止这个脚本,只需要按Ctrl+C,就可以发送SIGINT信号来终止所有的后台进程。

#!/bin/bash
 
# 定义GPIO编号的数组
DO=(27 28 29 30) # 输出端口
IN=(107 108 109 110) # 输入端口
 
# 导出GPIO
for i in ${DO[@]} ${IN[@]}; do
    echo $i > /sys/class/gpio/export
done
 
# 设置方向
for i in ${DO[@]}; do
    echo out > /sys/class/gpio/gpio$i/direction
done
 
for i in ${IN[@]}; do
    echo in > /sys/class/gpio/gpio$i/direction
done
 
# 循环控制和读取电平
while true; do
    # 设置DO为高电平
    for i in ${DO[@]}; do
        echo 1 > /sys/class/gpio/gpio$i/value
        echo "Set DO$i to high level"
    done
 
    # 读取IN的电平,并打印到屏幕上
    for i in ${IN[@]}; do
        value=$(cat /sys/class/gpio/gpio$i/value)
        echo -n "IN$i: $value "
    done
    echo # 换行
 
    # 打印时间戳
    date "+%Y-%m-%d %H:%M:%S"
 
    # 延迟一秒钟
    sleep 1
 
    # 设置DO为低电平
    for i in ${DO[@]}; do
        echo 0 > /sys/class/gpio/gpio$i/value
        echo "Set DO$i to low level"
    done
 
    # 读取IN的电平,并打印到屏幕上
    for i in ${IN[@]}; do
        value=$(cat /sys/class/gpio/gpio$i/value)
        echo -n "IN$i: $value "
    done
    echo # 换行
 
    # 打印时间戳
    date "+%Y-%m-%d %H:%M:%S"
 
    # 延迟一秒钟
    sleep 1
done

简单的GPIO逻辑控制shell脚本

脚本功能介绍

这个脚本是用来控制一些GPIO引脚的电平的。它接受四个参数,分别是gpio方向、gpio number、gpio value和restore。gpio方向可以是in或out,表示输入或输出。gpio number是一个0到159之间的整数,表示要控制的引脚的编号。gpio value可以是0或1,表示要设置的电平,只有在gpio方向为out时才有效。restore可以是on或off,表示是否在退出脚本时恢复原来的引脚状态。

这个脚本会根据rockchip rk3568 gpio计算规则,将gpio number转换为GPIOx_Ay的形式,并检查是否有权限访问gpio,是否已经被导出或占用。然后,它会将引脚导出到sysfs中,并设置引脚的方向和值。如果引脚的方向为输入,它会循环读取引脚的值,直到按下Ctrl-C;如果引脚的方向为输出,它会根据是否提供了gpio value参数来设置或切换引脚的值,直到按下Ctrl-C。最后,它会根据restore参数来决定是否取消导出并恢复原来的引脚状态。

使用示例

要运行这个脚本,需要在终端中输入:

bash test_gpio2.sh gpio_direction gpio_number [gpio_value] [restore]

例如:

bash test_gpio2.sh in 10 # 将gpio10设置为输入,并循环读取值
bash test_gpio2.sh out 20 1 # 将gpio20设置为输出,并设置值为1
bash test_gpio2.sh out 30 # 将gpio30设置为输出,并在0和1之间切换值
bash test_gpio2.sh in 40 on # 将gpio40设置为输入,并循环读取值,在退出时恢复原来的状态

简单的循环监听GPIO状态shell脚本

脚本功能介绍

这个脚本是用来控制一些GPIO引脚的电平,并读取另一些GPIO引脚的电平的。它定义了两个数组,分别是DO和IN,表示输出端口和输入端口的编号。它会将这些端口导出到sysfs中,并设置相应的方向。然后,它会循环地将输出端口的电平设置为高或低,并读取输入端口的电平,并打印到屏幕上,每次操作之间延迟一秒钟。

使用示例

要运行这个脚本,只需要在终端中输入:

bash gpio.sh

然后就可以看到类似下面的输出:

Set DO27 to high level
Set DO28 to high level
Set DO29 to high level
Set DO30 to high level
IN107: 0 IN108: 0 IN109: 0 IN110: 0 
2023-07-05 15:09:48
Set DO27 to low level
Set DO28 to low level
Set DO29 to low level
Set DO30 to low level
IN107: 1 IN108: 1 IN109: 1 IN110: 1 
2023-07-05 15:09:49

要停止这个脚本,只需要按Ctrl-C,就可以发送SIGINT信号来终止循环。


相关文章
|
10天前
|
安全 Shell Android开发
Android系统 init.rc开机执行shell脚本
Android系统 init.rc开机执行shell脚本
28 0
|
10天前
|
Ubuntu Linux
Linux(21) Linux自定义开机启动脚本或命令
Linux(21) Linux自定义开机启动脚本或命令
21 3
|
11天前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
12 0
|
3天前
|
存储 Shell Linux
Linux Bash 脚本中的 IFS 是什么?
【4月更文挑战第25天】
8 0
Linux Bash 脚本中的 IFS 是什么?
|
9天前
|
监控 网络协议 数据可视化
Shell脚本查看linux系统性能瓶颈
Shell脚本查看linux系统性能瓶颈
|
10天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
31 0
|
10天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
16 0
|
11天前
|
Linux 数据安全/隐私保护
自动化脚本之加密内容解密适用于Linux
自动化脚本之加密内容解密适用于Linux
10 1
|
11天前
|
Android开发
自动化脚本之Android系统修改推送
自动化脚本之Android系统修改推送
12 0
|
Shell Linux 定位技术
Android(Linux)控制GPIO方法二
  前文《Android(Linux)控制GPIO的方法及实时性分析》主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPIO是否受控。实际项目中,一般需要对GPIO做特殊控制,如车载导航系统开机就给GPS模块上电,或在daemon程序中控制GPIO给一个脉冲以Reset蓝牙模块等,就不便用shell 命令来控制,而需要另想办法。
998 0

热门文章

最新文章