大数跨境
0
0

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

03【pinpong库控制硬件】之 Latte Panda一代-1 蘑菇云创造
2020-08-25
2
导读:点击上方“公众号”可以订阅哦LattePanda(拿铁熊猫)一代上用python编程控制硬件在pinpong

点击上方“公众号”可以订阅哦


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

在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....





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,则表示等待10。


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....,并能实时的打印按钮的状态值。





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....,并能实时的打印当前的光线数据。





3.4代码解析


1、“Light = Pin(Pin.A0,Pin.ANALOG)”,调用pinpong库中的引脚函数,用于设置引脚初始化方式,这里的含义为初始化光线传感器读取引脚为A0,并赋值给变量Light。


2、“l=Light.read_analog()”,调用pinpong库中的引脚函数,用于读取对应引脚的状态(数值),这里的含义是读取模拟引脚A0的值(其中Light为前面代码赋值的对象),并赋值给l变量。


五、应用拓展



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





———————正文完———————



推荐阅读:
2020 创客嘉年华官方报名通道开启
02【pinpong库控制硬件】之Arduino uno-Led闪烁-1
01【pingpong库控制硬件】之虚谷号-1
Mind+:深耕8年的国产青少年编程软件,支持AI人工智能与IoT物联网功能
00后大学生成功发射自制火箭!网友集体膜拜……
你敢想却不敢做的,让AI来帮你实现!
  课程设计与教学设计的区别是什么?
  直播回顾 I 我与AI人工智能的一天
蘑菇云开放夜演讲人招募来啦!
回顾 I 初识AI,我能造些啥?
直播开课 | 如何零基础入门人工智能?
【文末超值福利】Mind+二哈识图双双更新,最全AI人工智能软硬件学习工具来袭!


【声明】内容源于网络
0
0
蘑菇云创造
蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
内容 969
粉丝 0
蘑菇云创造 蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
总阅读1.4k
粉丝0
内容969