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

[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
【pinpong库控制硬件】之 Latte Panda一代图2

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

【pinpong库控制硬件】之 Latte Panda一代图3

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

【pinpong库控制硬件】之 Latte Panda一代图1

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

【pinpong库控制硬件】之 Latte Panda一代图4

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

【pinpong库控制硬件】之 Latte Panda一代图5

其它配件如下:

【pinpong库控制硬件】之 Latte Panda一代图20

二、环境准备
——————————————————————————————————————————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需要联网,所以在这之前我们需要安装好配套的天线。

【pinpong库控制硬件】之 Latte Panda一代图6

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

【pinpong库控制硬件】之 Latte Panda一代图8

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

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

1.1 led灯的连接

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

【pinpong库控制硬件】之 Latte Panda一代图9

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

【pinpong库控制硬件】之 Latte Panda一代图7

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

【pinpong库控制硬件】之 Latte Panda一代图10

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

【pinpong库控制硬件】之 Latte Panda一代图14

然后就可以进行编程啦!

【pinpong库控制硬件】之 Latte Panda一代图11

[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运行程序

【pinpong库控制硬件】之 Latte Panda一代图12

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

【pinpong库控制硬件】之 Latte Panda一代图13



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号引脚上。

【pinpong库控制硬件】之 Latte Panda一代图17

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运行程序

【pinpong库控制硬件】之 Latte Panda一代图15

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

【pinpong库控制硬件】之 Latte Panda一代图16


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号引脚上。

【pinpong库控制硬件】之 Latte Panda一代图21

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运行程序

【pinpong库控制硬件】之 Latte Panda一代图18

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

【pinpong库控制硬件】之 Latte Panda一代图19




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  NPC

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

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

必须链接电脑才行
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-8-23 21:56:30

厉害厉害
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-8-23 21:57:36

赞赞赞赞赞!
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-24 14:10:32

厉害厉害
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-24 14:11:47

不错不错!!!
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail