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)

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

    关注

    116

    文章

    1686

    浏览量

    105439
  • gpio引脚
    +关注

    关注

    0

    文章

    7

    浏览量

    2622
收藏 人收藏

    评论

    相关推荐

    ARM开发板与树莓的比较

    ARM开发板和树莓都是基于ARM架构的单板计算机,它们在教育、工业控制、物联网等领域有着广泛的应用。 硬件配置 ARM开发板和树莓的硬件
    的头像 发表于 11-05 11:11 55次阅读

    树莓gpio有什么,树莓gpio接口及编程方法

    /Output,通用输入/输出)是树莓提供的一组可编程的引脚,是树莓与外部世界进行交互的重要桥梁。通过
    的头像 发表于 10-22 18:09 307次阅读

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为学习计算机编程教育而设计的微型电脑。
    的头像 发表于 10-22 17:33 273次阅读

    树莓网关:物联网应用的新标杆

    的特点是体积小巧(大约信用卡大小),但功能齐全,足以支持多种计算任务。 树莓经常被用作物联网网关,收集设备数据,然后将数据上传云平台,并还可以用来接收来自云端的控制指令,控制其他连接
    的头像 发表于 10-09 16:44 196次阅读
    类<b class='flag-5'>树莓</b><b class='flag-5'>派</b>网关:物联网应用的新标杆

    树莓和单片机的优缺点是什么

    (Raspberry Pi) 优点: 强大的处理能力 :树莓配备了高性能的CPU和GPU,可以运行复杂的操作系统,如Linux和Windows 10 IoT Core。 丰富的扩展性 :通过GPIO(通用输入输出
    的头像 发表于 08-30 18:21 1353次阅读

    树莓的功能用途是什么

    、科研、工业控制、物联网、多媒体播放、家庭自动化等领域。 树莓(Raspberry Pi)是一种小型、低成本的单板计算机,由英国的Raspberry Pi基金会开发,其功能和用途非常广泛。以下是
    的头像 发表于 08-30 18:01 1991次阅读

    树莓4b风扇插哪个引脚

    树莓4B驱动风扇时,风扇可以插接的引脚主要取决于风扇的类型和所使用的控制方法。以下是一些常见的风扇插接引脚情况: 1. 直接连接法 对于简
    的头像 发表于 08-30 16:53 999次阅读

    树莓gui开发什么ide

    树莓(Raspberry Pi)是一款功能强大的微型计算机,可以运行多种操作系统,如Raspbian、Ubuntu等。在树莓派上进行GUI(图形用户界面)开发,可以使用多种集成开发环境(IDE
    的头像 发表于 08-30 16:49 586次阅读

    树莓5,Raspberry Pi 5 评测

    如果要安装风扇,必须占用GPIO引脚,有时会阻碍HAT的使用。当CPU温度达到50°C时,风扇会开始工作。在空闲时,散热器将使树莓5 的温度保持在39.5°C,功耗为2.6瓦。进行压
    发表于 06-19 14:51

    Waveshare推出树莓红外热像仪,可智能检测报警和过热问题

    Waveshare近日推出针对树莓的红外线热像仪。此设备能借助GPIO接口与树莓派对接,拓展其功能领域。除正常的树莓
    的头像 发表于 05-20 14:45 574次阅读

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?
    发表于 05-07 06:55

    stm32f100怎样用重映射功能?

    的是stm32f100c8t6b芯片,现在想用将PB1映射为TIM1_CH3N,在调用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_
    发表于 05-07 06:06

    树莓5的新功能和引脚介绍

    树莓5(Raspberry Pi 5)于2023 年10 月底已经推出。
    的头像 发表于 01-26 09:21 8283次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>5的新功能和<b class='flag-5'>引脚</b>介绍

    树莓都有哪些功能,是什么编程的?

    怎么学习树莓树莓和传统单片机的区别是哪些,如果有了树莓该学哪些知识
    发表于 11-09 07:51

    树莓Pico RP2040上怎样使用MicroPython呢?

    RP2040 是一款由树莓公司设计的 32 位双核 ARM Cortex-M0+ 微控制器芯片,于 2021 年 1 月发布,作为树莓
    的头像 发表于 11-08 14:29 3005次阅读
    在<b class='flag-5'>树莓</b><b class='flag-5'>派</b>Pico RP2040上<b class='flag-5'>怎样</b>使用MicroPython呢?