Simple port of the 4d genie arduino code. Works, but needs more work to be fully functionnal as a class!

Dependencies:   mbed 4dGENIE

Committer:
chris215
Date:
Sun Feb 23 17:41:02 2014 +0000
Revision:
4:5e14a065031d
Parent:
3:4fe144f2f64e
Child:
5:b1e5af95a2fb
Mbed4dGenie example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris215 0:f065693322dd 1 #include "mbed.h"
chris215 0:f065693322dd 2 #include "mbed_genie.h"
chris215 3:4fe144f2f64e 3
chris215 0:f065693322dd 4 DigitalOut myled(LED1);
chris215 4:5e14a065031d 5 /*
chris215 4:5e14a065031d 6 The Mbed4dGenie class requires 3 parameters
chris215 4:5e14a065031d 7 1 - Tx pin
chris215 4:5e14a065031d 8 2 - Rx pin
chris215 4:5e14a065031d 9 3 - Reset pin
chris215 4:5e14a065031d 10 */
chris215 4:5e14a065031d 11 Mbed4dGenie lcd4d(p9,p10,p11);
chris215 0:f065693322dd 12 void myGenieEventHandler(void)
chris215 0:f065693322dd 13 {
chris215 4:5e14a065031d 14 myled = 1;
chris215 4:5e14a065031d 15 genieFrame Event;
chris215 4:5e14a065031d 16 lcd4d.genieDequeueEvent(&Event);
chris215 4:5e14a065031d 17 //event report from an object
chris215 4:5e14a065031d 18 if(Event.reportObject.cmd == GENIE_REPORT_EVENT)
chris215 0:f065693322dd 19 {
chris215 4:5e14a065031d 20 /*
chris215 4:5e14a065031d 21 for example here we check if we received a message from 4dbuttons objects
chris215 4:5e14a065031d 22 the index is the button number, refer to the 4dgenie project to know the index
chris215 4:5e14a065031d 23 */
chris215 4:5e14a065031d 24 if (Event.reportObject.object == GENIE_OBJ_4DBUTTON) // If the Reported Message was from a Slider
chris215 0:f065693322dd 25 {
chris215 4:5e14a065031d 26 if (Event.reportObject.index == 0)
chris215 4:5e14a065031d 27 {
chris215 4:5e14a065031d 28 printf("Button 1 pressed!\n\r");
chris215 4:5e14a065031d 29 }
chris215 4:5e14a065031d 30 if (Event.reportObject.index == 1)
chris215 4:5e14a065031d 31 {
chris215 4:5e14a065031d 32 printf("Button 2 pressed!\n\r");
chris215 4:5e14a065031d 33 }
chris215 4:5e14a065031d 34 if (Event.reportObject.index == 2)
chris215 4:5e14a065031d 35 {
chris215 4:5e14a065031d 36 printf("Button 3 pressed!\n\r");
chris215 4:5e14a065031d 37 }
chris215 0:f065693322dd 38 }
chris215 4:5e14a065031d 39 }
chris215 4:5e14a065031d 40 //Cmd from a reported object (happens when an object read is requested)
chris215 4:5e14a065031d 41 if(Event.reportObject.cmd == GENIE_REPORT_OBJ)
chris215 4:5e14a065031d 42 {
chris215 4:5e14a065031d 43
chris215 4:5e14a065031d 44 }
chris215 4:5e14a065031d 45 }
chris215 0:f065693322dd 46
chris215 0:f065693322dd 47
chris215 0:f065693322dd 48
chris215 0:f065693322dd 49 int main() {
chris215 3:4fe144f2f64e 50 int temp = 0;
chris215 1:203466f6d54f 51 printf("Mbed Genie demo \n\r");
chris215 4:5e14a065031d 52 lcd4d.genieAttachEventHandler(&myGenieEventHandler);
chris215 4:5e14a065031d 53 lcd4d.genieWriteContrast(0);
chris215 4:5e14a065031d 54 wait(0.25);
chris215 4:5e14a065031d 55 lcd4d.genieWriteContrast(1);
chris215 0:f065693322dd 56
chris215 3:4fe144f2f64e 57 /*
chris215 3:4fe144f2f64e 58 for example, in this loop we increment the thermometer0 object from 0 to 100
chris215 3:4fe144f2f64e 59 */
chris215 4:5e14a065031d 60
chris215 0:f065693322dd 61 while(1) {
chris215 3:4fe144f2f64e 62 if(temp >= 100)
chris215 3:4fe144f2f64e 63 {
chris215 4:5e14a065031d 64 temp = -1;
chris215 3:4fe144f2f64e 65 }
chris215 3:4fe144f2f64e 66 else
chris215 3:4fe144f2f64e 67 {
chris215 3:4fe144f2f64e 68 temp++;
chris215 3:4fe144f2f64e 69 }
chris215 4:5e14a065031d 70 lcd4d.genieWriteObject(GENIE_OBJ_THERMOMETER,0,temp);
chris215 0:f065693322dd 71 myled = 1;
chris215 3:4fe144f2f64e 72 wait(0.25);
chris215 0:f065693322dd 73 myled = 0;
chris215 3:4fe144f2f64e 74 wait(0.25);
chris215 0:f065693322dd 75 }
chris215 0:f065693322dd 76 }