0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用Tkinter控制树莓派GPIO引脚

454398 来源:工程师吴畏 2019-08-02 17:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

对于这个项目,你需要:

Raspberry Pi

2 x LED

跳线电缆

面包板

电路图和说明

电路图非常简单。我们只需要使用220欧姆电阻将两个LED连接到Raspberry Pi上的GPIO 20和21。将引脚连接到每个LED的正极,并将每个LED的负极与220欧姆电阻连接到地。

怎样用Tkinter控制树莓派GPIO引脚

完整的Python代码

用于控制Raspberry Pi的GPIO的Python代码通过GUI应用程序的引脚可以在下面找到。将此代码复制并粘贴到新文件中,并使用文件扩展名保存:.py(例如,GUItest.py)。确保您位于同一目录中,然后使用命令 python GUItest.py 从终端运行程序。

import Tkinter as tk

import RPi.GPIO as GPIO

from time import sleep

GPIO21 = 21

GPIO20 = 20

GPIO.setmode(GPIO.BCM)

GPIO.setup(GPIO21, GPIO.OUT)

GPIO.setup(GPIO20, GPIO.OUT)

master = tk.Tk()

master.title(“GPIO Control”)

master.geometry(“300x100”)

GPIO21_state = True

GPIO20_State = True

def GPIO21button():

global GPIO21_state

if GPIO21_state == True:

GPIO.output(GPIO21, GPIO21_state)

GPIO21_state = False

ONlabel = tk.Label(master, text=“Turned ON”, fg=“green”)

ONlabel.grid(row=0, column=1)

else:

GPIO.output(GPIO21, GPIO21_state)

GPIO21_state = True

ONlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)

ONlabel.grid(row=0, column=1)

def GPIO20button():

global GPIO20_State

if GPIO20_State == True:

GPIO.output(GPIO20, GPIO20_State)

GPIO20_State = False

OFFlabel = tk.Label(master, text=“Turned ON”, fg=“green”)

OFFlabel.grid(row=1, column=1)

else:

GPIO.output(GPIO20, GPIO20_State)

GPIO20_State = True

OFFlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)

OFFlabel.grid(row=1, column=1)

ONbutton = tk.Button(master, text=“GPIO 21”, bg=“blue”, command=GPIO21button)

ONbutton.grid(row=0, column=0)

OFFbutton = tk.Button(master, text=“GPIO 20”,bg=“blue” , command=GPIO20button)

OFFbutton.grid(row=1, column=0)

Exitbutton = tk.Button(master, text=“Exit”,bg=“red”, command=master.destroy)

Exitbutton.grid(row=2, column=0)

master.mainloop()

代码演练

让我们来看看代码,看看每个部分的作用整个项目。

首先,我们为这个项目导入了所需的库。 Tkinter库帮助我们创建了GUI应用程序,RPi.GPIO库控制着Raspberry Pi的GPIO引脚。

import Tkinter as tk

import RPi.GPIO as GPIO

from time import sleep

然后我们使用BCM引脚编号为我们的LED初始化了GPIO引脚21和20,将这些引脚声明为输出。

GPIO21 = 21

GPIO20 = 20

GPIO.setmode(GPIO.BCM)

GPIO.setup(GPIO21, GPIO.OUT)

GPIO.setup(GPIO20, GPIO.OUT)

之后,我们创建了Tk根小部件。只能有一个根小部件,它必须在任何其他小部件之前创建。

然后我们重命名该窗口的标题并定义其大小。

master = tk.Tk()

master.title(“GPIO Control”)

master.geometry(“300x100”)

当GPIO按下21按钮,它将查找以前的状态。如果前一个状态为真(高状态),它将使其为假(低状态),反之亦然。

按钮旁边还有一个标签,告诉我们LED是否为高电平或LOW。

def GPIO21button():

global GPIO21_state

if GPIO21_state == True:

GPIO.output(GPIO21, GPIO21_state)

GPIO21_state = False

ONlabel = tk.Label(master, text=“Turned ON”, fg=“green”)

ONlabel.grid(row=0, column=1)

else:

GPIO.output(GPIO21, GPIO21_state)

GPIO21_state = True

ONlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)

ONlabel.grid(row=0, column=1)

GPIO 20按钮的工作方式类似:

def GPIO20button():

global GPIO20_State

if GPIO20_State == True:

GPIO.output(GPIO20, GPIO20_State)

GPIO20_State = False

OFFlabel = tk.Label(master, text=“Turned ON”, fg=“green”)

OFFlabel.grid(row=1, column=1)

else:

GPIO.output(GPIO20, GPIO20_State)

GPIO20_State = True

OFFlabel = tk.Label(master, text=“Turned OFF”, fg=“red”)

OFFlabel.grid(row=1, column=1)

最后,我们创建了三个按钮。其中两个控制GPIO引脚20和21,第三个是退出按钮。

ONbutton = tk.Button(master, text=“GPIO 21”, bg=“blue”, command=GPIO21button)

ONbutton.grid(row=0, column=0)

OFFbutton = tk.Button(master, text=“GPIO 20”,bg=“blue” , command=GPIO20button)

OFFbutton.grid(row=1, column=0)

Exitbutton = tk.Button(master, text=“Exit”,bg=“red”, command=master.destroy)

