TaChing Yu
/
jump_jump
main.cpp@0:e848f4aea636, 2016-08-27 (annotated)
- 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?
User | Revision | Line number | New 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 |