飞凌嵌入式
直播中

lustao

13年用户 517经验值
擅长:嵌入式技术
私信 关注
[产品]

【ELF 2学习板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目

接上文[【ELF 2学习板试用】命令行功能测试-shell脚本进行IO控制-灯闪(https://https://bbs.elecfans.com/jishu_2474874_1_1.html)

红绿灯项目

硬件

  • ELF 2学习板 :一款用于嵌入式系统学习的开发板。
  • 红绿灯板 :一个简单的外部设备,包含红、绿、黄三个LED灯。

连接1*

ELF 2学习板未标题-6 拷贝.png
红绿灯板

未标题-3 拷贝.jpg

连接2

红绿灯板与ELF 2学习板P26连接如下

  • 红绿灯板 3V3 接学习板 P26 的 1 学习板 功能3V3
  • 红绿灯板 GND 接学习板 P26 的 9 学习板 功能 GND
  • 红绿灯板 LEDr 红 接学习板 P26 的 11 学习板 功能 GPIO3_B5
  • 红绿灯板 LEDg 绿 接学习板 P26 的 7 学习板 功能 GPIO3_B3
  • 红绿灯板 LEDy 接学习板 P26 的 13 学习板 功能 GPIO3_B4

未标题-6 拷贝.jpg

软件* SSH连接 :通过MobaXterm工具进行SSH连接。* 脚本编写 :使用shell脚本控制LED灯的亮灭。

接ssh未标题-1 拷贝.jpg

脚本编写

脚本内容

  • 文件名rgb1.sh
  • 脚本内容
#!/bin/sh

while true; do
    cmddemo_gpio.sh  GPIO3_B5 0
    cmddemo_gpio.sh  GPIO3_B3 0
    cmddemo_gpio.sh  GPIO3_B4 0
    cmddemo_gpio.sh  GPIO3_B5 1
    sleep 5
    cmddemo_gpio.sh  GPIO3_B5 0
    cmddemo_gpio.sh  GPIO3_B3 1
    sleep 5
    cmddemo_gpio.sh  GPIO3_B3 0
    cmddemo_gpio.sh  GPIO3_B4 1
    sleep 0.5
    cmddemo_gpio.sh  GPIO3_B4 0
    sleep 0.5
    cmddemo_gpio.sh  GPIO3_B4 1
    sleep 0.5
done

脚本解释

  • 循环控制 :使用while true实现无限循环。
  • GPIO控制 :使用cmddemo_gpio.sh 脚本控制GPIO引脚的高低电平驱动程序。
  • 延时 :使用sleep命令实现延时效果。

脚本运行

权限设置

  • 命令
chmod u+x rgb1.sh

运行脚本

  • 命令
sh rgb1.sh

未标题-1 拷贝.jpg

login as: root
     ┌────────────────────────────────────────────────────────────────────┐
     │                        ? MobaXterm 20.0 ?                          │
     │            (SSH client, X-server and networking tools)             │
     │                                                                    │
     │ ? SSH session to root@192.168.0.232                                │
     │   ? SSH compression : ?                                            │
     │   ? SSH-browser     : ?                                            │
     │   ? X11-forwarding  : ?  (disabled or not supported by server)     │
     │   ? DISPLAY         : 192.168.1.104:0.0                            │
     │                                                                    │
     │ ? For more info, ctrl+click on help or visit our website           │
     └────────────────────────────────────────────────────────────────────┘

root@elf2-buildroot:~# cd /opt/
root@elf2-buildroot:/opt#  ls
1.log  r.sh  rgb1.sh  rgbg.sh  rgbr1.sh  unixbench  xj.sh
root@elf2-buildroot:/opt# cat rgb1.sh
#!/bin/sh


while true; do

    cmddemo_gpio.sh GPIO3_B5 0
    #//echo 0 > $LEDr_GPIO/value
    cmddemo_gpio.sh GPIO3_B3 0
    #echo 0 > $LEDg_GPIO/value
    cmddemo_gpio.sh GPIO3_B4 0
    #echo 0 > $LEDy_GPIO/value
    cmddemo_gpio.sh GPIO3_B5 1
    #echo 1 > $LEDr_GPIO/value
    sleep 5
    cmddemo_gpio.sh GPIO3_B5 0
    #echo 0 > $LEDr_GPIO/value
    cmddemo_gpio.sh GPIO3_B3 1
    #echo 1 > $LEDg_GPIO/value
    sleep 5
    cmddemo_gpio.sh GPIO3_B3 0
    #echo 0 > $LEDg_GPIO/value
    cmddemo_gpio.sh GPIO3_B4 1
    #echo 1 > $LEDy_GPIO/value
    sleep 0.5
    cmddemo_gpio.sh GPIO3_B4 0
    #echo 0 > $LEDy_GPIO/value
    sleep 0.5
    cmddemo_gpio.sh GPIO3_B4 1
    #echo 1 > $LEDy_GPIO/value
    sleep 0.5

doneroot@elf2-buildroot:/opt# chmod
chmod: missing operand
Try 'chmod --help' for more information.
root@elf2-buildroot:/opt# chmod u+x rgb1.sh
root@elf2-buildroot:/opt# sh rgb1.sh

灯正常闪!VID_20250206_111556.mp4_20250206_113207.046.jpg

运行结果

  • 灯的闪烁模式
    • 红灯亮5秒
    • 绿灯亮5秒
    • 黄灯快速闪烁三次(每次0.5秒)

项目总结

成果展示

  • 灯正常闪烁 :达到了预期的效果,红、绿、黄灯按照预定的模式闪烁。

优点

  • 简洁方便 :脚本编写简单,逻辑清晰。
  • 易于调试 :修改和调试方便,适合初学者学习。

下一步计划

  • 扩展功能 :可以尝试增加更多的控制逻辑,如添加按钮控制灯的状态。
  • 优化性能 :优化脚本性能,减少资源消耗。

红绿灯项目完成。

VID_20250206_111556

更多回帖

发帖
×
20
完善资料,
赚取积分