KL46z Stopwatch_v3 w/reset

Dependencies:   SLCD mbed

Fork of kl46z_stop_watch_v2 by Stanley Cohen

Files at this revision

API Documentation at this revision

Comitter:
eseifert
Date:
Tue Oct 18 22:58:32 2016 +0000
Parent:
1:0d13b6d7907f
Commit message:
KL46z Stopwatch v3 w/reset

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 0d13b6d7907f -r 8b92d65b8748 main.cpp
--- a/main.cpp	Wed Oct 12 15:55:44 2016 +0000
+++ b/main.cpp	Tue Oct 18 22:58:32 2016 +0000
@@ -1,5 +1,5 @@
 #include "mbed.h"
-#include <math.h>  
+#include <math.h>
 #include "SLCD.h"
 
 #define LEDON false
@@ -9,13 +9,13 @@
 #define RBUT PTC3
 #define STOPPEDSTATE 0
 #define TIMINGSTATE  1
-#define RESETTINGSTATE 0
+#define RESETTINGSTATE 2
 #define PRINTDELTA 0.01
 #define LCDCHARLEN 10
 #define BUTTONTIME 0.2
 #define FULLMINUTE 60 //seconds
 #define PROGNAME "kl46z_stop_watch_v1\n\r"
-#define LCDTITLE "STPW"
+#define LCDTITLE "SWTR"
 #define TITLEWAIT 2.0
 
 //#define PRINTDBUG // uncomment if printing to serial port desired
@@ -27,28 +27,29 @@
 DigitalIn buttons[NUMBUTS] = {RBUT, LBUT};
 int displayState = STOPPEDSTATE;
 
-
-
-void initialize_global_vars(){
+void initialize_global_vars()
+{
     pc.printf(PROGNAME);
     // set up DAQ timer
     // set up DAQ timers
     ButtonTimer.start();
-    ButtonTimer.reset(); 
-} 
+    ButtonTimer.reset();
+}
 
-void LCDMess(char *lMess){
-        slcd.Home();
-        slcd.clear();
-        slcd.printf(lMess);
+void LCDMess(char *lMess)
+{
+    slcd.Home();
+    slcd.clear();
+    slcd.printf(lMess);
 }
-void showTitle(){
+void showTitle()
+{
     LCDMess(LCDTITLE);
     wait(TITLEWAIT);
     return;
 }
-int main(void) {
-    int i;
+int main(void)
+{
     char lcdData[LCDCHARLEN];
     PwmOut gled(LED_GREEN);
     PwmOut rled(LED_RED);
@@ -57,63 +58,61 @@
     int minutesCount; // for displaying mininuts
     int seconds; //
     int fifthSeconds;
-    bool statetoggle = false; //was in stopped state.
-    
+    bool stateToggle = false; //was in stopped state.
+
     initialize_global_vars();
     showTitle();
 
-     while (true) {
-        if (ButtonTimer > BUTTONTIME){
-            for (i=0; i<NUMBUTS; i++){ // index will be 0 or 1 
-                if(!buttons[i]) { // a buttton is pressed
-                    displayState = i; 
-                    switch (displayState){  // this keeps things generic
-                        case TIMINGSTATE: {              
-                         statetoggle = !statetoggle;
-                         break;
-                        }
-                        case RESETTINGSTATE :{
-                        break;
-                        }
-                    }   
-                } // if ! buttons
-            }// for loop to look at buttons
+    while (true) {
+        if (ButtonTimer > BUTTONTIME) {
+            // Left button: Start Timing (buttons[0])
+            // Right button: Stop Timing (buttons[1])
+            // Both buttons: Reset Timing (both buttons)
+            if (!buttons[0] && buttons[1]) {
+                displayState = 0;
+                stateToggle = 0;
+            }
+            if (buttons[0] && !buttons[1]) {
+                displayState = 1;
+                stateToggle = 1;
+            }
+            if (!buttons[0] && !buttons[1]) {
+                displayState = 2;
+                stateToggle = 0;
+            }
+
             ButtonTimer.reset();
-            switch (displayState){
-                    /* this goes away
-                    case STOPPEDSTATE : {                     
-                        rled = 0.0;
-                        gled = 1.0;
-                        break;
+
+            switch (displayState) {
+                case STOPPEDSTATE:
+                    rled = 0.0;
+                    gled = 1.0;
+                    break;
+                case TIMINGSTATE:
+                    if(stateToggle) {
+                        secondsCount = secondsCount + BUTTONTIME;
                     }
-                    */
-                    case RESETTINGSTATE:
-                        if (!statetoggle){
-                            secondsCount = 0;
-                            displayState = TIMINGSTATE;
-                        }
-                        rled = 0.0;
-                        gled = 1.0;
-                        break;
-                        
-                        
-                    case TIMINGSTATE : {
-                        if(statetoggle){
-                            secondsCount = secondsCount + BUTTONTIME; 
-                        }                   
-                        rled = 1.0;
-                        gled = 0.0;
-                        break;
+                    rled = 1.0;
+                    gled = 0.0;
+                    break;
+                case RESETTINGSTATE:
+                    pc.printf("reset2\r\n");
+                    if (!stateToggle) {
+                        secondsCount = 0;
+                        displayState = STOPPEDSTATE;
                     }
+                    rled = 0.0;
+                    gled = 0.0;
+                    break;
             }
-            
+
             // Parse the seconds
             seconds = (int)secondsCount; // make seconds "mask"
             fifthSeconds = (int)((secondsCount - (float)seconds) * 10); // the 0.2 seconds
             minutesCount = seconds / FULLMINUTE;
-            seconds = seconds % FULLMINUTE;          
-            sprintf (lcdData,"%1d.%02d.%1d",minutesCount,seconds,fifthSeconds);  
-            LCDMess(lcdData);            
+            seconds = seconds % FULLMINUTE;
+            sprintf (lcdData,"%1d.%02d.%1d",minutesCount,seconds,fifthSeconds);
+            LCDMess(lcdData);
         }// end Button timer
     }
 }
\ No newline at end of file