would be Simon game, as a demonstrator for buttons debouncing and \"collecting\" ---

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