標籤:beaglebone shell
BBB板第五課:Shell指令碼編程實驗
在一上課我們通過簡單的echo命令測試並控制GPIO連接埠的高低電平輸出,實現對一個LED指示燈的點亮和關閉控制,本節將通過Shell指令碼編程,來完成兩個LED指示燈的交替閃亮的實驗。
實驗器材:準備兩個二極體指示燈,麵包板等
使用GPIO連接埠P8.12和P8.11兩個引腳
我們暫時不藉助其他工具軟體,直接遠程登陸到BBB板的圖形案頭,使用內建的Ledfpad編輯器來完成Shell指令碼的編程。
遠程登陸BBB板圖形案頭還記得吧,不記得話參考前面的課程,這裡就不另說明了。按點擊左下角的菜單,選擇點擊進入Leafpad。
開啟編輯器後如,然後輸入以下Shell命令代碼:
指令碼實現功能:實現兩個LED指示燈每隔一秒交替閃亮10次
按照圖中的指令碼一字一句輸入就行了,其中Shell基礎知識一點都不清楚的話多百度下吧,上面有很多相關知識。這裡我就指令碼led1(我儲存的名字,不需要尾碼,不過最好加上尾碼sh吧,比較容易識別,led1.sh就知道是shell指令碼程式)簡單作如下說明:
第一行代碼:#! 是一個約定的標記,它告訴系統這個指令碼需要什麼解譯器來執行,即使用哪一種Shell,這裡使用bash解譯器,寫全路徑,可以在BBB板/bin目錄下找到bash
#!/bin/bash
以下兩行代碼,是用來開啟gpio44和gpio45,增加了一個判斷條件,如果不存在則執行echo命令開啟相應連接埠:
if [ ! –d /sys/class/gpio/gpio44 ]; then echo 44 > /sys/class/gpio/export; fi
if [ ! –d /sys/class/gpio/gpio45 ]; then echo 45 > /sys/class/gpio/export; fi
以下兩行代碼為實現將連接埠都設定為輸出模式“out”:
echo out > /sys/class/gpio/gpio44/direction
echo out > /sys/class/gpio/gpio44/direction
以下for迴圈語句實現10次兩個LED交替輸出高低電平1或0,其中sleep是延時命令:
for ((i=0;i<10;++i))
do
echo 1 > /sys/class/gpio/gpio44/value
echo 0 > /sys/class/gpio/gpio45/value
sleep 1
echo 0 > /sys/class/gpio/gpio44/value
echo 1 > /sys/class/gpio/gpio45/value
sleep 1
done
最後這兩行代碼就是關閉LED燈而已,相當於恢複原狀態:
echo 0 > /sys/class/gpio/gpio44/value
echo 0 > /sys/class/gpio/gpio45/value
還可以增加以下兩行代碼關閉掉gpio44和gpio45:
echo 44 > /sys/class/gpio/unexport
echo 45 > /sys/class/gpio/unexport
程式碼解釋完畢,需要更詳細的Shell資訊只有靠自己進一步學習了,這裡主要是簡單學習下,並知道使用Shell指令碼編程的簡潔和強大,當然C++等語言的功能會更強大,以後的編程實驗中,主要就使用C++語言進行講解了。
以上指令碼代碼編寫結束後,儲存好,就可以進入終端模式執行了。
直接進入指令碼的儲存目錄下執行:# bash led1 (或 # bash led1.sh)就可以看到兩個燈交替閃亮了:
(完)