Jan Waclawek
/
Simon
would be Simon game, as a demonstrator for buttons debouncing and \"collecting\" ---
main.cpp
- Committer:
- wek
- Date:
- 2010-12-13
- Revision:
- 0:408abc8a3d3e
- Child:
- 1:3acf57259c58
File content as of revision 0:408abc8a3d3e:
#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); } } */