Jan Waclawek
/
Simon
would be Simon game, as a demonstrator for buttons debouncing and \"collecting\" ---
Diff: main.cpp
- Revision:
- 0:408abc8a3d3e
- Child:
- 1:3acf57259c58
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Dec 13 23:34:17 2010 +0000 @@ -0,0 +1,91 @@ +#include "mbed.h" +#include "DebounceIn_.h" +#include <stdbool.h> + +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); +DebounceIn button1(p15); +DebounceIn button2(p16); +DebounceIn button3(p17); +DebounceIn button4(p21); + +class CSimonButton { + _Bool pressed; + int button; + public: + CSimonButton(); + _Bool IsPressed(void); + int GetButton(void) {return button;}; + void Handle(void); +}; + +CSimonButton::CSimonButton() { + button1.mode(PullUp); + button2.mode(PullUp); + button3.mode(PullUp); + button4.mode(PullUp); + pressed = 0; +} + +_Bool CSimonButton::IsPressed(void) { + _Bool tmp; + + tmp = pressed; + pressed = 0; + return tmp; +} + +void CSimonButton::Handle(void) { + if (button1.pressed) { + button1.pressed = 0; + pressed = 1; + button = 1; + } + if (button2.pressed) { + button2.pressed = 0; + pressed = 1; + button = 2; + } + if (button3.pressed) { + button3.pressed = 0; + pressed = 1; + button = 3; + } + if (button4.pressed) { + button4.pressed = 0; + pressed = 1; + button = 4; + } + +} + + +uint8_t ledState; + +int main() { + CSimonButton simonButton; + while (1) { + led1 = (ledState & 0x01) ? 1 : 0; + led2 = (ledState & 0x02) ? 1 : 0; + led3 = (ledState & 0x04) ? 1 : 0; + led4 = (ledState & 0x08) ? 1 : 0; + + simonButton.Handle(); + + if (simonButton.IsPressed()) { + ledState ^= 1 << (simonButton.GetButton() - 1); + } + } +} +/* +int main() { + while(1) { + myled = 1; + wait(0.2); + myled = 0; + wait(0.2); + } +} +*/ \ No newline at end of file