A simple program to demonstrate how to use a RockerSW object on the 4D systems touch screen display with the mbed as a host microcontroller

Dependencies:   mbed

This is a demonstration program on how to use a 4D systems touch screen display with the mbed as a host microcontroller. For more information please take a look at the corresponding blog post here:

http://langster1980.blogspot.co.uk/2014/07/mbed-4d-systems-display-tutorial-with.html

Here is a photo of the breadboard layout and a schematic:

/media/uploads/langster1980/pwm_tutorial_schematic.png

/media/uploads/langster1980/mbed_breadboard_layout.jpg

Revision:
0:81f5d5b70036
Child:
1:f16b26f664f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jul 04 18:28:38 2014 +0000
@@ -0,0 +1,111 @@
+/* An mbed tutorial example using the
+4.3' PCT 4d systems touch screen display.
+
+uses the mbed_genie library ported from the arduino
+visie-genie library by Christian B
+
+The display serial TX and RX pins are connected to pin 9
+and pin 10 of the mbed, the reset pin is connected to pin 11
+
+For setting up the display in Visie-Genie
+
+The display has a rocker switch object, an LED object,
+and a slider object.
+
+The program reads the status of the rocker switch
+and was supposed to turn on the LED.
+
+The slider adjusts the flash rate of the LED
+
+The baud rate of the display is set to 115200 baud
+
+The Mbed4dGenie class requires 3 parameters
+    1 - Tx pin
+    2 - Rx pin
+    3 - Reset pin
+*/
+
+#include "mbed.h"
+#include "mbed_genie.h"
+
+Mbed4dGenie lcd4d(p9,p10,p11);
+
+DigitalOut whiteLED(p26);     //LED 1 for indication
+int rockersw_val = 0;         //holds the status of the 4Dbutton0 Object
+
+int sliderRead = 0;
+float flashRate = 1;        //variable to store LED flash rate
+int flag = 0;               //flag variable to store rockerswitch state
+
+//Event handler for the 4d Systems display
+void myGenieEventHandler(void)
+{
+    genieFrame Event;
+    lcd4d.genieDequeueEvent(&Event);
+    
+    //event report from an object
+    if(Event.reportObject.cmd == GENIE_REPORT_EVENT) {
+        if (Event.reportObject.object == GENIE_OBJ_ROCKERSW) { // If the Reported Message was from a rocker switch
+            if (Event.reportObject.index == 0) {
+                printf("Rocker switch 0 pressed!\n\r");
+                rockersw_val = lcd4d.genieGetEventData(&Event);  //extract the MSB and LSB values and pass them to rockersw_val
+
+                if (rockersw_val == 0) {                   //if Rockerswitch0 is off
+                    flag = 0;                              //"turn off" the LED
+                    printf("Rocker switch switch in off state\n\r"); //print a serial message for debugging
+                }
+
+                else if (rockersw_val == 1) {              //if Rockerswitch0 is on
+                    flag = 1;                              //"turn on" the LED
+                    printf("Rocker switch switch in ON state\n\r"); //print a serial message for debugging
+                }
+            }
+        }
+
+        if (Event.reportObject.object == GENIE_OBJ_SLIDER) {    // If the Reported Message was from a slider object
+            if (Event.reportObject.index == 0) {                // If the slider object was slider0
+                printf("Slider object changed!\n\r");           // Display a serial message for debugging
+                sliderRead = lcd4d.genieGetEventData(&Event);   // Read the current silder0 value
+                printf("SliderRead = %d \n\r", sliderRead);     // Display the Slider0 value
+                flashRate = 0.01;                               // Set flash rate initially to 10 ms On / Off
+                flashRate = 1 - (flashRate * sliderRead);       // Apply the value of slider0 object to flashRate
+                
+
+            }
+
+            //Cmd from a reported object (happens when an object read is requested)
+            if(Event.reportObject.cmd == GENIE_REPORT_OBJ) {
+
+            }
+        }
+    }
+}
+
+int main()
+
+{
+    lcd4d.genieAttachEventHandler(&myGenieEventHandler);    // Call the event handler for the 4D display
+ 
+    lcd4d.genieWriteContrast(0);                            // Set the display contrast to 0 initially
+
+    lcd4d.genieWriteContrast(15);                           // Set the display contrast to 15 (full brightness)
+
+    printf("Langsters's mbed Visi-Genie LED Flash demo \n\r");  // Display a welcome message on the serial monitor
+
+    while(1) {                                                  // initialise an infinite while loop
+        
+        if(flag == 1) {                                          // Check if rockerSW object has been activated
+            whiteLED = 1;                                        // turn real LED ON
+            wait(flashRate);                                     // keep LED on for a short period of time
+            whiteLED = 0;                                        // turn real LED ON
+            wait(flashRate);                                     // turn LED off for a short period of time
+            
+        }
+
+        if(flag == 0) {                                          // Check if rockerSW object has been deactivated
+            whiteLED = 0;                                        // turn real LED OFF
+        }
+    }
+}
+
+