Dependencies:   mbed

Committer:
yu10078999
Date:
Sat Aug 27 11:16:48 2016 +0000
Revision:
0:e848f4aea636
for personal, do not use

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yu10078999 0:e848f4aea636 1 #include "mbed.h"
yu10078999 0:e848f4aea636 2
yu10078999 0:e848f4aea636 3 DigitalOut led(D3); // LED 的腳位
yu10078999 0:e848f4aea636 4 DigitalIn sw(D2); // 開關的腳位
yu10078999 0:e848f4aea636 5 bool lastState = 0;
yu10078999 0:e848f4aea636 6 // 記錄上次的開關狀態,預設為「低電位」
yu10078999 0:e848f4aea636 7 bool toggle = 0;
yu10078999 0:e848f4aea636 8 // 輸出給 LED 的訊號,預設為「低電位」
yu10078999 0:e848f4aea636 9 int click = 0;
yu10078999 0:e848f4aea636 10 // 開關訊號的改變次數,預設為 0
yu10078999 0:e848f4aea636 11 int main() {
yu10078999 0:e848f4aea636 12 lastState = sw.read();
yu10078999 0:e848f4aea636 13 // 讀取開關的初始值
yu10078999 0:e848f4aea636 14
yu10078999 0:e848f4aea636 15 while(1)
yu10078999 0:e848f4aea636 16 {
yu10078999 0:e848f4aea636 17 bool b1 = sw.read();
yu10078999 0:e848f4aea636 18 if (b1 != lastState) { // 如果和之前的開關值不同...
yu10078999 0:e848f4aea636 19 wait_ms(20); // 等待 20 毫秒
yu10078999 0:e848f4aea636 20 bool b2 = sw.read(); // 再讀取一次開關值
yu10078999 0:e848f4aea636 21 if (b1 == b2) { // 確認兩次開關值是否一致
yu10078999 0:e848f4aea636 22 lastState = b1; // 儲存開關的狀態
yu10078999 0:e848f4aea636 23 click ++; // 增加訊號變化次數
yu10078999 0:e848f4aea636 24 }
yu10078999 0:e848f4aea636 25 }
yu10078999 0:e848f4aea636 26
yu10078999 0:e848f4aea636 27 if (click == 2) { // 如果開關狀態改變兩次
yu10078999 0:e848f4aea636 28 click = 0; // 狀態次數歸零
yu10078999 0:e848f4aea636 29 toggle = !toggle; // 取相反值
yu10078999 0:e848f4aea636 30 led = !led;; // 輸出
yu10078999 0:e848f4aea636 31 }
yu10078999 0:e848f4aea636 32 }
yu10078999 0:e848f4aea636 33 }
yu10078999 0:e848f4aea636 34