首页 / 行业
怎样用Tkinter控制树莓派GPIO引脚
2019-08-02 17:55:00
对于这个项目,你需要:
Raspberry Pi
2 x LED
跳线电缆
面包板
电路图和说明
电路图非常简单。我们只需要使用220欧姆电阻将两个LED连接到Raspberry Pi上的GPIO 20和21。将引脚连接到每个LED的正极,并将每个LED的负极与220欧姆电阻连接到地。
完整的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)
最新内容
手机 |
相关内容
逆变器技术对新能源汽车市场增长的
逆变器技术对新能源汽车市场增长的重要性,市场,新能源汽车,逆变器,控制,高效率,能和,随着全球对环境保护和可持续发展的关注不断增什么是高压接触器,高压接触器的组成
什么是高压接触器,高压接触器的组成、特点、原理、分类、常见故障及预防措施,高压,分类,闭合,用于,操作,损坏,AD694ARZ高压接触器是什么是射流继电器,射流继电器的基本
什么是射流继电器,射流继电器的基本结构、技术参数、工作原理、负载分类、如何选用、操作规程及发展历程,继电器,工作原理,分类,负什么是NFC控制器,NFC控制器的组成、
什么是NFC控制器,NFC控制器的组成、特点、原理、分类、常见故障及预防措施,控制器,分类,模式,移动支付,数据,信号,NFC(Near Field Com什么是电机启动器,电机启动器的基本
什么是电机启动器,电机启动器的基本结构、优缺点、工作原理、类型、检测、操作规程及发展历程,工作原理,类型,检测,结构,启动,断开,电流互感器作用 电流互感器为什么
电流互感器作用 电流互感器为什么一端要接地?,作用,误差,原因,连接,测量,短路故障,电流互感器(Current Transformer,简称CT)是一种用于应用在阀门控制中的直流有刷驱动芯
应用在阀门控制中的直流有刷驱动芯片,芯片,控制,支持,远程控制,电动,调节,直流有刷驱动芯片是一种用于控制直流电机的IPB072N15N3G振弦传感器智能化:电子标签模块
振弦传感器智能化:电子标签模块,模块,传感器,操作,连接,安装,控制,mbrs360t3g振弦传感器是一种常用的测量设备,用于检测物体的振动。