Level 2 Project Range Device
Dependencies: N5110 SDFileSystem SRF02 TMP102 mbed
Diff: main.h
- Revision:
- 8:fe6ebe807b9d
- Parent:
- 7:14cfb0df30e6
- Child:
- 9:bc259fc22fa2
--- a/main.h Mon Apr 25 10:08:05 2016 +0000 +++ b/main.h Wed Apr 27 09:09:55 2016 +0000 @@ -26,15 +26,13 @@ #define IMPERIAL 0 + /** @namespace LEDs @brief Output for Alert LEDs */ -/** Red LED connect to pin PTA1*/ DigitalOut rr_led (PTA1); -/** amber LED connect to pin PTC2*/ DigitalOut a_led (PTC2); -/** Green LED connect to pin PTB23*/ DigitalOut gg_led(PTB23); /** @@ -60,13 +58,14 @@ /** @namespace Timers -@brief Tickers and time outs +@brief Tickers and Timeouts */ Ticker ticker; Ticker ticker_srf02; -Ticker ticker_tone; +//Ticker ticker_tone; Ticker ticker_standby; Timeout buzzoff; +Timeout buzzon; // Create TMP102 object TMP102 tmp102(I2C_SDA,I2C_SCL); @@ -85,13 +84,14 @@ /// Connections to SD card holder on K64F (SPI interface) SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS - +FILE *fp; /** @namespace TimerFlags @brief Flags for use with timed interupts */ volatile int g_timer_flag_led = 0, g_timer_flag_srf02 = 0, g_timer_flag_tone = 0; /** Flag rised by interupts*/ volatile int g_timer_flag_standby = 0; +volatile int buzz_flag = 0; /** @namespace ButtonFlages @brief Flags for use with button interupts @@ -102,16 +102,8 @@ @namespace RangePresets @brief Preset range of the differant alert levels */ -int r1 = 3,/*!< Upper limit of alert 1 */r2 = 20,/*!< Upper limit of alert 2 */r3 = 40,/*!< Upper limit of alert 3 */r4 = 60,/*!< Upper limit of alert 4 */r5 = 80,/*!< Upper limit of alert 5 */r6 = 100,/*!< Upper limit of alert 6 */r7 = 120; /*!< Upper limit of alert 7 */ - -FILE *fp; - -int myarray[9];/*!< array to hold last ten range readings */ -int d =0; -int t; -int i; +int r1 = 3,/*!< Upper limit of alert 1 */r2 = 10,/*!< Upper limit of alert 2 */r3 = 20,/*!< Upper limit of alert 3 */r4 = 30,/*!< Upper limit of alert 4 */r5 = 40,/*!< Upper limit of alert 5 */r6 = 50,/*!< Upper limit of alert 6 */r7 = 60; /*!< Upper limit of alert 7 */ float avgdistance; -int totaldistance; int subpage; /*!< veriable to hold the page being viewed with in the submenu */ int page;/*!< veriable to hold the page being viewed with in the menu */ int offset = 0;/*!< veriable to hold the offset and adjust the 0 Range point */ @@ -122,8 +114,9 @@ int length, length1, length2, length3, length4; char buffer[14], buffer1[14], buffer2[14], buffer3[14], buffer4[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14) float T; -int standby =1; +int standby = 1; float c =1; /// convertion factor from Cm to inch +int check_flag = 0; struct Alertlevel { @@ -133,28 +126,117 @@ char frr_led;///FLASHING RED LED state char fa_led; ///FLASHING AMBER LED state char fgg_led; ///FLASHING GREEN LED state - int toneon; - int toneoff; - }; /*!< Stucture to hold all outputs. Steady LEDs, Flashing LEDs, Tone on, Tonne off*/ + float toneon; + float toneoff; +}; /*!< Stucture to hold all outputs. Steady LEDs, Flashing LEDs, Tone on, Tonne off*/ typedef const struct Alertlevel STyp; STyp Alertlevel[8] = { {LOW,LOW,LOW,LOW,LOW,LOW,0,1}, // no output - {LOW,LOW,LOW,LOW,LOW,HIGH,1,8}, //flash green - {LOW,LOW,HIGH,LOW,LOW,LOW,2,7}, //steady green - {LOW,LOW,HIGH,LOW,HIGH,LOW,4,5}, //flash amber - {LOW,HIGH,HIGH,LOW,LOW,LOW,6,3}, //steady amber - {LOW,HIGH,HIGH,HIGH,LOW,LOW,8,1}, //flash red - {HIGH,HIGH,HIGH,LOW,LOW,LOW,9,0},// steady red - {LOW,LOW,LOW,HIGH,HIGH,HIGH,9,0} // all flash + {LOW,LOW,LOW,LOW,LOW,HIGH,0.1,0.9}, //flash green + {LOW,LOW,HIGH,LOW,LOW,LOW,0.1,0.5}, //steady green + {LOW,LOW,HIGH,LOW,HIGH,LOW,0.1,0.3}, //flash amber + {LOW,HIGH,HIGH,LOW,LOW,LOW,0.2,0.2}, //steady amber + {LOW,HIGH,HIGH,HIGH,LOW,LOW,0.2,0.1}, //flash red + {HIGH,HIGH,HIGH,LOW,LOW,LOW,0.1,0.1},// steady red + {LOW,LOW,LOW,HIGH,HIGH,HIGH,1,0} // all flash };/*!< Array contaning structures for diffent outputs */ +void flip(); +void buzzflag(); + +/** Controls the LCD while not in a Menu Function called to print to the LCD display + @param i used to scale the max distaance to the width of the screen + @param distance Distance read from sensor to be dispayed + @param distbar used to adjust how far along the screen the bar is to go acorrding to distance +@code +if (alert == 0) { +if (g_timer_flag_standby) { + g_timer_flag_standby = 0; + T = tmp102.get_temperature(); + standby++; + if (standby >3) { + standby = 3; + } + } + + switch (standby) { + case 1: + if (check_flag == 1) { + sprintf(buffer4,"COLLISIONCHECK"); + } + lcd.clear(); + sprintf(buffer,"**PATH CLEAR**"); + lcd.printString(buffer,0,0); + lcd.printString(buffer4,0,5); + lcd.refresh(); + break; + case 2: + if (check_flag == 1) { + sprintf(buffer4,"COLLISIONCHECK"); + lcd.clear(); + sprintf(buffer3,"TEMP = %.2f",T); + sprintf(buffer2,"TEMPERATER"); + lcd.printString(buffer3,4,2); + lcd.printString(buffer2,12,1); + lcd.printString(buffer4,0,5); + + break; + case 3: + if (check_flag == 1) { + sprintf(buffer4,"COLLISIONCHECK"); + lcd.clear(); + sprintf(buffer3,"TEMP = %.2f",T); + sprintf(buffer2,"TEMPERATER"); + lcd.refresh(); + lcd.printString(buffer3,4,2); + lcd.printString(buffer2,12,1); + lcd.printString(buffer4,0,5); + lcd.setBrightness(0); + break; + } + } + + //If alert isn't 0 then the distance is to be dispayed alonng with the the distance bar + else { + lcd.setBrightness(bright); + standby =0; + lcd.clear(); + + if (units == METRIC) { + sprintf(buffer,"%0.2f Cm",avgdistance); + sprintf(buffer1,"****RANGE!****"); + sprintf(buffer2,"DISTANCE"); + + sprintf(buffer4,"Menu"); + + } else { + sprintf(buffer,"%0.2f Inches",avgdistance); + sprintf(buffer1,"****RANGE!****"); + sprintf(buffer2,"***DISTANCE***"); + sprintf(buffer4,"Menu"); + } + lcd.printString(buffer,25,2); + lcd.printString(buffer1,0,0); + lcd.printString(buffer2,16,1); + lcd.printString(buffer4,0,5); + + + float h = (r7/84); + float distbar = (avgdistance*h); + //drawRect(int x0,int y0,int width,int height,int fill); + lcd.drawRect(0,29,distbar,7,1); // + lcd.refresh(); +@endcode +*/ void lcdoutput(); + void timer_isr_led(); void timer_isr_srf02(); void timer_isr_tone(); void timer_isr_standby(); + /** Called to increment to brightness by 0.2 each time when at 1 resets back to 0.0 @param bright 0.0-1 @returns lcd.setbrightness @@ -168,6 +250,7 @@ @endcode */ void backlight(); +void Getdistance(); void init_K64F(); void sw2_isr(); void sw1_isr(); @@ -339,151 +422,151 @@ } @endcode */ - void menu(); - /** - @code - while(1) { - /// innterupt used to shift page - if (g_sw1_flag) { - g_sw1_flag = 0; - subpage++; - } - switch (subpage) { - ///interupt used to adjust range - case 0: - if (g_sw2_flag) { - g_sw2_flag = 0; // if it has, clear the flag - if (r2 == r3) { - r2 = 1; - } else { - r2 = r2+1; - } +void menu(); +/** +@code + while(1) { + /// innterupt used to shift page + if (g_sw1_flag) { + g_sw1_flag = 0; + subpage++; + } + switch (subpage) { + ///interupt used to adjust range + case 0: + if (g_sw2_flag) { + g_sw2_flag = 0; // if it has, clear the flag + if (r2 == r3) { + r2 = 1; + } else { + r2 = r2+1; } - length2 = sprintf(buffer1,"*****MENU*****"); - length3 = sprintf(buffer2,"RANGE"); - length3 = sprintf(buffer3,"PARAMETERS"); - length4 = sprintf(buffer4,"1Cm to %iCm",r2); - lcd.printString(buffer1,0,0); - lcd.printString(buffer2,0,1); - lcd.printString(buffer3,0,2); - lcd.printString(buffer4,0,3); - break; + } + length2 = sprintf(buffer1,"*****MENU*****"); + length3 = sprintf(buffer2,"RANGE"); + length3 = sprintf(buffer3,"PARAMETERS"); + length4 = sprintf(buffer4,"1Cm to %iCm",r2); + lcd.printString(buffer1,0,0); + lcd.printString(buffer2,0,1); + lcd.printString(buffer3,0,2); + lcd.printString(buffer4,0,3); + break; - case 1: + case 1: - if (g_sw2_flag) { - g_sw2_flag = 0; // if it has, clear the flag - if (r3 == r4) { - r3 = r2; - } else { - r3 += 1; - } + if (g_sw2_flag) { + g_sw2_flag = 0; // if it has, clear the flag + if (r3 == r4) { + r3 = r2; + } else { + r3 += 1; } + } - sprintf(buffer1,"*****MENU*****"); - sprintf(buffer2,"RANGE"); - sprintf(buffer3,"PARAMETERS"); - sprintf(buffer4,"%iCm to %iCm",r2,r3); - lcd.printString(buffer1,0,0); - lcd.printString(buffer2,0,1); - lcd.printString(buffer3,0,2); - lcd.printString(buffer4,0,3); - break; + sprintf(buffer1,"*****MENU*****"); + sprintf(buffer2,"RANGE"); + sprintf(buffer3,"PARAMETERS"); + sprintf(buffer4,"%iCm to %iCm",r2,r3); + lcd.printString(buffer1,0,0); + lcd.printString(buffer2,0,1); + lcd.printString(buffer3,0,2); + lcd.printString(buffer4,0,3); + break; - case 2: + case 2: - if (g_sw2_flag) { - g_sw2_flag = 0; // if it has, clear the flag - if (r4 == r5) { - r4 = r3; - } else { - r4 += 1; - } + if (g_sw2_flag) { + g_sw2_flag = 0; // if it has, clear the flag + if (r4 == r5) { + r4 = r3; + } else { + r4 += 1; } + } - sprintf(buffer1,"*****MENU*****"); - sprintf(buffer2,"RANGE"); - sprintf(buffer3,"PARAMETERS"); - sprintf(buffer4,"%iCm to %iCm",r3,r4); - lcd.printString(buffer1,0,0); - lcd.printString(buffer2,0,1); - lcd.printString(buffer3,0,2); - lcd.printString(buffer4,0,3); - break; + sprintf(buffer1,"*****MENU*****"); + sprintf(buffer2,"RANGE"); + sprintf(buffer3,"PARAMETERS"); + sprintf(buffer4,"%iCm to %iCm",r3,r4); + lcd.printString(buffer1,0,0); + lcd.printString(buffer2,0,1); + lcd.printString(buffer3,0,2); + lcd.printString(buffer4,0,3); + break; - case 3: + case 3: - if (g_sw2_flag) { - g_sw2_flag = 0; // if it has, clear the flag - if (r5 == r6) { - r5 = r4; - } else { - r5 += 1; - } + if (g_sw2_flag) { + g_sw2_flag = 0; // if it has, clear the flag + if (r5 == r6) { + r5 = r4; + } else { + r5 += 1; } + } - sprintf(buffer1,"*****MENU*****"); - sprintf(buffer2,"RANGE"); - sprintf(buffer3,"PARAMETERS"); - sprintf(buffer4,"%iCm to %iCm",r4,r5); - lcd.printString(buffer1,0,0); - lcd.printString(buffer2,0,1); - lcd.printString(buffer3,0,2); - lcd.printString(buffer4,0,3); - break; - case 4: + sprintf(buffer1,"*****MENU*****"); + sprintf(buffer2,"RANGE"); + sprintf(buffer3,"PARAMETERS"); + sprintf(buffer4,"%iCm to %iCm",r4,r5); + lcd.printString(buffer1,0,0); + lcd.printString(buffer2,0,1); + lcd.printString(buffer3,0,2); + lcd.printString(buffer4,0,3); + break; + case 4: - if (g_sw2_flag) { - g_sw2_flag = 0; // if it has, clear the flag - if (r6 == r7) { - r6 = r5; - } else { - r6 += 1; - } + if (g_sw2_flag) { + g_sw2_flag = 0; // if it has, clear the flag + if (r6 == r7) { + r6 = r5; + } else { + r6 += 1; } + } - length2 = sprintf(buffer1,"*****MENU*****"); - length3 = sprintf(buffer2,"RANGE"); - length3 = sprintf(buffer3,"PARAMETERS"); - length3 = sprintf(buffer4,"%iCm to %iCm",r5,r6); - lcd.printString(buffer1,0,0); - lcd.printString(buffer2,0,1); - lcd.printString(buffer3,0,2); - lcd.printString(buffer4,0,3); - break; - case 5: + length2 = sprintf(buffer1,"*****MENU*****"); + length3 = sprintf(buffer2,"RANGE"); + length3 = sprintf(buffer3,"PARAMETERS"); + length3 = sprintf(buffer4,"%iCm to %iCm",r5,r6); + lcd.printString(buffer1,0,0); + lcd.printString(buffer2,0,1); + lcd.printString(buffer3,0,2); + lcd.printString(buffer4,0,3); + break; + case 5: - if (g_sw2_flag) { - g_sw2_flag = 0; // if it has, clear the flag - if (r7 == 300) { - r7 = r6; - } else { - r7 += 1; - } + if (g_sw2_flag) { + g_sw2_flag = 0; // if it has, clear the flag + if (r7 == 300) { + r7 = r6; + } else { + r7 += 1; } + } - length2 = sprintf(buffer1,"*****MENU*****"); - length3 = sprintf(buffer2,"RANGE"); - length3 = sprintf(buffer3,"PARAMETERS"); - length3 = sprintf(buffer4,"%iCm to %iCm",r6,r7); - lcd.printString(buffer1,0,0); - lcd.printString(buffer2,0,1); - lcd.printString(buffer3,0,2); - lcd.printString(buffer4,0,3); - break; + length2 = sprintf(buffer1,"*****MENU*****"); + length3 = sprintf(buffer2,"RANGE"); + length3 = sprintf(buffer3,"PARAMETERS"); + length3 = sprintf(buffer4,"%iCm to %iCm",r6,r7); + lcd.printString(buffer1,0,0); + lcd.printString(buffer2,0,1); + lcd.printString(buffer3,0,2); + lcd.printString(buffer4,0,3); + break; - default: - lcd.clear(); - // save(); - return; - } - } + default: + lcd.clear(); + // save(); + return; } - @endcode - */ - void submenu(); - void save(); - void load(); - void standby1(); +} +} +@endcode +*/ +void submenu(); +void save(); +void load(); +void GetDistance(); #endif \ No newline at end of file