4957| 7
|
[pinpong 库控制硬件] 【pinpong库控制硬件】之 Latte Panda一代 |
本帖最后由 _木子_ 于 2020-9-1 14:21 编辑 【用python编程控制硬件】LattePanda(拿铁熊猫)一代 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程序文档 然后就可以进行编程啦! 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运行程序 运行成功后,显示All right. Pinpong go.... 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程序编写 [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运行程序 运行成功后,显示All right. Pinpong go....,并能实时的打印按钮的状态值。 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程序编写 [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运行程序 运行成功后,显示All right. Pinpong go....,并能实时的打印当前的光线数据。 3.4代码解析 1、“Light = Pin(Pin.A0,Pin.ANALOG)”,调用pinpong库中的引脚函数,用于设置引脚初始化方式,这里的含义为初始化光线传感器读取引脚为A0,并赋值给变量Light。 2、“l=Light.read_analog()”,调用pinpong库中的引脚函数,用于读取对应引脚的状态(数值),这里的含义是读取模拟引脚A0的值(其中Light为前面代码赋值的对象),并赋值给l变量。 五、应用拓展 —————————————————————————————————————————— 想一想,我们分别进行了数字及模拟引脚的控制,你还能想到什么好玩的项目呢,赶紧动手试试吧? |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed