數位輸入 + 加入按鈕

  • 前言 - 讓使用者藉由基板上的內建按鈕來控制LED的顯示狀態

按鈕只有開與關兩種簡單的狀態,以電腦術語來說就是代表一個位元bit的狀態,這裡可以當作一個簡單的數位輸入的例子。

前面一段文章,我們已經藉由撰寫核心程式來控制基板的LED燈,讓它能在固定的延遲時間100ms內,規律性閃爍。現在我們要加入按鈕功能,讓USB裝置提供多一點互動變化。按鈕開關提供了數位輸入的兩個狀態,分別是低電位邏輯0 與高電位邏輯1,簡單來說,就是使用者按下去就會導通,藉由基板上的按鈕來控制LED的顯示狀態。

  • 連接線路

我們找到原本LaunchPad就有內建的兩個實體按鈕開關,位於右下方P1.3與左下方RESET位置。此種按鈕屬於常見的單極單通single-pole, single-throw (SPST),在很多互動裝置內都可以找到這種按鈕的變形,工作原理這裡就不在多加描述 。

由原廠使用手冊第15頁附的電路圖找到符號表示方式如圖。

這裡我們可以看到他建議在電路中各連接一個47K歐姆的升壓電阻,且需連接到直流電壓源Vcc=3.6V,當然internal resistors on each of the GPIO pins 所以當我們沒下按鈕時提供的電路準位為邏輯1,按下去時邏輯0。

  • 程式流程圖

  • 上傳程式碼

請參照<初次使用整合開發環境>步驟,再貼上程式碼,即可運作。

  • 原始程式碼 (支援HW Rev1.5, MSP430G2553)

原始程式碼PushButton_MSP430G2553.c
  • 原始程式碼 (支援MSP430G2231)

原始程式碼PushButton.c
  • 上傳開發環境完成的程式到基板的核心晶片

程式撰寫完畢後,點選 DEBUG 開始編譯;若編譯成功,接著點選DEBUG 將程式上傳到LaunchPad基板,當傳輸結束後,約等2~3 秒後,按下P1.3的按鈕後,P1.0連接的LED小紅燈會開始閃爍十次,(程式設定是開10次與關10次,總共20次),這代表程式已經成功上傳且開始運作,可重複操作按鈕。

  • 完成!! 按下按鈕,使LED閃爍十次的操作影片

  • 進階 - 使用兩個PIN當輸入

以P1.3 與P1.4為例,如果要使用兩個PIN當輸入時,分別讓基板上LED1 (P1.0)與LED2(P1.6)按下後閃爍10次。

MSP430G2553範例程式須要修改,而基板上有內建按鈕(P1.3)所以你還須自行添加一個按鈕輸入在P1.4端。

原始程式碼, 如何使用兩個 PIN 當輸入, MSP430G2553