Jan Waclawek
/
Simon
would be Simon game, as a demonstrator for buttons debouncing and \"collecting\" ---
main.cpp@1:3acf57259c58, 2010-12-13 (annotated)
- Committer:
- wek
- Date:
- Mon Dec 13 23:51:43 2010 +0000
- Revision:
- 1:3acf57259c58
- Parent:
- 0:408abc8a3d3e
- Child:
- 2:fe450a70f8a4
rev2 - individual LEDs now collected to a DigitalBusOut
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wek | 0:408abc8a3d3e | 1 | #include "mbed.h" |
wek | 0:408abc8a3d3e | 2 | #include "DebounceIn_.h" |
wek | 0:408abc8a3d3e | 3 | #include <stdbool.h> |
wek | 0:408abc8a3d3e | 4 | |
wek | 0:408abc8a3d3e | 5 | DebounceIn button1(p15); |
wek | 0:408abc8a3d3e | 6 | DebounceIn button2(p16); |
wek | 0:408abc8a3d3e | 7 | DebounceIn button3(p17); |
wek | 0:408abc8a3d3e | 8 | DebounceIn button4(p21); |
wek | 0:408abc8a3d3e | 9 | |
wek | 0:408abc8a3d3e | 10 | class CSimonButton { |
wek | 0:408abc8a3d3e | 11 | _Bool pressed; |
wek | 0:408abc8a3d3e | 12 | int button; |
wek | 0:408abc8a3d3e | 13 | public: |
wek | 0:408abc8a3d3e | 14 | CSimonButton(); |
wek | 0:408abc8a3d3e | 15 | _Bool IsPressed(void); |
wek | 0:408abc8a3d3e | 16 | int GetButton(void) {return button;}; |
wek | 0:408abc8a3d3e | 17 | void Handle(void); |
wek | 0:408abc8a3d3e | 18 | }; |
wek | 0:408abc8a3d3e | 19 | |
wek | 0:408abc8a3d3e | 20 | CSimonButton::CSimonButton() { |
wek | 0:408abc8a3d3e | 21 | button1.mode(PullUp); |
wek | 0:408abc8a3d3e | 22 | button2.mode(PullUp); |
wek | 0:408abc8a3d3e | 23 | button3.mode(PullUp); |
wek | 0:408abc8a3d3e | 24 | button4.mode(PullUp); |
wek | 0:408abc8a3d3e | 25 | pressed = 0; |
wek | 0:408abc8a3d3e | 26 | } |
wek | 0:408abc8a3d3e | 27 | |
wek | 0:408abc8a3d3e | 28 | _Bool CSimonButton::IsPressed(void) { |
wek | 0:408abc8a3d3e | 29 | _Bool tmp; |
wek | 0:408abc8a3d3e | 30 | |
wek | 0:408abc8a3d3e | 31 | tmp = pressed; |
wek | 0:408abc8a3d3e | 32 | pressed = 0; |
wek | 0:408abc8a3d3e | 33 | return tmp; |
wek | 0:408abc8a3d3e | 34 | } |
wek | 0:408abc8a3d3e | 35 | |
wek | 0:408abc8a3d3e | 36 | void CSimonButton::Handle(void) { |
wek | 0:408abc8a3d3e | 37 | if (button1.pressed) { |
wek | 0:408abc8a3d3e | 38 | button1.pressed = 0; |
wek | 0:408abc8a3d3e | 39 | pressed = 1; |
wek | 0:408abc8a3d3e | 40 | button = 1; |
wek | 0:408abc8a3d3e | 41 | } |
wek | 0:408abc8a3d3e | 42 | if (button2.pressed) { |
wek | 0:408abc8a3d3e | 43 | button2.pressed = 0; |
wek | 0:408abc8a3d3e | 44 | pressed = 1; |
wek | 0:408abc8a3d3e | 45 | button = 2; |
wek | 0:408abc8a3d3e | 46 | } |
wek | 0:408abc8a3d3e | 47 | if (button3.pressed) { |
wek | 0:408abc8a3d3e | 48 | button3.pressed = 0; |
wek | 0:408abc8a3d3e | 49 | pressed = 1; |
wek | 0:408abc8a3d3e | 50 | button = 3; |
wek | 0:408abc8a3d3e | 51 | } |
wek | 0:408abc8a3d3e | 52 | if (button4.pressed) { |
wek | 0:408abc8a3d3e | 53 | button4.pressed = 0; |
wek | 0:408abc8a3d3e | 54 | pressed = 1; |
wek | 0:408abc8a3d3e | 55 | button = 4; |
wek | 0:408abc8a3d3e | 56 | } |
wek | 0:408abc8a3d3e | 57 | |
wek | 0:408abc8a3d3e | 58 | } |
wek | 0:408abc8a3d3e | 59 | |
wek | 0:408abc8a3d3e | 60 | |
wek | 0:408abc8a3d3e | 61 | uint8_t ledState; |
wek | 0:408abc8a3d3e | 62 | |
wek | 1:3acf57259c58 | 63 | BusOut leds(LED1, LED2, LED3, LED4); |
wek | 1:3acf57259c58 | 64 | |
wek | 0:408abc8a3d3e | 65 | int main() { |
wek | 0:408abc8a3d3e | 66 | CSimonButton simonButton; |
wek | 0:408abc8a3d3e | 67 | while (1) { |
wek | 1:3acf57259c58 | 68 | leds.write(ledState); |
wek | 0:408abc8a3d3e | 69 | simonButton.Handle(); |
wek | 0:408abc8a3d3e | 70 | |
wek | 0:408abc8a3d3e | 71 | if (simonButton.IsPressed()) { |
wek | 0:408abc8a3d3e | 72 | ledState ^= 1 << (simonButton.GetButton() - 1); |
wek | 0:408abc8a3d3e | 73 | } |
wek | 0:408abc8a3d3e | 74 | } |
wek | 0:408abc8a3d3e | 75 | } |
wek | 0:408abc8a3d3e | 76 | /* |
wek | 0:408abc8a3d3e | 77 | int main() { |
wek | 0:408abc8a3d3e | 78 | while(1) { |
wek | 0:408abc8a3d3e | 79 | myled = 1; |
wek | 0:408abc8a3d3e | 80 | wait(0.2); |
wek | 0:408abc8a3d3e | 81 | myled = 0; |
wek | 0:408abc8a3d3e | 82 | wait(0.2); |
wek | 0:408abc8a3d3e | 83 | } |
wek | 0:408abc8a3d3e | 84 | } |
wek | 0:408abc8a3d3e | 85 | */ |