0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么树莓派项目的GPIO零优于RPi.GPIO

454398 来源:网络整理 作者:网络整理 2019-12-02 11:05 次阅读

Raspberry Pi是学习的理想计算机。基于Linux的Raspbian操作系统内置了Python,这使得它成为初学者的理想之选。通用输入/输出(GPIO)引脚使萌芽的制造商可以轻松地进行DIY电子项目的实验。

当您使用控制这些引脚的代码库和流行的RPi时,这一点尤其容易。库就是此类库的一个很好的例子。但这是初学者的最佳途径吗?加入我们进行调查。

什么是GPIO零?

GPIO零库是一个用于处理GPIO引脚的Python库。它是由Raspberry Pi社区经理Ben Nuttall编写的。旨在直观,“友好”,它简化了大多数常规Raspberry Pi用例的Python代码。

结合了简单的命名实践和描述性功能,GPIO 0可供初学者更容易理解。即使是经验丰富的RPi.GPIO库用户也可能会喜欢它-并且要了解原因,让我们看一下RPi.GPIO与GPIO零的比较。

RPi.GPIO有什么问题?

什么都没有。没事RPi.GPIO由开发人员Ben Croston于2012年初发布。它是一个强大的库,允许用户从代码控制GPIO引脚。它涵盖了几乎我们涵盖的每个初学者项目。

尽管RPi.GPIO用途广泛,但它从来都不是为最终用户设计的。

GPIO零的优点是什么?

在学习Python代码时,您会了解到它是GPIO良好设计的证明。应当易于阅读且尽可能简短。 GPIO零旨在涵盖这两个方面。构建在RPi.GPIO上作为前端语言包装,它简化了GPIO的设置和使用。

请考虑以下示例,设置并打开LED

为什么树莓派项目的GPIO零优于RPi.GPIO

使用Pi来控制LED的任何人都应该非常熟悉上面的代码。

已导入RPi.GPIO库,并且为LED已声明。设置了引脚布局类型(在GPIO指南中说明了BCM和BOARD模式),并且将引脚设置为输出。然后,将引脚打开。

这种方法很有意义,但是使用GPIO Zero的方法要简单得多:

GPIO Zero有一个用于LED的模块,该模块从一开始就导入。这意味着您可以声明引脚号,并调用 led.on()方法。

为什么GPIO Zero的方法更好?

有一些这种工作方法是对RPi.GPIO进行改进的原因。

首先,它满足“易于阅读,且尽可能短”的要求。尽管RPi.GPIO设置语句很容易理解,但不是必需的。 LED始终是输出,因此GPIO零设置了后台的引脚。结果仅需设置三行代码,然后点亮一个LED。

您可能会注意到,在GPIO Zero示例中没有设置板模式。该库仅对引脚使用Broadcom(BCM)编号。图书馆设计师Ben Nuttall在2015年RasPi.tv采访中解释了原因:

“板子编号看似简单,但我想说它会使新用户认为所有的销钉都是通用的,而且不是。将LED连接到引脚11,为什么不另外连接引脚1,2,3和4? 1号井是3V3。 2和4是5V。

以这种方式放置,使用BCM编号绝对有意义。鉴于GPIO零将在以后的Raspberry Pi文档中成为标准配置,值得学习!

GPIO零实际上更好吗?

表面上看起来更简单,但是新图书馆有什么问题吗?与任何新的编码库一样,这是一个意见问题。一方面,对于初学者和经验丰富的编码人员而言,删除设置代码都是极好的选择。编写代码更直接,更快捷。

另一方面,准确了解正在发生的事情对于学习很重要。以GPIO零文档中的设置按钮为例:

按钮模块简化了按钮的设置。它知道按钮是输入,因此使用声明的引脚号进行设置。使用 .is_pressed 检测按钮是否按下也很容易。

我们在Raspberry Pi按钮教程中使用了此确切功能,这是一种很好的方法熟悉库中的差异。

RPi.GPIO库的用户会注意到,未在代码中设置Pi的内部上拉/下拉电阻。这就提出了一个有趣的问题。对于初学者来说,了解上拉/下拉电阻器至关重要吗?同样,本·努塔尔(Ben Nuttall)对这个问题有一个答案:

“您可能会说,了解上拉和下拉动作是件好事,您会说对的,但是为什么我必须在第一天就教它吗?[…]如果您想更深入地讲授电子学,则有很大的余地-但是如果您刚刚开始,则不应该是强制性的。”

总的来说,对于初学者和老手来说,GPIO Zero的简单方法可能是一件好事。此外,RPi.GPIO不会随处可见。

Python是唯一的选择吗?

Python是Pi众所周知的语言,但不是唯一的选择。如果您已经熟悉使用C语言进行编程,那么覆盖了Wiing Pi。

或者,如果您已经使用JavaScript进行编程,则可以轻松地在Pi上安装Node.js。 GPIO访问可通过rpi-gpio npm库获得。 Ruby on Rails也可以安装在Raspberry Pi上,尽管Pi可能不是学习Rails的最佳方法!

所有这些替代方案以及出色的Pigpio等多语言库可以使您选择图书馆令人困惑。这就是GPIO Zero的优势:对于初学者来说,他们想知道如何以及从哪里开始。

如果您正处在一个不需要它的东西的地方,那么您将准备好进入这些其他库。

您自己可以使用GPIO零入门

GPIO零是最新的库,有充分的理由使Pi引人注目。对于大多数用户而言,它使GPIO引脚的编码更易于阅读和编写。

鉴于Raspberry Pi在教育中的用途,任何使学习更加自然的事情都是一件好事。虽然RPi.GPIO到目前为止一直很完善,但是GPIO Zero还是一个好主意,并且使其变得更好。

