Beaglebone Black教程專案1閃爍板載LED

大學霸發表於2016-03-30

Beaglebone Black教程專案1閃爍板載LED

專案1閃爍板載LED

當設定完你的Beaglebone Black的時候,可能早就非常期待你的第一個專案了。下面就來滿足大家的願望,當然,這個專案可不是驚天動地的大專案,但萬事總是有個開始的。這個專案不需要額外的電子器件,這可以讓你的精力集中在程式設計這方面來。這也可以確保你的Beaglebone Black板子所有的設定都是正確的。

閒話少敘,我們的這個專案是編寫程式碼控制Beaglebone Black的板載LED。如果你之前有過程式設計經驗,那麼可以把這個專案當做Beaglebone Black的“Hello World”程式。我們將會從零開始完成整個程式,這樣可以使你在Cloud9 IDE中編寫BoneScript程式碼有一個初步的感覺。

下面的就是閃爍板載LED的程式碼:


  • var b = require('bonescript');
  • var led = "USR3";
  •  
  • b.pinMode(led, b.OUTPUT);
  •  
  • var state = b.LOW;
  •  
  • b.digitalWrite(led, state);
  •  
  • setInterval(toggle, 1000);
  •  
  • function toggle() {
  •     if(state == b.LOW) state = b.HIGH;
  •     else state = b.LOW;
  •     b.digitalWrite(led, state)
  • }


當使用BoneScript編寫程式碼的時候,我們需要將程式碼指向BoneScript庫以訪問GPIO埠和Beaglebone Black的其他功能。所以,我們的第一行程式碼就建立一個變數(b)來將兩個括號之間的庫引入我們的程式碼:


  • var b = require('bonescript');


程式碼的下一個邏輯上的程式碼段是建立引用板載LED USR3的一個變數:


  • var led = "USR3";


在上面的例子中我們將這個變數稱為led,它對應於板載LEDUSR3

Beaglebone Black上面的GPIO數字埠可以被設定為輸入或者輸出埠。所以,在我們的程式碼中需要告訴Beaglebone Black我們想要板載LED作為輸出。為了完成這個任務,我們需要使用名為pinMode的函式並將我們期望的埠作為他的引數;在這個示例中,我們使用變數led並使用變數b.OUTPUT將它設定為輸出:


  • b.pinMode(led, b.OUTPUT);


在這個程式碼中,我們建立了一個集合了LED狀態的迴圈。在這個迴圈中,將LED的狀態在開和關之間切換。要完成它,我們還需要設定一個額外的變數state,它用來儲存LED此時的狀態;在最開始我們應該給它一個初始值,這裡是b.LOW,即對應於“關”:


  • var state = b.LOW;


現在我們就可以設定LED的狀態了,將他設定為state。做這個需要使用digitalWrite()函式並將期望操作的GPIO埠和狀態(開和關)作為引數:


  • b.digitalWrite(led, state);


LED的初始狀態設定完畢後,我們需要觸發LED點亮和熄滅,即改變state變數的狀態。我們使用setInterval()函式將這個改變的時間間隔設定為1000毫秒即1秒。在間隔時間到達的時候,我們呼叫toggle()函式:


  • setInterval(toggle, 1000);


現在我們需要建立一個名為toggle的函式供setInterval()函式呼叫,這個函式會每1000毫秒呼叫一次。這個函式實現的功能就是切換LED的狀態,即在HIGHLOW之間切換。由於只有這兩個狀態,所以最簡單的方式就是if…else判斷,它接受一個條件語句,根據條件語句是TRUE或者FALSE執行不同的語句:


  • if (條件語句){
  •          當條件語句為TRUE的時候執行
  • }else{
  •          當條件語句不為TRUE時候執行
  • }


在我們的函式中,我們應該檢查state變數的值是否等於LOW。如果是,我們將state設定為HIGH;如果不是,則執行else後的語句,將state設定為LOW。在設定完成後,使用digitalWrite()函式將這個狀態應用於LED


  • function toggle() {
  •     if(state == b.LOW) state = b.HIGH;
  •     else state = b.LOW;
  •     b.digitalWrite(led, state)
  • }


執行上面的程式碼,我們就可以看到LED USR31000豪秒的間隔閃爍。如果你想要改變閃爍的頻率,可以修改這條語句:


  • setInterval(toggle, 1000);


實際嘗試一下是最好的。

小結

現在你已經將你的Beaglebone Black設定好並完成了了第一個專案。雖然這個專案非常簡單,並且看起來不怎麼霸氣,但是這麼簡單的程式可以讓你知道你的Beaglebone Black已經準備好投入更霸氣的專案了。同時,也讓你瞭解到了Beaglebone Black的一些基本操作。在本書接下來的內容中,會有逐步複雜的專案等你來完成。隨著經手的專案逐漸增多你應該會了解到完成一個專案可能有多種不同的方式,你的思維將被完全開啟。最終你將可以完成自己心目中蘊藏已久的宏偉目標。

本文選出自:BeagleBone Black專案實訓手冊轉載請註明出處,尊重技術尊重IT人!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2072426/,如需轉載,請註明出處,否則將追究法律責任。

相關文章