Perform an LED toggle by interrupt over an existing sequence. PRints out to LCD upon occurence of interrupt.

Dependencies:   mbed C12832

Files at this revision

API Documentation at this revision

Comitter:
saltire78
Date:
Fri Jul 31 12:45:22 2020 +0000
Commit message:
online posting

Changed in this revision

C12832.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832.lib	Fri Jul 31 12:45:22 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/askksa12543/code/C12832/#990d5eec2ef6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jul 31 12:45:22 2020 +0000
@@ -0,0 +1,41 @@
+#include"mbed.h"                    // mbed header
+#include "C12832.h"                 // lcd header
+
+InterruptIn joystickcenter(p14);    // initialise interrupt pin on pcb
+InterruptIn button(p9);             // initialise external interrupt pin
+DigitalOut led(LED1);               // initialise interrupt led
+DigitalOut flash(LED4);             // initialise main program led
+C12832 lcd(p5, p7, p6, p8, p11);    // initialise lcd
+Timer debounce;                     // create debouce timer variable
+int state;                          // create interrupt activation variable
+int i=0;                            // create interrupt activation iterable variable
+
+void flip(){
+    debounce.start();               // start the timer
+    led=!led;                       // toggles the led when the joystick button is pressed.
+    state= 1;                       // changes global variable when interrupt activated
+    if (debounce.read_ms() >= 500){ // determine the timer limits - greater than or equal incase the exact count was missed by timer               
+        debounce.reset();           // reset the timer for the next use
+    }
+    
+}
+
+int main(){
+    joystickcenter.rise(&flip);     //attach the function address to the rising edge
+    button.mode(PullUp);            // With this, no external pullup resistor needed
+    button.rise(&flip);             // attach the function address to the rising edge
+    
+    while(1){                       //continuous run
+        if (state == 1){            // if interrupt activated
+            i++;                    // iterate the variable i
+            lcd.locate(0,0);        // home the lcd
+            lcd.printf("Interrupt Activated x %d", i);      // add lcd text
+            state = 0;              // reset the state variable from the interrupt
+            }
+        else                        // normal operation
+        {
+            flash=!flash;           // turns LED4 on ifoff, off if on
+            wait(0.25);             // the instruction to wait for a quarter-second
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Jul 31 12:45:22 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file