找回密码
 立即注册

QQ登录

【GPIO】通过滑条改变PWM信号脉宽

来源: 奥松-Neil 2017-2-7 15:13 显示全部楼层 |阅读模式
本帖最后由 奥松-Neil 于 2018-11-21 13:56 编辑

1、实验目的:
使用python2的TKinter库建立滑条,通过拖动滑条,改变输出的PWM信号脉宽,从而控制LED的亮度

2、实验环境:
实验硬件:
* Raspberry Pi 3 控制器套件
* LED 发光二极管(红色) 1个
* 470欧电阻 1个
* 实验连接线若干
软件环境
* 操作系统:2016-09-23-raspbian-jessie
* 编译器:Python2

3、硬件连接
Raspberry  Pi GPIO PIN  标号图
硬件连接示意图:
实物接线图:

4、实验例程
(1)安装Python Tkinter库
  • 输入代码python2”在SSH终端进入python编译器
  • 输入代码“import Tkinter”检查Tkinter是否已经正确安装,如图所示效果为库文件已安装
  • 输入”quit( )“,退出Python编译器
01.png

注意:如果输入”import Tkinter“结果不是上图所示内容,而是产生了报错,那么就需要安装该库文件
使用命令:”sudo aptitude install python-tk“
正常情况下,默认是已经安装好的

(2)程序代码
  1. from Tkinter import *
  2. import RPi.GPIO as GPIO
  3. import time

  4. GPIO.setmode(GPIO.BCM)
  5. GPIO.setup(18, GPIO.OUT)
  6. pwm = GPIO.PWM(18, 500)
  7. pwm.start(100)

  8. class App:
  9.         
  10.     def __init__(self, master):
  11.         frame = Frame(master)
  12.         frame.pack()
  13.         scale = Scale(frame, from_=0, to=100,
  14.               orient=HORIZONTAL, command=self.update)
  15.         scale.grid(row=0)


  16.     def update(self, duty):
  17.         pwm.ChangeDutyCycle(float(duty))

  18. root = Tk()
  19. root.wm_title('PWM Power Control')
  20. app = App(root)
  21. root.geometry("200x50+0+0")
  22. root.mainloop()
复制代码
如下图所示为 Windows 环境下,使用 Notepad++ 进行的 Python 程序编辑,需要注意的是 Python 程序对于格式要求非常严格,所以大家编程时一定要注意格式的准确,否则在运行程序时会出现错误
02.jpg

5、程序下载
gui_slider.py (550 Bytes, 下载次数: 15)
6、代码运行
由于Tkinter是python的一个图形编程接口,而SSH并不是图形化界面,所以要运行本程序需要使用Raspberry Pi的图形化界面,例如可以使用液晶屏来连接Raspberry Pi控制器,或者也可以使用远程桌面登陆到Raspberry Pi控制器运行程序,本实验中使用远程桌面方式运行程序
(1)远程桌面登录
  • 在SSH登录界面,输入指令:sudo apt-get install xrdp,点击回车,安装远程登录插件
09.jpg

  • 打开Windows远程桌面,输入Raspberry Pi的IP地址,点击链接,注意:使用的电脑与树莓派需要在同一个网络下
07.jpg

  • 输入用户名和密码,如果没有修改过,则默认的用户名为:pi,密码为:raspberry,然后点击OK,登录到Raspberry Pi
08.jpg


10.jpg

  • 在远程桌面上运行终端,如图所示
03.png

(2)运行程序
  • 输入指令:cd Alsrobot,进入Alsrobot目录
  • 输入指令:ls,查看当前目录下都有哪些文件
  • 输入指令:sudo python2 gui_slider.py,单击回车,运行相应程序
效果如图所示,拖动滑条,就可以改变LED的亮度
04.png

05.png

7、简要说明
本实验例程中定义了一个类,命名未App,它包含了大部分的应用程序代码,每次改变滑条的值都会更新到程序中,这样就通过滑块更新了GPIO18引脚输出PWM信号的脉宽,从而实现LED亮度的改变。
注意:如果要使用 Python3 需要将 Tkinter 修改为 tkinter,如图所示:
06.jpg

回复

使用道具 举报

大神点评26

回复学习
回复

使用道具 举报

fox1962 2017-2-22 22:10 显示全部楼层
这个要学习一下的
回复 支持 反对

使用道具 举报

hxlrbt 2017-2-26 19:38 显示全部楼层
详详细细嘻嘻嘻
回复 支持 反对

使用道具 举报

wang11876 2017-3-20 14:47 显示全部楼层
复反反复复反反复复反反复复反反复复吩咐
回复 支持 反对

使用道具 举报

nyebo1911 2017-4-24 12:07 显示全部楼层
很有用的东西
,谢谢作者。
回复 支持 反对

使用道具 举报

回复学习。。
回复

使用道具 举报

jason780717 2017-11-21 14:44 显示全部楼层
感謝分享感謝分享感謝分享感謝分享感謝分享感謝分享
回复 支持 反对

使用道具 举报

学习一蛤
回复

使用道具 举报

lxdtk2 2017-12-9 14:46 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关注0

粉丝11

帖子147

发布主题