2020-8-24 18:14:37 [显示全部楼层]
1727浏览
查看: 1727|回复: 3

[pinpong 库控制硬件] 【pinpong库控制硬件】之 Latte Panda一代

[复制链接]
本帖最后由 _木子_ 于 2020-9-1 14:21 编辑

用python编程控制硬件】LattePanda(拿铁熊猫)一代

在pinpong库没有出现之前,我们想用python代码去控制硬件是很困难的。但是自从pinpong库出来之后,我们的操作将变得很简单。后期也会支持更多主板及传感器的使用。

pinpong库的名称由“pin”和“pong”组成,“pin”指引脚,“pinpong”为“乒乓球”的谐音,指信号的往复。

本文章将基于LattePanda(拿铁熊猫)一代,使用python语言并借助pinpong库进行硬件的控制,分别做了点亮外接led灯、按钮控制led灯,光控Led灯等项目。

一、硬件准备
——————————————————————————————————————————
必备材料
1、LattePanda(拿铁熊猫)一代*1
1.png

2、LattePanda(拿铁熊猫)一代自带的天线*1

2.png

3、按钮模块和配套的3pin线*1

3.png

4、LED灯和配套的3pin线*1

4.png

5、光线传感器和配套的3pin线*1

5.png

其它配件如下:

微信图片_20200824173213.jpg

二、环境准备
——————————————————————————————————————————1、Win10系统(一般板子会自带此系统)
2、python编程环境
3、Pinpong库

因为lp自带win10系统,所以它的环境安装和正常的win10系统是一样的,我们可以参照官网中的Python和pinpong库的安装进行安装,链接如下:
https://pinpong.readthedocs.io/zh_CN/latest/1.pinpong%E6%95%99%E7%A8%8B/%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/%E5%AE%89%E8%A3%85-win.html

注意在安装pinpong库时,LattePanda需要联网,所以在这之前我们需要安装好配套的天线。

6.png

三、硬件连接
——————————————————————————————————————————

7.png

连接好相应的设备后,点击电源按钮进行开机,此时可以看到主板有红灯在亮,即可正常使用了。

四、编程控制
——————————————————————————————————————————
1、点亮外接led灯

1.1 led灯的连接

在连接外接的传感器时我们需要先知道lp的引脚说明,才能方便连接。下图为lp的引脚说明图

8.jpg

通过引脚说明图,我们把led灯接在了数字引脚D9。

9.jpg

1.2 程序编写
打开python的IDLE编译器

10.png

点击File-New File,即可新建python程序文档

11.png

然后就可以进行编程啦!

12.png

[mw_shl_code=cpp,false] #实验效果:控制外接LED灯一秒闪烁一次
import time   #导入时间库
from pinpong.board import Board,Pin #导入pinpong库和必要的库函数
Board("leonardo").begin()               #初始化,lp自带leonardo主控板,所以选择板为leonardo,端口号不输入端口号则进行自动识别
#Board("uno","COM36").begin()      #windows下指定端口初始化#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化#Board("uno","/dev/cu.usbmodem14101").begin()   #mac下指定端口初始化
led = Pin(Pin.D9, Pin.OUT) #引脚初始化为电平输出,因为我们连接在D9号引脚
while True:
  led.write_digital(1) #输出高电平
  time.sleep(1) #等待1秒 保持状态
  led.write_digital(0) #输出低电平
  time.sleep(1) #等待1秒 保持状态[/mw_shl_code]

1.3实现效果

编写完成代码后,点击Run运行程序

13.png

运行成功后,显示All right. Pinpong go....

14.png



1.4代码解析
1、“#”号后面的代码一般为注释的代码,程序运行是不运行该段代码,用于方便理解程序含义。
2、“Board("leonardo").begin()”,此段代码为必要代码,在使用不同的主板编程时,需要选择对应的主板,否则程序会报错。
3、“import”后面一般是导入的库文件,在程序中使用到相应的函数时,需要导入相应的库文件才能调用相应的函数。
4、“led =Pin(Pin.D9, Pin.OUT)”,调用pinpong库中的引脚函数,用于设置引脚初始化方式,这里的含义为设置数字引脚9号为输出模式,并赋值给变量led。
5、“while true”函数为python代码中的无限循环函数,当程序需要一直运行时,需要调用此函数。
6、“led.write_digital(1)”,设置对应引脚为高电平,这里的“led”为前面设定的自定义变量。最后代码中括号中的“1”,代表为高电平状态,如果为“0”时,则代码为低电平状态。
7、“time.sleep(1)”,调用pinpong库中的时间函数,括号中的“1”为,让程序此时等待1秒(维持当前状态1s),如果改为10,则表示等待10s。

