_木子_ 发表于 2020-8-24 18:14:37

【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

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


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


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


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


其它配件如下:


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


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


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

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

1.1 led灯的连接

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


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


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


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


然后就可以进行编程啦!


#实验效果:控制外接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秒 保持状态

1.3实现效果

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


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


https://v.qq.com/x/page/q3141scqja5.html

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


2.2程序编写
#实验效果:通过外接按钮和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) #消抖

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


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


https://v.qq.com/x/page/e3141c8p5vx.html
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号引脚上。


3.2程序编写
#实验效果:通过外接光线传感器和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)

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


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



https://v.qq.com/x/page/q3141il2zvb.html

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接个充电宝硬件可以运行吗?

必须链接电脑才行

三春牛-创客 发表于 2023-8-23 21:56:30

厉害厉害

三春牛-创客 发表于 2023-8-23 21:57:36

赞赞赞赞赞!

花生编程 发表于 2023-8-24 14:10:32

厉害厉害

花生编程 发表于 2023-8-24 14:11:47

不错不错!!!
页: [1]
查看完整版本: 【pinpong库控制硬件】之 Latte Panda一代