a quick program to test the 4Dgenie library

Dependencies:   4dGENIE_2 mbed

Fork of Genie_Test by christian b

Committer:
langster1980
Date:
Sun Jul 06 22:18:36 2014 +0000
Revision:
7:3d78f64d54a5
Parent:
6:120a0a3ff2e1
1st commit

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
langster1980 6:120a0a3ff2e1 4 #define beta 3977 // from the thermistor datasheet
langster1980 6:120a0a3ff2e1 5 #define resistance 10 //10k Resistor used in measurement bridge
langster1980 6:120a0a3ff2e1 6
langster1980 6:120a0a3ff2e1 7 float tempReading = 0; // the analog reading from the sensor
langster1980 6:120a0a3ff2e1 8 float tempCalc = 0; // the calculated temperature
langster1980 6:120a0a3ff2e1 9 int rockersw_val = 0; //holds the status of the 4Dbutton0 Object
langster1980 6:120a0a3ff2e1 10 int flag = 0; //flag variable to store rockerswitch state
langster1980 6:120a0a3ff2e1 11
langster1980 6:120a0a3ff2e1 12 AnalogIn tempIn(p15); // thermistor temperature sensor attached to pin 15
chris215 4:5e14a065031d 13 /*
chris215 4:5e14a065031d 14 The Mbed4dGenie class requires 3 parameters
chris215 4:5e14a065031d 15 1 - Tx pin
chris215 4:5e14a065031d 16 2 - Rx pin
chris215 4:5e14a065031d 17 3 - Reset pin
chris215 4:5e14a065031d 18 */
langster1980 6:120a0a3ff2e1 19 Mbed4dGenie lcd4d(p9,p10,p11 );
langster1980 6:120a0a3ff2e1 20
langster1980 6:120a0a3ff2e1 21 void getSensorReading(void)
langster1980 6:120a0a3ff2e1 22 {
langster1980 6:120a0a3ff2e1 23 tempReading = (tempIn); // Read the sensor data from analogue pin 26
langster1980 6:120a0a3ff2e1 24 tempCalc = beta / (log(((resistance / tempReading) - 10.0) / 10.0) + (beta / 298.0)) - 273.0; // Calcuate the actual temperature
langster1980 6:120a0a3ff2e1 25 if (tempCalc >= 130)
langster1980 6:120a0a3ff2e1 26 tempCalc = 130;
langster1980 6:120a0a3ff2e1 27 }
chris215 5:b1e5af95a2fb 28
chris215 5:b1e5af95a2fb 29 void MyGenieEventHandler(void)
chris215 0:f065693322dd 30 {
chris215 5:b1e5af95a2fb 31 genieFrame TheEven;
langster1980 6:120a0a3ff2e1 32 while(lcd4d.PendingFrames()) {
langster1980 6:120a0a3ff2e1 33 if(lcd4d.genieDequeueEvent(&TheEven)) {
langster1980 6:120a0a3ff2e1 34 if( TheEven.reportObject.cmd == GENIE_REPORT_EVENT) {
langster1980 6:120a0a3ff2e1 35 if (TheEven.reportObject.object == GENIE_OBJ_ROCKERSW) { // If the Reported Message was from a rocker switch
langster1980 6:120a0a3ff2e1 36 if (TheEven.reportObject.index == 0) {
langster1980 6:120a0a3ff2e1 37 //printf("Rocker switch 0 pressed!\n\r");
langster1980 6:120a0a3ff2e1 38 rockersw_val = lcd4d.genieGetEventData(&TheEven); //extract the MSB and LSB values and pass them to rockersw_val
langster1980 6:120a0a3ff2e1 39
langster1980 6:120a0a3ff2e1 40 if (rockersw_val == 0) { //if Rockerswitch0 is off
langster1980 6:120a0a3ff2e1 41 flag = 0;
langster1980 6:120a0a3ff2e1 42 //printf("Rocker switch switch in off state\n\r"); //print a serial message for debugging
langster1980 6:120a0a3ff2e1 43 }
langster1980 6:120a0a3ff2e1 44
langster1980 6:120a0a3ff2e1 45 else if (rockersw_val == 1) { //if Rockerswitch0 is on
langster1980 6:120a0a3ff2e1 46 flag = 1;
langster1980 6:120a0a3ff2e1 47 //printf("Rocker switch switch in ON state\n\r"); //print a serial message for debugging
langster1980 6:120a0a3ff2e1 48 }
langster1980 6:120a0a3ff2e1 49 }
langster1980 6:120a0a3ff2e1 50 }
chris215 4:5e14a065031d 51 }
chris215 0:f065693322dd 52 }
chris215 5:b1e5af95a2fb 53 }
chris215 4:5e14a065031d 54 }
chris215 0:f065693322dd 55
langster1980 6:120a0a3ff2e1 56 int main()
langster1980 6:120a0a3ff2e1 57 {
langster1980 6:120a0a3ff2e1 58 //int temp = 0;
langster1980 6:120a0a3ff2e1 59 printf("Mbed Genie demo with 10k thermistor \n\r");
langster1980 6:120a0a3ff2e1 60 lcd4d.Start();
langster1980 6:120a0a3ff2e1 61
chris215 5:b1e5af95a2fb 62 lcd4d.genieAttachEventHandler(&MyGenieEventHandler);
langster1980 6:120a0a3ff2e1 63
chris215 0:f065693322dd 64 while(1) {
langster1980 6:120a0a3ff2e1 65
langster1980 6:120a0a3ff2e1 66 getSensorReading();
langster1980 6:120a0a3ff2e1 67
langster1980 6:120a0a3ff2e1 68 if (flag == 1) {
langster1980 6:120a0a3ff2e1 69 lcd4d.genieWriteObject(GENIE_OBJ_THERMOMETER,0x00,tempCalc);
langster1980 6:120a0a3ff2e1 70
langster1980 6:120a0a3ff2e1 71 tempCalc = tempCalc * 100;
langster1980 6:120a0a3ff2e1 72 lcd4d.genieWriteObject(GENIE_OBJ_LED_DIGITS,0x00,tempCalc);
chris215 3:4fe144f2f64e 73 }
chris215 5:b1e5af95a2fb 74
langster1980 6:120a0a3ff2e1 75 else if(flag == 0)
langster1980 6:120a0a3ff2e1 76
chris215 5:b1e5af95a2fb 77 {
langster1980 6:120a0a3ff2e1 78 lcd4d.genieWriteObject(GENIE_OBJ_THERMOMETER,0x00, 0);
langster1980 6:120a0a3ff2e1 79 lcd4d.genieWriteObject(GENIE_OBJ_LED_DIGITS,0x00, 0);
chris215 5:b1e5af95a2fb 80 }
langster1980 6:120a0a3ff2e1 81
langster1980 6:120a0a3ff2e1 82
chris215 0:f065693322dd 83 }
langster1980 6:120a0a3ff2e1 84 }