自动化脚本之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信号来终止循环。


相关文章
|
3月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
538 76
|
3月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
7月前
|
Java Linux Android开发
深入探索Android系统架构:从Linux内核到应用层
本文将带领读者深入了解Android操作系统的复杂架构,从其基于Linux的内核到丰富多彩的应用层。我们将探讨Android的各个关键组件,包括硬件抽象层(HAL)、运行时环境、以及核心库等,揭示它们如何协同工作以支持广泛的设备和应用。通过本文,您将对Android系统的工作原理有一个全面的认识,理解其如何平衡开放性与安全性,以及如何在多样化的设备上提供一致的用户体验。
|
8月前
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
1142 2
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
8月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
262 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
10月前
|
Web App开发 编解码 Linux
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
这篇文章介绍了使用Selenium自动化测试解决报告生成失败问题的方法,包括Linux环境下的部署指南和代码实现。
135 1
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
|
9月前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
402 2
|
10月前
|
Ubuntu Linux 持续交付
在Linux中,如何在Linux中使用Ansible进行自动化部署?
在Linux中,如何在Linux中使用Ansible进行自动化部署?
|
10月前
|
存储 监控 Linux
|
10月前
|
Linux 程序员 Python
python-office支持Mac和Linux吗?自动化办公用这个就够了
大家好,我是程序员晚枫。今天解答关于`python-office`是否支持Mac和Linux的问题。起初因需调用Office功能,该项目不完全支持这两个系统。现已通过拆分子项目解决了这一限制,例如`poexcel`可在多平台上运行Excel相关功能。只需简单修改导入语句,如使用`import poexcel`替代`import office`,即可在Mac和Linux上顺利执行。学习或使用中有任何疑问,欢迎留言交流!
175 5