欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

树莓派科学小实验4B--001-LED灯

时间:2023-08-30

**树莓派科学小实验

LTE灯 —001 点亮第一盏LED灯


目录

前言一、查询管脚定义二、 写python代码:

第一种方法,通过无线循环来实现亮灭第二种方法,调用blink函数 三、查看过程


前言

本次开始将在上一章中的实验板上做实验


提示:以下是本篇文章正文内容,下面案例可供参考

一、查询管脚定义

查询商家给出的定义, 可以看到LED-红 接在了BCM17(物理管脚11、GPIO.0)的位置

二、 写python代码: 第一种方法,通过无线循环来实现亮灭

# -*- coding: utf-8 -*-"""#在这个实验中使用gpiozero来完成点亮LED灯的实验 version = '0.0.1'make day=2022-01-22"""__docformat__ = "restructuredtext en"__all__ = []__license__ = "MIT license"# 导入相关的包from gpiozero import LEDfrom time import sleepred=LED(17) # 设定灯接在17号管脚# 下面的部分为无线循环,小灯会亮1秒然后灭1秒while True: # 方法 1 ,自定义高低电平 red.on() # 高电平点亮 print("led on") sleep(1) red.off() # 低电平关闭 print("led off") sleep(1)

程序执行后, 会在下面的shell窗口看到打印日志,灯开和灯关

第二种方法,调用blink函数

# -*- coding: utf-8 -*-"""#在这个实验中使用gpiozero来完成点亮LED灯的实验 version = '0.0.1'make day=2022-01-22"""__docformat__ = "restructuredtext en"__all__ = []__license__ = "MIT license"# 导入相关的包from gpiozero import LEDfrom time import sleepfrom signal import pause red=LED(17) # 设定灯接在17号管脚red.blink()sleep(10) # 这里是让这个灯的亮灭循环有10秒的运行时间red.close()#关闭GPIO17脚的定义pause()

led off

led on

三、查看过程

这个是封装好的参数。那具体的是怎么调用的?
查看 gpiozero这个包的定义
LED 继承 DigitalOutputDevice
在 DigitalOutputDevice类中实现了
on 、 off、close、blink的方法

def close(self): self._stop_blink() super(DigitalOutputDevice, self).close() def on(self): self._stop_blink() self._write(True) def off(self): self._stop_blink() self._write(False)

而 blink方法是一个已经封装好了的循环,在这里可以定义开的时间和关闭的时间以及循环次数

def blink(self, on_time=1, off_time=1, n=None, background=True): """ Make the device turn on and off repeatedly. :param float on_time: Number of seconds on、Defaults to 1 second. :param float off_time: Number of seconds off、Defaults to 1 second. :type n: int or None :param n: Number of times to blink; :data:`None` (the default) means forever. :param bool background: If :data:`True` (the default), start a background thread to continue blinking and return immediately、If :data:`False`, only return when the blink is finished (warning: the default value of *n* will result in this method never returning). """ self._stop_blink() self._blink_thread = GPIOThread( self._blink_device, (on_time, off_time, n) ) self._blink_thread.start() if not background: self._blink_thread.join() self._blink_thread = None

如果需要,可以直接在自己的代码中调用或重构这个类以及函数,非常方便。可以大大减少代码量

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。