2、按钮控制led灯

2.1按钮的连接
在1.1的基础上,把按钮连接在D10号引脚上。

15.png

2.2程序编写
[mw_shl_code=cpp,false]#实验效果:通过外接按钮和LED,利用代码实现按一下灯亮,再按一下灯灭的效果
import time
from pinpong.board import Board,Pin
Board("leonardo").begin()               #初始化,lp自带leonardo主控板,所以选择板为leonardo,端口号不输入端口号则进行自动识别
#Board("uno","COM36").begin()      #windows下指定端口初始化#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化#Board("uno","/dev/cu.usbmodem14101").begin()   #mac下指定端口初始化
led = Pin(Pin.D9, Pin.OUT) #引脚初始化为电平输出,因为我们连接在D9号引脚
btn = Pin(Pin.D10, Pin.INT)#引脚初始化为电平输入,因为我们连接在D10号引脚
i=0  #设置变量i=0
while True:
v = btn.read_digital()  #读取引脚电平#print(v)  #终端打印读取的电平状态
if (v == 1):
        if (i == 1):
             i=0
             led.write_digital(0)  #将按钮状态设置给led灯引脚
             print("LED off")
        else:
             i=1
             led.write_digital(1)  #将按钮状态设置给led灯引脚
             print("LED on")


        time.sleep(0.5) #消抖[/mw_shl_code]

2.3实现效果
编写完成代码后,点击Run运行程序

16.png

运行成功后,显示All right. Pinpong go....,并能实时的打印按钮的状态值。

17.png


2.4代码解析
1、“btn = Pin(Pin.D10, Pin.INT)”,调用pinpong库中的引脚函数,用于设置引脚初始化方式,这里的含义为设置数字引脚10号为输入模式,并赋值给变量btn。
2、“i=0”设置全局变量i初始值为0。
3、“v = btn.read_digital()”,调用pinpong库中的引脚函数,用于读取对应引脚的状态(数值),这里的含义是读取数字引脚D10的值(其中btn为前面代码赋值的对象),并赋值给V变量。
4、“if”和“if      else”,都为逻辑判断语句。“if”语句,当判断条件为真时,则执行下面的语句(这里的格式一点要正确,符合python语句格式,否则无法实现相应的功能)。
“if     else”语句,当判断条件if为真时执行下面的语句,否则执行else下面的程序。
5、“print("LED off")”为串口打印操作,可以通过打印查看相应的数据(判读程序的走向)。

3、光控led灯

3.1光线传感器的连接
在1.1的基础上,把光线传感器连接在A0号引脚上。

18.png

3.2程序编写
[mw_shl_code=cpp,false]#实验效果:通过外接光线传感器和LED,利用代码实现当光线小于100时灯亮的效果。
import time
from pinpong.board import Board,Pin #导入必要的库函数
Board("leonardo").begin()#初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
Light = Pin(Pin.A0,Pin.ANALOG) #初始化光线传感器引脚为A0,检测光线大小
LED = Pin(Pin.D9, Pin.OUT) #初始化LED引脚为D9
while True:
    l=Light.read_analog()#读取模拟灯光信号数值
    print("Light=",l)#打印光线数据
    if l < 100:#判断光线大小
        LED.write_digital(1)
        time.sleep(3)
    else:
        LED.write_digital(0)[/mw_shl_code]

3.3实现效果
编写完成代码后,点击Run运行程序

19.png

运行成功后,显示All right. Pinpong go....,并能实时的打印当前的光线数据。

20.png




3.4代码解析
1、“Light = Pin(Pin.A0,Pin.ANALOG)”,调用pinpong库中的引脚函数,用于设置引脚初始化方式,这里的含义为初始化光线传感器读取引脚为A0,并赋值给变量Light。
2、“l=Light.read_analog()”,调用pinpong库中的引脚函数,用于读取对应引脚的状态(数值),这里的含义是读取模拟引脚A0的值(其中Light为前面代码赋值的对象),并赋值给l变量。

五、应用拓展
——————————————————————————————————————————
想一想,我们分别进行了数字及模拟引脚的控制,你还能想到什么好玩的项目呢,赶紧动手试试吧?


1212122112  学徒

发表于 2020-8-25 15:52:28

2我去恶趣味
回复

使用道具 举报

田霖11  学徒

发表于 2020-12-30 20:05:55

请问:python IDLE运行程序后,拔下usb接个充电宝硬件可以运行吗?
回复

使用道具 举报

Nick-ccq  初级技匠

发表于 2020-12-31 13:14:30

田霖11 发表于 2020-12-30 20:05
请问:python IDLE运行程序后,拔下usb接个充电宝硬件可以运行吗?

必须链接电脑才行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2023 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail