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

**树莓派科学小实验

LTE灯 —001 点亮第一盏LED灯



前言

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


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

一、查询管脚定义

查询商家给出的定义, 可以看到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 LED
from time import sleep

red=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 LED
from time import sleep
from 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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掉光头发的土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值