A program that simulates a simple stopwatch program using three buttons, and uses LEDs and vibration as feedback to the buttons.

Dependencies:   Hexi_KW40Z Hexi_OLED_SSD1351

Revision:
0:623612f2cc48
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Apr 19 15:00:09 2017 +0000
@@ -0,0 +1,82 @@
+//Filarius Peter Usop
+//Mini Project 1
+//Uses LEDs, Buttons, Haptic, and OLEd
+
+#include "mbed.h"
+#include "Hexi_OLED_SSD1351.h"
+#include "Hexi_KW40Z.h"
+#include "Functions.h"
+#include "string.h"
+
+//SSD1351 Driver (OLED) Instantiation
+SSD1351 oled(PTB22, PTB21, PTC13, PTB20, PTE6, PTD15);
+
+Timer t;
+
+int main (void)
+{
+    //Initialize buttons
+    Button_Init();
+    
+    //Initialize the text properties to default
+    oled_text_properties_t textProp = {0};
+    oled.GetTextProperties(&textProp);
+
+    //String Pointer
+    char text[20];
+    
+    //Flag
+    int flag = 1;
+
+    //Clear screen
+    oled.DrawBox(0,0,96,96,COLOR_BLACK);
+    
+    //Top Title
+    strcpy((char *) text, "Stopwatch");
+    textProp.fontColor = COLOR_WHITE;
+    textProp.alignParam = OLED_TEXT_ALIGN_CENTER;
+    oled.SetTextProperties(&textProp);
+    oled.TextBox((const uint8_t *) text,0,0,96,15);
+    
+    textProp.fontColor = COLOR_RED;
+    oled.SetTextProperties(&textProp);
+    
+    t.start();  //Start stopwatch. You may remove this line
+    
+    //Print to OLED
+    sprintf(text, "%.0f", t.read());
+    oled.TextBox((uint8_t *) text,0,40,96,15);
+    
+    while (1) {
+        Thread::wait(1000);         //Refresh every 1 second
+        if (flag == 1)      //Down button: Stops and resets the stopwatch
+        {
+            t.stop();
+            t.reset();
+            sprintf(text, "%.0f", t.read());
+            flag++;
+        }
+        else if (flag == 2) //Right button: Starts the stopwatch
+        {
+            if (but == 1)
+            {
+                t.start();
+                flag++;
+            }
+            else if (but == 0) flag--;
+        }
+        else if (flag == 3) //Left button: Stops the stopwatch
+        {
+            if (but == 2)
+            {
+                t.stop();
+                flag--;
+            }
+            else if (but == 0) flag = flag-2;
+        }
+                
+        //Update value on OLED
+        sprintf(text, "%.0f", t.read());
+        oled.TextBox((uint8_t *) text,0,40,96,15);
+    }
+}