樹莓派學習筆記 Shell指令碼操作GPIO

2021-08-27 16:41:09 字數 2054 閱讀 1310

0.前言

樹莓樹莓派可以

**入門linux

,下面通過命令和shell指令碼控制樹莓派gpio。通過本文可以熟悉多個linux命令,並熟悉shell指令碼編寫方法,並對io重定向有乙個基本的體會。我在學習樹莓派的過程中積累了自信,現在覺得linux沒那麼神秘沒那麼難,反而充滿了無窮的樂趣,希望通過部落格把快樂帶給大家。

相關博文 【

樹莓派學習筆記——gpio功能學習】樹莓派gpio入門文章

1.引腳與編號關係

圖1 引腳與編號關係

例如 header-pin7 對應wiringpi gpio7 對應bcm gpio4。

2.使用命令操作gpio

請耐心輸入以下命令並檢視效果

# 獲得超級許可權

sudo su

# 進入gpio目錄

cd /sys/class/gpio

# 使用ls檢視gpio目錄中的內容,可以檢視到

# export gpiochip0 unexport

ls# gpio操作介面從核心空間暴露到使用者空間

# 執行該操作之後,該目錄下會增加乙個gpio4檔案

echo 4 > export

# 進入gpio4目錄,該目錄由上一步操作產生

cd gpio4

# 檢視gpio4目錄中的內容,可檢視到

# active_low direction edge power subsystem uevent value

ls # 設定gpio4為輸出方向

echo out > direction

# bcm_gpio4輸出邏輯高電平,led點亮

echo 1 > value

# bcm_gpio4輸出邏輯低電平,led熄滅

echo 0 > value

# 返回上一級目錄

cd ../

# 登出gpio4介面

echo 4 > unexport

# 退出超級使用者

exit

幾點說明>符號為io重定向符號,io重定向是指改變linux標準輸入和輸出的預設裝置,指向乙個使用者定義的裝置。例如echo 4 > export便是把4寫入到export檔案中。

linux核心中關於gpio驅動的【

資料】。

3.編寫乙個shell指令碼

新建乙個名為ledon.sh的指令碼。

#!/bin/bash

#利用echo輸出一些提示語句

echo export pin $1

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

echo setting direction to output

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

echo setting pi high

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

幾點說明如果在windows上編寫shell指令碼的話(後使用ftp工具傳輸至樹莓派),必須儲存為unix格式。

shell指令碼每行以\n結尾

,而不是windows中的\r\n。可以使用notepad++格式轉換功能完成變化。

一般情況下,指令碼檔案可讀可寫,但不能被執行。需要通過chmod指令增加可執行功能,例如輸入以下命令(請注意,需要通過cd指令進入shell指令碼所在的目錄)

chmod +x ledon.sh

shell指令碼可傳入引數,例如$1代表第乙個引數,$2代表第二個引數,以此類推。

執行該指令碼可輸入以下指令,使得bcm_gpio4輸出高電平

sudo ./ledon.sh 4

4.總結

其實樹莓派gpio控制就那麼簡單。

5.參考資料

圖書 《愛上樹莓派》

利用shell指令碼控制樹莓派GPIO

1.什麼是shell shell 誕生於 unix,是與 unix linux 互動的工具。shell本身是乙個用c語言編寫的程式,它是使用者使用unix linux的橋梁,使用者的大部分工作都是通過shell完成的。shell既是一種命令語言,又是一種程式語言。作為命令語言,它互動式地解釋和執行使...

樹莓派學習筆記 修改樹莓派軟體源

0 前言 本文說明如何修改樹莓派軟體源。如果使用raspbian系統,修改軟體源的方法和ubuntu相同,可在 找到最新的軟體源映象,修改 etc apt sources檔案中的內容即可。相關博文 linux學習筆記 ubuntu更新軟體源 1 軟體源位於何處 樹莓派軟體源映象列表 截止2014年8...

樹莓派保持網路連線shell指令碼

樹莓派3b現在有了板載無線網絡卡,可以很方便的連線到wifi。但是無線路由器不能保證永遠正常工作,由於各種原因會重啟路由。這個時候,raspberry3b就會有一定概率斷開網路連線。系統級功能比如像手機一樣有網就連,斷網後自動重連的功能目前沒有能力實現。所以就想搞乙個指令碼檢查網路連線狀態,如果沒有...