在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

不同GPIO類庫(kù)的區(qū)別

CHANBAEK ? 來(lái)源:和娃一起玩樹(shù)莓派 ? 作者:老孟K ? 2023-07-02 15:03 ? 次閱讀

重點(diǎn)來(lái)講解一下什么是類庫(kù),如何使用,以及不同的GPIO類庫(kù)的區(qū)別。

什么是類庫(kù)

類庫(kù)是別人寫好的解決某類或某個(gè)問(wèn)題的可以重復(fù)使用的代碼集合。在面向?qū)ο?a href="http://m.xsypw.cn/v/tag/1315/" target="_blank">編程(我們今后會(huì)講到,可以簡(jiǎn)單理解為把程序設(shè)計(jì)為類似現(xiàn)實(shí)世界中各種對(duì)象的方式來(lái)解決問(wèn)題)的編程語(yǔ)言里,類庫(kù)里面包括了很多別人設(shè)計(jì)好的類對(duì)象,可以直接拿來(lái)使用,比如我們代碼里面的sleep方法就來(lái)自于time庫(kù),可以讓程序暫停(睡覺(jué))指定的時(shí)間。有了類庫(kù),我們就不需要所有的事情都自己解決,對(duì)于別人已經(jīng)解決的問(wèn)題,可以直接使用他寫好的類庫(kù),就像我們做機(jī)器人,輪子可以用現(xiàn)成的,不需要我們從原料開(kāi)始做,選擇合適尺寸,材料的輪子就行了,所以編程時(shí)要善于利用類庫(kù),不要做“重復(fù)發(fā)明輪子”的事情。類庫(kù)也像我們搭積木是使用的不同形狀和大小的積木塊,拿來(lái)用就可以做出自己需要的東西。

類庫(kù)可以分為兩大類:

  • 編程語(yǔ)言自帶的類庫(kù),比如Python編程語(yǔ)言自帶的OS,sys,logging庫(kù),RPi.GPIO和time也是自帶類庫(kù)。
  • 第三方類庫(kù):除上面自帶類庫(kù)外的其他非官方類庫(kù)都是。比如現(xiàn)在機(jī)器學(xué)習(xí),數(shù)據(jù)分析常見(jiàn)的numpy,matplotlib 等。

from與import

Python有2種方式來(lái)使用類庫(kù),分別是import 和from。我們先看看import:

import 類庫(kù)名1 [as 別名1], 類庫(kù)名2 [as 別名2],...

使用這種語(yǔ)法格式的 import 語(yǔ)句,會(huì)導(dǎo)入指定類庫(kù)中的所有成員(包括變量、函數(shù)、類等)。當(dāng)需要使用類庫(kù)中的成員時(shí),需用該類庫(kù)名(或別名)作為前綴,否則 Python 解釋器會(huì)報(bào)錯(cuò)。

from的語(yǔ)法如下:

from 類庫(kù)名 import 成員名1 [as 別名1],成員名2 [as 別名2],...

from只會(huì)導(dǎo)入模塊中指定的成員,而不是全部成員。當(dāng)程序中使用該成員時(shí),無(wú)需附加任何前綴,直接使用成員名(或別名)就可以了。

我們的控制發(fā)光二極管的程序中,可以看到這2種使用類庫(kù)的方式:

import RPi.GPIO as GPIO    #需要使用別人寫好的類庫(kù)
from time import sleep     #需要使用別人寫好的類庫(kù)
GPIO.setmode(GPIO.BCM)
GPIO.setup(27,GPIO.OUT)  #這2句把GPIO27設(shè)置為輸出模式
while True:
    GPIO.output(27,True)   #在GPIO輸出高電位1,此時(shí)LED
    sleep(1)             #等1秒
    GPIO.output(27,False)  #在GPIO輸出低電位0,此時(shí)LED滅
    sleep(1)            #等待1秒

import引入了RPi.GPIO類庫(kù),并命名為別名GPIO,在程序中使用時(shí),都需要加上GPIO這個(gè)別名,如GPIO.setmode(GPIO.BCM).

用from time import sleep引入了sleep,在代碼中使用時(shí),就不需要加上time這里類庫(kù)名,而是直接使用sleep了。

GPIO的類庫(kù)比較

上面講了怎么把類庫(kù)引入程序中,要想用好類庫(kù),還需要學(xué)習(xí)類庫(kù)中各種類,函數(shù)等如何使用,此時(shí)就需要看類庫(kù)對(duì)應(yīng)的官方文檔或者參考相關(guān)的文檔了。

比如RPi.GPIO類庫(kù)的官方文檔網(wǎng)站是:

