Use of interrupts example for NMHU ambient computing class Sp2015. added MMA8451Q8 library to use as point of departure.

Dependencies:   MMA8451Q8b SLCD mbed

Fork of KL46z_all_interrupt by Stanley Cohen

Revision:
1:65b0e488f02a
Parent:
0:912303e63cbd
Child:
2:17a0550771c4
diff -r 912303e63cbd -r 65b0e488f02a main.cpp
--- a/main.cpp	Fri Feb 21 12:53:03 2014 +0000
+++ b/main.cpp	Mon Jan 26 16:43:52 2015 +0000
@@ -1,23 +1,51 @@
 #include "mbed.h"
+
+#include "SLCD.h"
+#define RELAYON 0
+#define RELAYOFF 1
+#define LEDDELAY 0.75
+#define WAITDELAY 3.0
  
-InterruptIn mybutton(USER_BUTTON);
-DigitalOut myled(LED1);
- 
-float delay = 1.0; // 1 sec
+Ticker ledBlink; // timinginterrupt for RED led
+InterruptIn mybutton(PTC3);  //push botton with internal pullup
+DigitalOut myled(LED_RED); // red led
+DigitalOut relay(LED_GREEN); // green led
+
  
-void pressed()
+float delay = WAITDELAY;
+int relayState = RELAYOFF;
+int outState = false;
+SLCD slcd; //define LCD display
+char LCDMessages[2][10] = {"TRUE", "FALS"};
+
+
+void LCDMess(char *lMess){
+        slcd.Home();// message stays till next update
+        slcd.clear();
+        slcd.printf(lMess);
+}
+
+void LEDBlinker(){  // RED LED interrupt
+    outState = !outState; 
+    myled.write(outState);
+}
+        
+    
+void pressed() // button intterupt
 {
-    if (delay == 1.0)
-        delay = 0.2; // 200 ms
-    else
-        delay = 1.0; // 1 sec
+    relayState = !relayState;
+    relay.write(relayState);
 }
- 
+
 int main()
 {
+    myled.write(outState);
+    relay.write(relayState);
     mybutton.fall(&pressed);
-    while (1) {
-        myled = !myled;
+    ledBlink.attach(&LEDBlinker, LEDDELAY);
+    while (true) { 
+    // other things can be put here.  
+        LCDMess(LCDMessages[relayState]);  
         wait(delay);
     }
 }