Exitbutton.grid(row=2, column=0)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109681
  • gpio引脚
    +关注

    关注

    0

    文章

    10

    浏览量

    2781
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    零成本钢铁侠手套!树莓+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-16 16:16 882次阅读
    零成本钢铁侠手套!<b class='flag-5'>树莓</b><b class='flag-5'>派</b>+OpenCV 秒变手势遥控器!

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    使用树莓和OpenCV实时扫描并存储二维码使用树莓和OpenCV实现物体与动物识别使用树莓
    的头像 发表于 08-14 17:45 957次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和运动追踪的云台系统?

    树莓屏幕怎么选?

    树莓很多人都用过,但屏幕的倒不是很多。不少都是直接远程操作,或者直接接身边的显示设备了。但我觉得给开发板配一个屏幕还是很能提升使用体验的。这次我就介绍一下树莓
    的头像 发表于 08-08 14:59 1058次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>屏幕怎么选?

    技能+1!如何在树莓派上使用C++控制GPIO

    和PiGPIO等库,C++可用于编程控制树莓GPIO引脚。它提供了更好的性能和控制能力,非常
    的头像 发表于 08-06 15:33 3573次阅读
    技能+1!如何在<b class='flag-5'>树莓</b>派上使用C++<b class='flag-5'>控制</b><b class='flag-5'>GPIO</b>?

    树莓打造无人机,你需注意的事项!

    能否将树莓装入无人机?使用树莓打造无人机是可行的。树莓充当无人机的“大脑”,将飞行
    的头像 发表于 07-14 17:49 1521次阅读
    <b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>打造无人机,你需注意的事项!

    树莓6 传闻:发布日期与规格!

    每当我想再为我的收藏增添一款树莓时,总会在是立即购买还是等待硬件更强大的下一代之间犹豫不决。但新树莓型号的发布往往容易被错过,尤其是在你的信息流被病毒式传播的猫咪视频占据时。因此,
    的头像 发表于 07-11 16:21 1340次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>6 传闻:发布日期与规格!

    你真的懂树莓5嘛?树莓5引脚图全面指南:理解GPIO引脚及其功能!

    树莓5上的GPIO通用输入/输出(GPIO引脚树莓派上的物理连接器,允许
    的头像 发表于 07-04 15:27 2396次阅读
    你真的懂<b class='flag-5'>树莓</b><b class='flag-5'>派</b>5嘛?<b class='flag-5'>树莓</b><b class='flag-5'>派</b>5<b class='flag-5'>引脚</b>图全面指南:理解<b class='flag-5'>GPIO</b><b class='flag-5'>引脚</b>及其功能!

    20个任何人都能完成的树莓酷炫项目!

    不知道如何利用你买的树莓?这个小设备真的能当台式电脑吗?能当服务器吗?能当广播电台吗?当然可以!为了帮助你入门,我们精心挑选了这份树莓
    的头像 发表于 07-03 17:10 3000次阅读
    20个任何人都能完成的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>酷炫项目!

    树莓小技巧:无需键盘或显示器,如何通过WiFi设置树莓

    树莓是一款小巧便携的USB供电计算机,可以隐藏起来用于小型项目,如网络服务器或家庭自动化。通常,设置树莓需要键盘和显示器来编辑和查看树莓
    的头像 发表于 06-26 15:41 1043次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>小技巧:无需键盘或显示器,如何通过WiFi设置<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓分类器:树莓识别不同型号的树莓

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 983次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>分类器:<b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>识别不同型号的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>!

    树莓“揪出”家里的耗电怪兽!

    在本应用中,我们将使用树莓设置一个CE电流监测器,并通过网页界面显示电路的电流读数。本项目使用的组件硬件组件树莓2ModelBx112通道20安培电流监测
    的头像 发表于 06-04 15:33 1142次阅读
    <b class='flag-5'>用</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>“揪出”家里的耗电怪兽!

    树莓“吉尼斯世界记录”:将树莓的性能发挥到极致的项目!

    树莓是一款功能强大、体积小巧且高度可定制的设备,多年来,我们见证了它被应用于众多领域。无论是将其装入3D打印的经典游戏机外壳,还是简单地将它隐藏起来作为家庭文件服务器,我们都报道过在社区里
    的头像 发表于 05-22 16:53 1199次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>“吉尼斯世界记录”:将<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的性能发挥到极致的项目!

    树莓 Zero 打造的智能漫游车!

    使用PXFMini和树莓Zero打造您自己的自主漫游车。本项目所用组件硬件组件ErleRoboticsPXFmini×1树莓Zero×1树莓
    的头像 发表于 05-13 16:39 866次阅读
    <b class='flag-5'>用</b> <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游车!

    树莓4 打造专属流媒体控制台!

    树莓体验DIY智能科技!如今市面上有各种各样的流媒体控制台,但购买现成的哪有自己从零开始制作的有趣呢?至少,这似乎是树莓
    的头像 发表于 05-11 08:33 424次阅读
    <b class='flag-5'>用</b> <b class='flag-5'>树莓</b><b class='flag-5'>派</b>4 打造专属流媒体<b class='flag-5'>控制</b>台!

    GPIO树莓中的应用

    直接控制和读取外部硬件设备的状态。 1. GPIO简介 GPIO树莓派上用于与外部世界交互的一组引脚。这些
    的头像 发表于 01-09 09:41 1245次阅读