PYNQ-Z2调试笔记:基于python编程控制LED灯、多色LED灯、按钮、开关等外设

目录

 

前言

正文

结尾


前言

转眼间,接触PYNQ开发板已经将近一个月时间了,对许多东西也有了不同程度的理解。本篇主要根据官方文档的指引,对板子上外围设备的使用方法进行介绍,包括LED灯、button按钮和switch等的使用方法。此处对外围设备的操作是通过PS端python编程实现的!

正文

在开发板的pynq文件夹下,有许多相对丰富的用python编写的示例代码,我们可以参考着文档对这些代码进行学习和理解。本篇涉及的东西与python语法中的类和对象等有关,如果有遗忘的地方可以提前复习一下。

手册链接:https://pynq.readthedocs.io/en/v2.5.1/overlay_design_methodology/overlay_tutorial.html

通过共享文件夹进入开发板的pynq文件夹,进入lib文件夹,如图

一、首先,打开jupyter-notebook,并新建一个python3文件,输入如下代码。

from pynq.overlays.base import BaseOverlay

#从base.py文件中导入BaseOverlay类
#base.py文件在\\192.168.0.104\xilinx\pynq\overlays目录下(192.168.0.104是我的开发板的ip,你的需要更改)

二、然后对BaseOverlay进行实例化。

base = BaseOverlay('base.bit')  #BaseOverlay类的bit_file参数,我们使用base.bit
                                #此bit文件和base.py文件在同一目录下。

三、操作外设

(1)四个单色LED

参考手册https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.led.html,打开源码(source)可知,一个名为LED的子类被定义,此子类中含有三个方法,分别是控制LED灯的on(),off(),toggle()。开、关和切换。(这里打开lib文件夹下的led.py也可以看到源码)

源码如图

下面代码演示如何使用:

base.leds[0].on()    #打开第一个LED灯
base.leds[0].off()    #关闭第一个LED灯
base.leds[1].toggle()    #切换第二个LED灯的状态,即由亮到灭或由灭到亮

演示流水循环点亮熄灭四个LED灯:

from time import sleep
while(True):
    for led in base.leds : 
        led.toggle()            #状态切换
        sleep(0.5)                #延时0.5s

(2)两个RGBLED

同上,参考https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.rgbled.html,或者lib文件夹下的rgbled.py文件。共有四个方法,分别是on(),off(),write()和rea(),其中on()和write()带参数,即颜色编号。

手册图:

源码文件:划线部分是对不同颜色进行编号

下面代码演示如何使用多色LED灯:

base.rgbleds[4].on(6)    #LED4亮,并且颜色为6对应的YELLOW
base.rgbleds[5].write(6)    #LED5亮,并且颜色为6对应的YELLOW
                            #此处解释一点,write方法和on的效果是一样的,都是对管脚写入颜色编号。
                            #read方法指,读取此时LED灯的管脚颜色编号,可自行验证

下面演示流水改变LED灯的颜色:

from time import sleep
i = [0,1,2,3,4,5,6,7]    #颜色编号组成的列表
while(True):
    for a in i :                 #循环读取列表中的颜色编号
        base.rgbleds[5].on(a)
        base.rgbleds[4].on(a)
        sleep(0.5)

(3)四个Button

同上,参考https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.button.html,或者button.py文件。

共有两个方法,一个是read(),读取当前某一按钮的值,另一个是wait_for_value(),等待按键按下或释放。

下面简单演示如何使用:

base.buttons[0].read()    #读取此时按钮0的值,如果按钮未按下,值为0,按下则为1


base.buttons[0].wait_for_value(0)    #1 to wait for press or 0 to wait for release

(4)两个switch

同上,参考https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.switch.html,或者switch.py文件。

共有两个方法,一个是read(),读取当前某一开关的值,另一个是wait_for_value(),等待开关上下拨动。

下面简单演示如何使用:

base.switches[0].read()    #读取当前开关0的值

base.switches[0].wait_for_value(1)    #1 for the switch up and 0 for the switch down

结尾

到这里,关于这几个外设的基本使用方法就介绍完了,这些是整体项目中的一砖一瓦,很显然,借助官方的base.bit文件,我们可以很方便的操作这些外设!


本篇博客到此就结束了,文中有不严谨之处欢迎批评指正,下方评论交流,韭菜会尽快回复的!

但行努力,莫问前程,如果您觉着文章有用,请点赞鼓励,谢谢!

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值