A port of the arduino voltmeter example for the mbed 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

Dependencies:   mbed

A test of the arduino voltmeter example using the 4.3' PCT 4d systems touch screen display.

This example program uses the mbed_genie library ported from the arduino Visi-Genie library by Christian B

The display serial TX and RX pins are connected to pin 9 and pin 10 of the mbed microcontroller

The reset pin is not connected as reset function is not implemented

Pin 15 of the mbed has a potentiometer wiper connected to it. The other connections of the potentiometer are connected to +3.3V and 0V - this is to provide some data for the demonstration and to ensure that we don't apply too much voltage to the analogue input pin

For setting up the display in Visie-Genie -

The display has an angular meter object, a LED digits object, two button objects and three static text objects.

The 4dButton0 (On) and the 4dButton1 (Off) button has been set to report on change within Visi-Genie object inspector

The serial baud rate of the display must be set to 115200 baud for this example to work. Ensure you have the settings correct in Visi-Genie when exporting the display program

The mbed program sends digital voltage readings to the LED digits and angular meter of the display module.

The volt readings will only be displayed if the appropriate button on the display is set!

I have written up a more in depth explanation on my blog here:

http://langster1980.blogspot.co.uk/2014/01/ulcd-43-display-mbed-tutorial.html

Committer:
langster1980
Date:
Sun Jan 05 00:59:12 2014 +0000
Revision:
1:9e8db53e04c9
Parent:
0:1ab681bd453e
removed unwanted file from program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
langster1980 0:1ab681bd453e 1 /* A port test of the arduino voltmeter example using the
langster1980 0:1ab681bd453e 2 4.3' PCT 4d systems touch screen display.
langster1980 0:1ab681bd453e 3
langster1980 0:1ab681bd453e 4 uses the mbed_genie library ported from the arduino
langster1980 0:1ab681bd453e 5 visie-genie library by Christian B
langster1980 0:1ab681bd453e 6
langster1980 0:1ab681bd453e 7 The display serial TX and RX pins are connected to pin 9
langster1980 0:1ab681bd453e 8 and pin 10 of the mbed
langster1980 0:1ab681bd453e 9
langster1980 0:1ab681bd453e 10 The reset pin is not connected as reset function is not implemented
langster1980 0:1ab681bd453e 11
langster1980 0:1ab681bd453e 12 Pin 15 of the mbed has a potentiometer wiper connected to it
langster1980 0:1ab681bd453e 13 The other connections of the potentiometer are connected to +3.3V
langster1980 0:1ab681bd453e 14 and 0V
langster1980 0:1ab681bd453e 15
langster1980 0:1ab681bd453e 16 For setting up the display in Visie-Genie
langster1980 0:1ab681bd453e 17
langster1980 0:1ab681bd453e 18 The display has an angular meter objecr, a LED digits object, two buttons
langster1980 0:1ab681bd453e 19 and three static text objects.
langster1980 0:1ab681bd453e 20
langster1980 0:1ab681bd453e 21 The program sends digital voltage readings to the LED digits and
langster1980 0:1ab681bd453e 22 angular meter of the display module.
langster1980 0:1ab681bd453e 23
langster1980 0:1ab681bd453e 24 The On and Off button has been set to report on change
langster1980 0:1ab681bd453e 25
langster1980 0:1ab681bd453e 26 The baud rate of the display is set to 115200 baud
langster1980 0:1ab681bd453e 27
langster1980 0:1ab681bd453e 28 */
langster1980 0:1ab681bd453e 29
langster1980 0:1ab681bd453e 30 #include "mbed.h"
langster1980 0:1ab681bd453e 31 #include "mbed_genie.h"
langster1980 0:1ab681bd453e 32
langster1980 0:1ab681bd453e 33 DigitalOut myled(LED1); //LED 1 for indication
langster1980 0:1ab681bd453e 34
langster1980 0:1ab681bd453e 35 AnalogIn voltReading(p15); //Potentiometer wiper connected to pin 15
langster1980 0:1ab681bd453e 36
langster1980 0:1ab681bd453e 37 int flag = 0; //holds the "power status" of the voltmeter. flag = 0 means voltmeter is "off", flag = 1 means the voltmeter is "on".
langster1980 0:1ab681bd453e 38 float voltMeter; //holds the digital voltage value to be sent to the angular meter
langster1980 0:1ab681bd453e 39 float voltLED; //holds the digital voltage value to be sent to the LED digits
langster1980 0:1ab681bd453e 40
langster1980 0:1ab681bd453e 41 //Event handler for the 4d Systems display
langster1980 0:1ab681bd453e 42 void myGenieEventHandler(void)
langster1980 0:1ab681bd453e 43 {
langster1980 0:1ab681bd453e 44 genieFrame Event;
langster1980 0:1ab681bd453e 45 genieDequeueEvent(&Event);
langster1980 0:1ab681bd453e 46 //event report from an object
langster1980 0:1ab681bd453e 47 if(Event.reportObject.cmd == GENIE_REPORT_EVENT)
langster1980 0:1ab681bd453e 48 {
langster1980 0:1ab681bd453e 49 /*
langster1980 0:1ab681bd453e 50 for example here we check if we received a message from 4dbuttons objects
langster1980 0:1ab681bd453e 51 the index is the button number, refer to the 4dgenie project to know the index
langster1980 0:1ab681bd453e 52 */
langster1980 0:1ab681bd453e 53 if (Event.reportObject.object == GENIE_OBJ_4DBUTTON) // If the Reported Message was from a button
langster1980 0:1ab681bd453e 54 {
langster1980 0:1ab681bd453e 55 if (Event.reportObject.index == 0)
langster1980 0:1ab681bd453e 56 {
langster1980 0:1ab681bd453e 57 //printf("Off Button pressed!\n\r");
langster1980 0:1ab681bd453e 58 wait(0.2);
langster1980 0:1ab681bd453e 59 flag=1;
langster1980 0:1ab681bd453e 60 }
langster1980 0:1ab681bd453e 61 if (Event.reportObject.index == 1)
langster1980 0:1ab681bd453e 62 {
langster1980 0:1ab681bd453e 63 //printf("On Button pressed!\n\r");
langster1980 0:1ab681bd453e 64 wait(0.2);
langster1980 0:1ab681bd453e 65 flag=0;
langster1980 0:1ab681bd453e 66 }
langster1980 0:1ab681bd453e 67 }
langster1980 0:1ab681bd453e 68 }
langster1980 0:1ab681bd453e 69
langster1980 0:1ab681bd453e 70 //Cmd from a reported object (happens when an object read is requested)
langster1980 0:1ab681bd453e 71 // if(Event.reportObject.cmd == GENIE_REPORT_OBJ)
langster1980 0:1ab681bd453e 72 // {
langster1980 0:1ab681bd453e 73
langster1980 0:1ab681bd453e 74 // }
langster1980 0:1ab681bd453e 75
langster1980 0:1ab681bd453e 76 }
langster1980 0:1ab681bd453e 77
langster1980 0:1ab681bd453e 78 int main()
langster1980 0:1ab681bd453e 79
langster1980 0:1ab681bd453e 80 {
langster1980 0:1ab681bd453e 81 SetupGenie();
langster1980 0:1ab681bd453e 82 genieAttachEventHandler(&myGenieEventHandler);
langster1980 0:1ab681bd453e 83 //genieResetDisplay();
langster1980 0:1ab681bd453e 84
langster1980 0:1ab681bd453e 85 printf("Langsters's mbed Visi-Genie Voltmeter demo \n\r");
langster1980 0:1ab681bd453e 86
langster1980 0:1ab681bd453e 87 genieWriteContrast(15); //set screen contrast to full brightness
langster1980 0:1ab681bd453e 88
langster1980 0:1ab681bd453e 89 while(1)
langster1980 0:1ab681bd453e 90 {
langster1980 0:1ab681bd453e 91 //voltLED = 0;
langster1980 0:1ab681bd453e 92
langster1980 0:1ab681bd453e 93 if (flag == 1)
langster1980 0:1ab681bd453e 94 {
langster1980 0:1ab681bd453e 95 //printf("Flag status: %d \r\n", flag);
langster1980 0:1ab681bd453e 96 wait (0.1);
langster1980 0:1ab681bd453e 97 voltLED = voltReading;
langster1980 0:1ab681bd453e 98 wait (0.1);
langster1980 0:1ab681bd453e 99 //printf("Volt bit Reading: %f \n\r",voltLED);
langster1980 0:1ab681bd453e 100 voltLED = voltLED * 3.3; //convert float reading to voltage
langster1980 0:1ab681bd453e 101 //printf("voltLED: %f\r\n",voltLED);
langster1980 0:1ab681bd453e 102
langster1980 0:1ab681bd453e 103 voltLED = voltLED * 1000;
langster1980 0:1ab681bd453e 104 genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x00, voltLED); //write to Leddigits0 the value of voltLED
langster1980 0:1ab681bd453e 105 wait (0.1);
langster1980 0:1ab681bd453e 106
langster1980 0:1ab681bd453e 107 voltMeter = voltLED/100;
langster1980 0:1ab681bd453e 108 genieWriteObject(GENIE_OBJ_ANGULAR_METER, 0x00, voltMeter); //write to Angularmeter0 the value of voltMeter
langster1980 0:1ab681bd453e 109 }
langster1980 0:1ab681bd453e 110
langster1980 0:1ab681bd453e 111 else if(flag == 0)
langster1980 0:1ab681bd453e 112
langster1980 0:1ab681bd453e 113 {
langster1980 0:1ab681bd453e 114 //printf("Flag status: %d \r\n", flag);
langster1980 0:1ab681bd453e 115 wait (0.1);
langster1980 0:1ab681bd453e 116 voltLED = 0;
langster1980 0:1ab681bd453e 117 genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x00, 0); //write to Leddigits0 the value of voltLED
langster1980 0:1ab681bd453e 118 wait (0.1);
langster1980 0:1ab681bd453e 119
langster1980 0:1ab681bd453e 120 //voltMeter = voltLED/100;
langster1980 0:1ab681bd453e 121 genieWriteObject(GENIE_OBJ_ANGULAR_METER, 0x00, 0); //write to Angularmeter0 the value of voltMeter
langster1980 0:1ab681bd453e 122 }
langster1980 0:1ab681bd453e 123
langster1980 0:1ab681bd453e 124 }
langster1980 0:1ab681bd453e 125
langster1980 0:1ab681bd453e 126 }