https://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/

一般這種網(wǎng)站都是英文的,比較考驗(yàn)大家英文水平,此時(shí)可以搜索國(guó)內(nèi)的相應(yīng)中文文檔。

RPi.GPIO庫(kù)

RPi.GPIO是比較老的GPIO庫(kù),使用時(shí)需要注意它有2種GPIO的引腳規(guī)則,分別為BOARD和BCM,使用時(shí)需要先指定用哪種規(guī)則,對(duì)應(yīng)的代碼為:

GPIO.setmode(GPIO.BOARD) #設(shè)置為BOARD模式
  # or
GPIO.setmode(GPIO.BCM)   #設(shè)置為BCM模式

我們先看看下面的圖片以便理解接下來(lái)的討論。

圖片

BOARD模式是在程序中使用的是引腳的物理數(shù)字,也就是第幾個(gè)引腳。BCM模式使用的是引腳的功能定義,比如GPIO27它的物理引腳數(shù)字是13,那么設(shè)置為BOARD模式時(shí),我們?cè)诔绦蛑休斎氲囊_數(shù)字應(yīng)該是13

GPIO.setmode(GPIO.BOARD)
GPIO.setup(13,GPIO.OUT)  #把第13引腳(GPIO27)設(shè)置為輸出模式

設(shè)置為BCM模式時(shí),同樣的引腳設(shè)置為輸出模式代碼為:

GPIO.setmode(GPIO.BCM)  
GPIO.setup(27,GPIO.OUT) #把GPIO27(第13引腳)設(shè)置為輸出模式

大家使用時(shí)一定要注意區(qū)別。

使用RPi.GPIO庫(kù)時(shí),基本的使用方法是:

  1. 先設(shè)置引腳模式為BOARD還是BCM
  2. 設(shè)置引腳為OUTPUT(輸出)還是INPUT(輸入)
  3. 控制或讀取引腳的數(shù)據(jù)。

想一想:如果電路連接不變,改用BOARD模式,我們的控制二極管程序應(yīng)該如何修改呢?)

gpiozero庫(kù)

大家可以看到使用RPi.GPIO庫(kù)還是有點(diǎn)麻煩,于是有人在它的基礎(chǔ)上開(kāi)發(fā)了一個(gè)新的類庫(kù),讓大家更方面的來(lái)控制GPIO,這個(gè)類庫(kù)的名字叫做gpiozero,它的使用文檔在這里:

https://gpiozero.readthedocs.io/en/stable/index.html

gpiozero是樹(shù)莓派官方推薦的學(xué)習(xí)GPIO編程的類庫(kù),它創(chuàng)建了LED類用來(lái)控制發(fā)光二極管,Button類用來(lái)讀取按鈕狀態(tài),MotionSensor用于動(dòng)作傳感器等非常多的對(duì)象,我們可以直接使用。

使用它控制發(fā)光二極管的代碼特別簡(jiǎn)單,還是以控制連接到GPIO27引腳的LED為例,代碼如下:

from gpiozero import LED
from time import sleep


red = LED(27)     #創(chuàng)建一個(gè)led對(duì)象,命名為red,你可以可以用其他名字


while True:
    red.on()
    sleep(1)
    red.off()
    sleep(1)

可以看到gpiozero其實(shí)默認(rèn)使用了BCM模式,只是我們不需要寫在代碼里了。

用gpiozero庫(kù),我們只需要定義一個(gè)led對(duì)象,然后調(diào)用對(duì)象的on, off方法就可以控制發(fā)光二級(jí)管了,對(duì)比RPi.GPIO,簡(jiǎn)單多了。

除了剛才介紹的這2個(gè)類庫(kù),還有其他的GPIO類庫(kù),比如pigpio,這里就不介紹了。

