乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      gpio引腳介紹 樹莓派3b

       看見就非常 2021-02-03
      96d84580ccd35554f3def5f34a0727a6.png

      陳拓chentuo@ms.xab.ac.cn 2018.06.09/2018.06.10

      從網(wǎng)上下載了幾張精美的圖片,感謝圖片的制作者!

      0. 概述

      本文介紹樹莓派 Zero W的GPIO控制,并用LED看效果。

      0.1 樹莓派GPIO編號(hào)方式

      • 功能物理引腳

      從左到右,從上到下:左邊奇數(shù),右邊偶數(shù):1-40

      33eea9495d9419c3395b93541f6a440a.png
      • BCM

      編號(hào)側(cè)重CPU寄存器,根據(jù)BCM2835的GPIO寄存器編號(hào)。

      • wiringPi

      編號(hào)側(cè)重實(shí)現(xiàn)邏輯,把擴(kuò)展GPIO端口從0開始編號(hào),這種編號(hào)方便編程。如圖 WiringPi一欄。

      8f39f7b96753254549de111ec51ad0a8.png

      操作GPIO時(shí)一定先要清楚使用那一套編號(hào)。

      1. 準(zhǔn)備

      1.1 硬件

      • 樹莓派(我測(cè)試了Pi 3B+和Pi Zero W)
      • LED(3mm或5mm)
      • 1KΩ電阻
      • 杜邦線
      • 電腦(我用Windows 7)

      1.2 GPIO接口

      e79ea91fcdab29fc0c31a2d81f7a90b4.png

      1.3 接線

      首先我們把LED和樹莓派連接。LED的正極串聯(lián)一個(gè)1KΩ電阻接樹莓派的GPIO18(pin12),負(fù)極接地。

      c61418f0b6fb7c2f5efbcfd6d65b1857.png

      這個(gè)圖是用Fritzing畫的。

      2. 測(cè)試

      2.1 連接電腦和Pi Zero W

      用putty連接電腦和Pi Zero W,看本文最后的參考文檔。Host Name填raspberrypi.local,端口22,用戶名pi,密碼raspberry。

      注意:boot分區(qū)有一個(gè)名為ssh的空文本文件,這個(gè)ssh文件容易丟失,如果ssh不能登錄了,先檢查ssh是否丟失。

      2.2 用Shell命令直接控制GPIO

      • 使GPIO18從內(nèi)核空間暴露到用戶空間中

      pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/export

      > 是IO重定向符號(hào),IO重定向是指改變linux標(biāo)準(zhǔn)輸入和輸出的默認(rèn)設(shè)備,指向一個(gè)用戶定義的設(shè)備。echo 18 > export就是把18寫入到export文件中。

      執(zhí)行該操作之后,/sys/class/gpio目錄下會(huì)增加一個(gè)gpio18文件夾。

      • 查看GPIO18引腳(在Liunx中設(shè)備都以文件的形式,引腳也是設(shè)備)

      pi@raspberrypi:~ $ cd /sys/class/gpio/gpio18

      pi@raspberrypi:/sys/class/gpio/gpio18 $ ls

      38d1823bc0c8634dff1afd91d6b3b9ea.png
      • 設(shè)置GPIO18為輸出模式

      pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo out > direction

      • 向value文件中輸入1,GPIO輸出高電平,LED點(diǎn)亮

      pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo 1 > value

      • 向value文件中輸入0,GPIO輸出低電平,LED熄滅

      pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo 0 > value

      • 返回家目錄

      pi@raspberrypi:/sys/class/gpio $ cd ~

      • 注銷GPIO18接口

      pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/unexport

      2.3 用Shell腳本控制GPIO

      • 新建一個(gè)名為ledonoff.sh的腳本。

      pi@raspberrypi:~ $ sudo nano ledonoff.sh

      腳本寫下面的內(nèi)容:

      echo $1 > /sys/class/gpio/export

      echo out > /sys/class/gpio/gpio$1/direction

      echo 1 > /sys/class/gpio/gpio$1/value

      sleep 5 #延時(shí)5秒

      echo 0 > /sys/class/gpio/gpio$1/value

      echo $1 > /sys/class/gpio/unexport

      說明:shell腳本可傳入?yún)?shù),例如$1代表第1個(gè)參數(shù),$2代表第2個(gè)參數(shù),以此類推。

      • 為ledonoff.sh添加可執(zhí)行權(quán)限

      pi@raspberrypi:~ $ sudo chmod +x ledonoff.sh

      • 運(yùn)行腳本

      pi@raspberrypi:~ $ sudo ./ledonoff.sh 18

      運(yùn)行結(jié)果:LED點(diǎn)亮,持續(xù)5秒鐘關(guān)閉。

      2.4 用Python通過PRI.GPIO命令控制GPIO

      用Python控制GPIO,最便捷的方法就是使用python類庫,比如樹莓派系統(tǒng)本身集成的RPi.GPIO。

      在putty的ssh終端輸入命令:

      • 進(jìn)入python交互界面

      pi@raspberrypi:~ $ python

      >>> 這是python的提示符。

      • 導(dǎo)入python類庫RPi.GPIO,命名為別名為GPIO

      >>> import RPi.GPIO as GPIO

      引入之后,就可以使用 GPIO 模塊的函數(shù)了。

      • 設(shè)置BOARD編碼方式,基于BCM

      樹莓派3 GPIO分為如下的三種編碼方式:物理引腳BOARD編碼,BCM編碼,以及 wiringPi 編碼。

      >>> GPIO.setmode(GPIO.BCM)

      • 輸出模式

      >>> GPIO.setup(18,GPIO.OUT)

      • GPIO17輸出高電平,LED點(diǎn)亮

      >>> GPIO.output(18,GPIO.HIGH)

      • GPIO17輸出低電平,LED熄滅

      >>> GPIO.output(18,GPIO.LOW)

      • 用完后進(jìn)行清理

      >>> GPIO.cleanup()

      • 退出python交互界面

      >>> Ctrl+D

      2.5 用Python腳本控制GPIO

      • 新建一個(gè)名為blinky.py的腳本。

      pi@raspberrypi:~ $ sudo nano blinky.py

      腳本寫下面的內(nèi)容:

      import RPi.GPIO as GPIO

      import time

      GPIO.setmode(GPIO.BCM)

      GPIO.setup(18,GPIO.OUT)

      while True:

      GPIO.output(18,GPIO.HIGH)

      time.sleep(1)

      GPIO.output(18,GPIO.LOW)

      time.sleep(1)

      GPIO.cleanup()

      說明:while True下面的循環(huán)體要縮進(jìn),用空格或Tab(但不能混用)鍵縮進(jìn)就行。

      • 為blinky.py添加可執(zhí)行權(quán)限

      pi@raspberrypi:~ $ sudo chmod +x blinky.py

      • 運(yùn)行Python腳本

      pi@raspberrypi:~ $ sudo python blinky.py

      LED閃爍。

      • 停止運(yùn)行

      用 Ctrl+C 來中斷循環(huán)。

      3. 借助wiringPi GPIO用C語言控制GPIO

      樹莓派內(nèi)核中已經(jīng)編譯自帶了gpio的驅(qū)動(dòng),我們常通過一些第三方寫好的庫函數(shù)來完成具體的操作,比較常見的操作庫函數(shù)有:

      • Python GPIO

      Python GPIO已經(jīng)集成到了樹莓派內(nèi)核,為樹莓派官方資料中推薦且容易上手。python GPIO是一個(gè)小型的python庫,可以幫助用戶完成raspberry相關(guān)IO口操作,但是python GPIO庫還沒有支持SPI、I2C或者1-wire等總線接口。

      常見C語言庫有:

      • wiringPi (http:///)

      wiringPi適合那些具有C語言基礎(chǔ),在接觸樹莓派之前已經(jīng)接觸過單片機(jī)或者嵌入式開發(fā)的人群。wiringPi的API函數(shù)和arduino非常相似,這也使得它廣受歡迎。作者給出了大量的說明和示例代碼,這些示例代碼也包括UART設(shè)備,I2C設(shè)備和SPI設(shè)備等。

      • BCM2835 C Library (http://www./mikem/bcm2835/)

      BCM2835 C Library可以理解為使用C語言實(shí)現(xiàn)的相關(guān)底層驅(qū)動(dòng),BCM2835 C Library的驅(qū)動(dòng)庫包括GPIO. SPI和UART等,可以通過學(xué)習(xí)BCM2835 C Library熟悉BCM2835相關(guān)的寄存器操作。如果有機(jī)會(huì)開發(fā)樹莓派上的linux驅(qū)動(dòng),或自主開發(fā)python或PHP擴(kuò)展驅(qū)動(dòng),可以從BCM2835 C Library找到不少的“靈感”。

      3.1 WiringPi GPIO安裝

      WiringPi是應(yīng)用于樹莓派平臺(tái)的GPIO控制庫函數(shù),WiringPi遵守GUN Lv3。wiringPi使用C或者C++開發(fā)并且可以被其他語言包轉(zhuǎn),例如python、ruby或者PHP等。

      wiringPi包括一套gpio控制命令,使用gpio命令可以控制樹莓派GPIO管腳。用戶可以利用gpio命令通過shell腳本控制或查詢GPIO管腳。

      • wiringPi安裝

      更新列表:

      pi@raspberrypi:~ $ sudo apt-get update

      更新軟件:

      pi@raspberrypi:~ $ sudo apt-get upgrade

      安裝:

      pi@raspberrypi:~ $ sudo apt-get install wiringpi

      • 測(cè)試

      wiringPi包括一套gpio命令,使用gpio命令可以控制樹莓派上的各種接口,通過以下指令可以測(cè)試wiringPi是否安裝成功。

      pi@raspberrypi:~ $ gpio -v

      aa8e109a15931c5376a9a2b8a9347510.png
      • 查看GPIO圖

      pi@raspberrypi:~ $ gpio readall

      a00f5756389f128a3b458b3c996774bc.png

      3.2 編寫代碼

      • 新建一個(gè)名為led_blink.c的源程序

      pi@raspberrypi:~ $ sudo nano led_blink.c

      • 內(nèi)容如下

      #include <wiringPi.h>

      int main(void) {

      wiringPiSetup();

      pinMode (1, OUTPUT);

      for(;;) {

      digitalWrite(1, HIGH);delay (500);

      digitalWrite(1, LOW);delay (500) ;

      }

      }

      說明:看看上一小節(jié)的圖,BCM編號(hào)的GPIO17引腳在wiringPi編號(hào)中是1。

      3.3 編譯運(yùn)行

      • 編譯

      pi@raspberrypi:~ $ gcc led_blink.c -o led_blink -l wiringPi

      -l wiringPi表示動(dòng)態(tài)加載wiringPi共享庫。

      • 運(yùn)行

      pi@raspberrypi:~ $ sudo ./led_blink

      用 Ctrl+C 來中斷循環(huán)。

      4. 借助BCM2835 C Library用C語言控制GPIO

      4.1 下載安裝

      先看看最新版本:http://www./mikem/bcm2835

      3d84965c23377524157391a0b548b1b1.png
      • 下載bcm2835-1.56.tar.gz

      pi@raspberrypi:~ $ wget http://www./mikem/bcm2835/bcm2835-1.56.tar.gz

      • 解壓縮

      pi@raspberrypi:~ $ tar xvzf bcm2835-1.56.tar.gz

      • 配置編譯

      進(jìn)入壓縮之后的目錄:

      pi@raspberrypi:~ $ cd bcm2835-1.56

      執(zhí)行配置命令:

      pi@raspberrypi:~/bcm2835-1.56 $ ./configure

      pi@raspberrypi:~/bcm2835-1.56 $ make

      • 執(zhí)行檢查

      pi@raspberrypi:~/bcm2835-1.56 $ sudo make check

      • 安裝bcm2835庫:

      pi@raspberrypi:~/bcm2835-1.56 $ sudo make install

      4.2 編寫代碼

      • 新建一個(gè)名為blink_led.c的源程序

      pi@raspberrypi:~/bcm2835-1.56 $ cd ~

      pi@raspberrypi:~ $ sudo nano blink_led.c

      • 內(nèi)容如下

      #include <bcm2835.h>

      #define PIN RPI_GPIO_P1_12

      int main(int argc, char **argv) {

      if (!bcm2835_init())

      return 1;

      bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);

      while (1) {

      bcm2835_gpio_write(PIN, HIGH);

      bcm2835_delay(500);

      bcm2835_gpio_write(PIN, LOW);

      bcm2835_delay(500);

      }

      bcm2835_close();

      return 0;

      }

      說明:GPIO的編號(hào)方式不同,采用PCB板的物理接口編號(hào),led連在樹莓派Zero W板子的12引腳上。

      4.3 編譯運(yùn)行

      • 編譯

      pi@raspberrypi:~ $ gcc blink_led.c -o blink_led -l bcm2835

      -l bcm2835表示動(dòng)態(tài)加載bcm2835共享庫

      • 運(yùn)行

      sudo ./blink_led

      用 Ctrl+C 來中斷循環(huán)。

      5. 引腳復(fù)用

      通過設(shè)置改變引腳的功能,見參考文檔“樹莓派Zero W添加音頻輸出”。

      參考文檔

      晨之清風(fēng):樹莓派介紹?zhuanlan.zhihu.com
      晨之清風(fēng):電腦連接樹莓派Zero W?zhuanlan.zhihu.com
      f568c5835a6dfe623a9ab5e7d1456778.png
      晨之清風(fēng):電腦連接樹莓派3B+?zhuanlan.zhihu.com
      63bdc4c8eb4fa188c92bb58849a3a4ad.png
      晨之清風(fēng):樹莓派 Zero W+溫度傳感器DS18B20?zhuanlan.zhihu.com
      晨之清風(fēng):樹莓派Zero W添加音頻輸出?zhuanlan.zhihu.com
      1. 樹莓派GPIO控制--C語言篇https://blog.csdn.net/hu7850/article/details/51785560
      2. 遠(yuǎn)程控制通訊——基于樹莓派 Python gpiozero 遠(yuǎn)程控制LED燈并返回控制結(jié)果https://blog.csdn.net/NCTU_to_prove_safety/article/details/65446454
      3. RPi Low-level peripherals https:///RPi_Low-level_peripherals
      4. 樹莓派+溫度感測(cè)器實(shí)現(xiàn)室內(nèi)溫度監(jiān)控:http://shumeipai./2013/10/03/raspberry-pi-temperature-sensor-monitors.html
      5. Raspberry Pi Temperature Sensorhttp://www.cl./projects/raspberrypi/tutorials/temperature/
      樹莓派藍(lán)牙溫度傳感器 - 百度文庫?wenku.baidu.com 微信小程序藍(lán)牙溫度數(shù)據(jù)采集 - 百度文庫?wenku.baidu.com

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多