使用GPIO Zero入门的一种好方法是接受像Musical Door Sensor这样的初学者项目。并将其移植到新库中。
责任编辑:wv

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

    关注

    16

    文章

    1132

    浏览量

    50556
  • 树莓派
    +关注

    关注

    113

    文章

    1637

    浏览量

    104712
收藏 人收藏

    评论

    相关推荐

    【核桃1B 开发板试用体验】+GPIO测试篇

    GPIO是入手硬件的最佳点,在核桃的开发板上配有40Pin GPIO(和树莓类似),见图1所示。 该扩展接口分为两行,每行有20个排针。
    发表于 01-02 19:57

    如何配置GPIO为中断功能呢?

    如何配置GPIO为中断功能呢? GPIO在嵌入式系统中经常用于控制外设,如LED、摄像头、传感器等。除此之外,GPIO还可以被配置为中断功能,用于检测输入信号的变化,从而触发中断服务程序。本文将介绍
    的头像 发表于 10-30 09:57 3029次阅读

    STM32使用GPIO配置的5种方式

    STM32使用GPIO配置的5种方式 STM32是常见的一种微控制器,其GPIO模块可以实现对外部设备的控制和数据传输,包括数字I/O口、模拟输入口和输出口等。在STM32中,GPIO模块的配置可以
    的头像 发表于 10-26 17:42 764次阅读

    如何从单片机平台编写GPIO口程序

    单片机平台编写 GPIO 口程序,以 STM32F103 为例,有三种模式:库函数、HAL库、寄存器。 使用库函数的方式操控 GPIO 方式如下: void LED_Init ( void
    的头像 发表于 09-28 15:56 871次阅读

    gpio子系统API详解

    gpio 子系统 API gpio 子系统中操作一个 GPIO 需要如下几步: 1、of_find_compatible_node2、of_get_named_gpio3、
    的头像 发表于 09-27 17:17 470次阅读
    <b class='flag-5'>gpio</b>子系统API详解

    使用GPIO给VF2供电,进行大型的Rust或者C项目编译时电压不稳还死机是怎么回事?

    图: 在进行高负荷CPU运行的时候 LCD屏幕会一闪一闪的,明显的电压不稳。用继电器转一下是因为,VF偶尔死机或者reboot之后不能正常启动,必须要强制断电。所以使用了树莓GPIO来控制一下VF2的电源通断。 请问有什
    发表于 09-12 08:12

    使用树莓GPIO口点亮双色LED灯

    上一篇文章向大家介绍树莓派的硬件部分、安装操作系统及基础设置。这篇文章将介绍树莓派的强大的开发功能口——GPIO,以及利用GPIO口点亮双色LED灯(
    的头像 发表于 07-04 11:34 1114次阅读
    使用<b class='flag-5'>树莓</b>派<b class='flag-5'>GPIO</b>口点亮双色LED灯

    GPIO的八种工作模式

    GPIO是通用输入/输出端口的简称,GPIO的引脚与外部设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。GPIO的8种输入模式:包括4种输入模式和4种输出模式(2种普通输出和2种复用输出)。
    的头像 发表于 07-02 16:38 6380次阅读
    <b class='flag-5'>GPIO</b>的八种工作模式

    GPIO读取按钮状态

    树莓派的GPIO可以控制发光二极管,这是GPIO的Output(输出)能力,它也具有input(读取)的能力,所以才能叫做I/O(输入/输出)端口。今天我们就来用GPIO的引脚来读取按
    的头像 发表于 07-02 15:06 889次阅读
    用<b class='flag-5'>GPIO</b>读取按钮状态

    不同GPIO类库的区别

    重点来讲解一下什么是类库,如何使用,以及不同的GPIO类库的区别。
    的头像 发表于 07-02 15:03 548次阅读
    不同<b class='flag-5'>GPIO</b>类库的区别

    树莓GPIO(通用输入输出)讲解

    界面(GUI),网络通信等等。但目前的知识已经可以让我们使用Python编写简单程序了。我们先放下Python,开始学习树莓派最好玩的部分GPIO(通用输入输出)。
    的头像 发表于 07-02 15:00 4462次阅读
    <b class='flag-5'>树莓</b>派<b class='flag-5'>GPIO</b>(通用输入输出)讲解

    STM32的GPIO在实际开发设计的使用配置和技巧

    一、前言 本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。 了解过STM32的GPIO
    的头像 发表于 06-22 10:22 518次阅读
    STM32的<b class='flag-5'>GPIO</b>在实际开发设计的使用配置和技巧

    一文详解GPIO的输出配置

    引言:GPIO,即General purpose input output,通用输入输出端口,是可以根据实际使用场景需求来用软件来配置的引脚。需要注意的是,一款芯片的引脚分为其实分为很多域,比如仅为
    发表于 06-14 16:41 1867次阅读
    一文详解<b class='flag-5'>GPIO</b>的输出配置

    一文详解GPIO的输入配置

    引言:GPIO,即General purpose input output,通用输入输出端口,是可以根据实际使用场景需求来用软件来配置的引脚。需要注意的是,一款芯片的引脚分为其实分为很多域,比如仅为
    发表于 06-14 16:41 2943次阅读
    一文详解<b class='flag-5'>GPIO</b>的输入配置

    如何通过ESP模块打开/关闭树莓GPIO电路?

    如何通过ESP模块打开/关闭树莓GPIO电路?树莓作为优雅的电源开/关功能。您只需关闭 Pi Pin 5 (BCM 3)
    发表于 05-15 06:13