下一講我們來(lái)聊聊如何通過(guò)這2個(gè)類庫(kù)讀取按鈕的狀態(tài)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1952

    瀏覽量

    35785
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1238

    瀏覽量

    53335
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8481

    瀏覽量

    133872
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

    85888
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用STM32 HAL庫(kù)進(jìn)行GPIO控制的實(shí)例

    在基于STM32微控制器的嵌入式系統(tǒng)開(kāi)發(fā)中,GPIO(GeneralPurposeInput/Output)控制是其中最基本、最常見(jiàn)的操作之一。通過(guò)使用STM32的HAL庫(kù),可以輕松地對(duì)GPIO進(jìn)行配置和控制。本文將演示如何使用
    的頭像 發(fā)表于 12-21 15:22 ?4388次閱讀

    不可錯(cuò)過(guò)的三GPIO硬件設(shè)計(jì)指南!

    今天我們學(xué)習(xí)三GPIO硬件設(shè)計(jì),這三絕對(duì)是不可錯(cuò)過(guò)的,本文將把三設(shè)計(jì)的重要性展示出來(lái):
    的頭像 發(fā)表于 11-04 09:45 ?1341次閱讀
    不可錯(cuò)過(guò)的三<b class='flag-5'>類</b><b class='flag-5'>GPIO</b>硬件設(shè)計(jì)指南!

    請(qǐng)問(wèn)GPIO_MODE中的GPIO_MODE_IT_RISING和GPIO_MODE_EVT_RISING的區(qū)別是什么

    在學(xué)習(xí)CubeMX軟件配置GPIO中斷時(shí),看到如圖所示的選項(xiàng):立刻就比較困惑,查了HAL庫(kù)后,看到GPIO_MODE的確有這樣的定義如圖:自己還在學(xué)習(xí)中,看了HAL的幫助文檔,但不知道GPIO
    發(fā)表于 01-22 05:28

    請(qǐng)問(wèn)這兩訪問(wèn)有什么區(qū)別

    關(guān)于cpu訪問(wèn)GPIO、UART、I2C等接口,與cpu訪問(wèn)FLASH、ROM、SDRAM的區(qū)別?cpu訪問(wèn)GPIO、UART等外設(shè),是通過(guò)特殊功能的寄存器,不也是在訪問(wèn)內(nèi)存上的某一地址嗎?而cpu訪問(wèn)FLASH、ROM也是訪問(wèn)
    發(fā)表于 09-10 05:45

    標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)有啥區(qū)別

    ,程序癱瘓了,所以今天咱們來(lái)看看標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)有啥區(qū)別,各個(gè)庫(kù)他的優(yōu)點(diǎn)在哪里。標(biāo)準(zhǔn)庫(kù)串口通信GPIO
    發(fā)表于 08-04 08:22

    GPIO輸出--蜂鳴器

    蜂鳴器)。 學(xué)習(xí)目的:了解如何使用庫(kù)開(kāi)發(fā)以及為庫(kù)與寄存器操作的區(qū)別,學(xué)會(huì)如何控制GPIO輸出。 【*】實(shí)驗(yàn)操作: 下載本程序到開(kāi)發(fā)板,復(fù)位板子即可,蜂鳴器會(huì)響。 【*】注意事項(xiàng): 無(wú)
    發(fā)表于 12-12 19:02 ?4次下載

    STM32F407標(biāo)準(zhǔn)庫(kù)學(xué)習(xí)筆記-GPIO

    STM32F407標(biāo)準(zhǔn)庫(kù)學(xué)習(xí)筆記-GPIO頭文件 gpio.h枚舉-列舉同一寄存器的不同選項(xiàng)typedef enum{ GPIO_Low_Speed = 0x00, /*!
    發(fā)表于 11-29 15:51 ?46次下載
    STM32F407標(biāo)準(zhǔn)<b class='flag-5'>庫(kù)</b>學(xué)習(xí)筆記-<b class='flag-5'>GPIO</b>

    STM32G031K LL庫(kù)使用 - GPIO

    最近使用STm32G031K6做一款I(lǐng)OT產(chǎn)品,選擇了用最新LL庫(kù)進(jìn)行開(kāi)發(fā),因?yàn)橹淠菍?duì)LL庫(kù)了解很少,所以開(kāi)始的時(shí)候踩了很多坑,為防以后繼續(xù)踩坑,現(xiàn)在做一個(gè)記錄。GPIO初始化:void
    發(fā)表于 12-02 17:06 ?18次下載
    STM32G031K LL<b class='flag-5'>庫(kù)</b>使用 - <b class='flag-5'>GPIO</b>

    HAL庫(kù)GPIO八種工作模式

    眾所周知,STM32的GPIO的工作模式有八種,但是打開(kāi)HAL庫(kù)發(fā)現(xiàn),有12中可以供自己設(shè)置。先不要懵,下面解釋一下這12種工作模式的區(qū)別。實(shí)際上這12種是包含在通用的8種工作模式之中的,只是細(xì)分
    發(fā)表于 12-05 13:06 ?8次下載
    HAL<b class='flag-5'>庫(kù)</b>的<b class='flag-5'>GPIO</b>八種工作模式

    00_STM32F4學(xué)習(xí)_HAL庫(kù)_GPIO函數(shù)

    00_STM32F4學(xué)習(xí)_HAL庫(kù)_GPIO函數(shù)最近重學(xué)STM32,打算從HAL庫(kù)+STM32CubeMX方式進(jìn)行學(xué)習(xí),將學(xué)習(xí)中用過(guò)及查閱整理的知識(shí)在此整理,如有錯(cuò)誤望指正。1、初始化void
    發(fā)表于 12-05 14:21 ?12次下載
    00_STM32F4學(xué)習(xí)_HAL<b class='flag-5'>庫(kù)</b>_<b class='flag-5'>GPIO</b>函數(shù)

    HAL庫(kù)-GPIO介紹

    一.GPIO 使用1.輸入輸出模式(8種)GPIO_Mode_AIN #模擬輸入GPIO_Mode_IN_FLOATING #浮空輸入GPIO
    發(fā)表于 12-28 19:32 ?2次下載
    HAL<b class='flag-5'>庫(kù)</b>-<b class='flag-5'>GPIO</b>介紹

    【STM32】標(biāo)準(zhǔn)庫(kù)與HAL庫(kù)對(duì)照學(xué)習(xí)教程特別篇--GPIO詳講

    【STM32】SMT32標(biāo)準(zhǔn)庫(kù)與HAL庫(kù)對(duì)照學(xué)習(xí)教程特別篇--GPIO詳講一、前言二、GPIO簡(jiǎn)介1、定義2、分類3、復(fù)用三、GPIO工作模
    發(fā)表于 01-13 16:12 ?12次下載
    【STM32】標(biāo)準(zhǔn)<b class='flag-5'>庫(kù)</b>與HAL<b class='flag-5'>庫(kù)</b>對(duì)照學(xué)習(xí)教程特別篇--<b class='flag-5'>GPIO</b>詳講

    單片機(jī)GPIO配置不同輸出速度有何區(qū)別

    不管標(biāo)準(zhǔn)外設(shè)庫(kù),還是STM32CubeMX配置GPIO輸出引腳,都會(huì)有速度GPIO_InitStruct.Speed這個(gè)選項(xiàng)。
    發(fā)表于 02-08 15:24 ?3次下載
    單片機(jī)<b class='flag-5'>GPIO</b>配置不同輸出速度有何<b class='flag-5'>區(qū)別</b>?

    使用GPIO Zero讓GPIO變得更容易

    為兒童和年輕人開(kāi)發(fā)的用于GPIO控制的簡(jiǎn)單Python庫(kù),如果您有過(guò)為Raspberry Pi的GPIO 引腳編寫代碼的經(jīng)驗(yàn),那么估計(jì)您已經(jīng)使用過(guò)Python以及GPIO Zero模塊
    的頭像 發(fā)表于 03-01 10:51 ?2361次閱讀
    使用<b class='flag-5'>GPIO</b> Zero讓<b class='flag-5'>GPIO</b>變得更容易

    硬件設(shè)計(jì)技巧:三GPIO接口的實(shí)用指南

    今天教大家一些關(guān)于硬件設(shè)計(jì)的的技巧,只要掌握好三GPIO,輕松玩好硬件設(shè)計(jì)。
    的頭像 發(fā)表于 11-05 12:22 ?807次閱讀
    硬件設(shè)計(jì)技巧:三<b class='flag-5'>類</b><b class='flag-5'>GPIO</b>接口的實(shí)用指南
    主站蜘蛛池模板: 亚洲日本一区二区 | 国产一级αv片免费观看 | 伊人网视频 | 欧美三级免费观看 | 国产精品久久精品福利网站 | 三级黄网站 | 最新欧美伦理网 | dyav午夜片| 女色专区 | 西西人体大胆高清啪啪欧洲 | 99精品久久久久久久婷婷 | 色香影视| 天天操狠狠操夜夜操 | 久久精品国产亚洲婷婷 | 亚洲专区一 | 午夜免费福利影院 | 天天舔夜夜操 | 免费大片黄在线观看 | 欧美在线不卡视频 | 一区二区三区四区在线免费观看 | 插插好爽爽爽 | 国产性videosgratis | aaaaaaa欧美黄色大片 | 亚洲人成网站色7799在线观看 | 欧美日本综合 | 四虎国产永久在线精品免费观看 | 美女网站色在线观看 | 三级毛片网站 | 久久99爰这里有精品国产 | 国产精品天天看天天爽 | 久久久久久国产精品免费免 | 高黄网站 | 2021久久天天躁狠狠躁夜夜 | 资源在线www天堂 | 国产在线一区视频 | 俺去啦最新网址 | 26uuu影院亚洲欧美综合 | 天天干天天添 | 成人a毛片高清视频 | 欧美亚洲韩国国产综合五月天 | 午夜网站免费版在线观看 |