數位輸入 + 加入按鈕
前言 - 讓使用者藉由基板上的內建按鈕來控制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。
程式流程圖
原始程式碼 (支援MSP430G2231)
上傳開發環境完成的程式到基板的核心晶片
程式撰寫完畢後,點選 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端。