Level 2 Project Range Device

Dependencies:   N5110 SDFileSystem SRF02 TMP102 mbed

Files at this revision

API Documentation at this revision

Comitter:
el15pjt
Date:
Wed Apr 27 09:09:55 2016 +0000
Parent:
7:14cfb0df30e6
Child:
9:bc259fc22fa2
Commit message:
Prior to tidying;

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Apr 25 10:08:05 2016 +0000
+++ b/main.cpp	Wed Apr 27 09:09:55 2016 +0000
@@ -6,11 +6,13 @@
 
 #include "main.h"
 #include "SDFileSystem.h"
-Serial serial(USBTX, USBRX);  // for PC debug
+//Serial serial(USBTX, USBRX);  // for PC debug
 
 
 int main()
 {
+    int d = 0;
+    int myarray[9];
     setup();
     lcd.init(); // Initiate LCD
     /*
@@ -45,9 +47,9 @@
            int r5;
            int r6;
            int r7;
-           int offset; // create suitable variables to store the data in the file
-           float bright;
-           float value;
+           int offset;
+          float bright;
+        float value;
            int i;
 
            // in this example, we keep reading (using fscanf) until we reach
@@ -62,9 +64,10 @@
        }
     }
     */
+
     while(1) {
 
-        if (g_sw1_flag) {
+        if (g_sw1_flag) { /// Event triggered inturupt to call the menu and reset page numbers
             g_sw1_flag = 0;
             page = 0;
             subpage = 0;
@@ -73,6 +76,7 @@
         }
 
         if (g_timer_flag_srf02) {
+
             g_timer_flag_srf02 = 0;  // if it has, clear the flag
             if (units == METRIC) {
                 distance = srf02.getDistanceCm();
@@ -82,41 +86,32 @@
                 distance = distance -(offset*c);
             }
 
-
-
-
-
-
-
-
-            if (d == 9) {
+            if (d == 10) {
                 d = 0;
             } else {
                 d++;
             }
             myarray[d] = distance;
-            totaldistance = 0;
-            for (i = 0; i < 10; i++) {
-                totaldistance = totaldistance+myarray[i];
+            int totaldistance = 0;
+            for (int i = 0; i < 9; i++) {
+                int totaldistance = totaldistance+myarray[i];
             }
-            avgdistance = totaldistance;
+            avgdistance = totaldistance/9;
         }
 
-
-
-
-
-
-
-
         setalert();
         lcdoutput();
-        setbuzzer();
+        if (!alert == 0) {
+            if (buzz_flag == 0) {
+                setbuzzer();
+            }
+        }
         setleds();
         sleep();
     }
 }
 
+
 void lcdoutput()
 {
     /**
@@ -139,25 +134,38 @@
 
         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,3);
-                lcd.printString(buffer2,12,2);
+                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,3);
-                lcd.printString(buffer2,12,2);
+                lcd.printString(buffer3,4,2);
+                lcd.printString(buffer2,12,1);
+                lcd.printString(buffer4,0,5);
                 lcd.setBrightness(0);
                 break;
         }
@@ -170,34 +178,35 @@
         lcd.clear();
 
         if (units == METRIC) {
-            sprintf(buffer,"%i Cm",distance);
+            sprintf(buffer,"%0.2f Cm",avgdistance);
             sprintf(buffer1,"****RANGE!****");
             sprintf(buffer2,"DISTANCE");
-            sprintf(buffer3,"%0.2f",avgdistance);
+
             sprintf(buffer4,"Menu");
 
         } else {
-            sprintf(buffer,"%i Inches",distance);
+            sprintf(buffer,"%0.2f Inches",avgdistance);
             sprintf(buffer1,"****RANGE!****");
             sprintf(buffer2,"***DISTANCE***");
-            sprintf(buffer2,"Menu");
+            sprintf(buffer4,"Menu");
         }
         lcd.printString(buffer,25,2);
         lcd.printString(buffer1,0,0);
         lcd.printString(buffer2,16,1);
         lcd.printString(buffer4,0,5);
-        lcd.printString(buffer3,0,3);
+
 
-        float i = (r7/84);
-        float distbar = (distance*i);
+        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); //    MOVE BAR UP!!!!!!!!!!!!!!!!!!!!!!!!!
+        lcd.drawRect(0,29,distbar,7,1); //
         lcd.refresh();
 
     }
 
 }
 
+
 void setalert()
 {
     /** A fuction used to determin the alert level given a range with the use of IF statments
@@ -206,20 +215,21 @@
     @returns alert
     */
 
-    if (distance >= (r6*c) && distance < (r7*c)) {  // r6 150 and r7 200
-        alert = 1; /// alert 1 distance between preset 150Cm to 200Cm
-    } else if (distance >= (r5*c) && distance  < (r6*c)) {
+    if (avgdistance >= (r6*c) && avgdistance < (r7*c)) {  // r6 150 and r7 200
+        alert = 1; /// alert 1 avgdistance between preset 150Cm to 200Cm
+    } else if (avgdistance >= (r5*c) && avgdistance  < (r6*c)) {
         alert = 2; /// alert 2 when between preset 90Cm to 150Cm
-    } else if (distance >= (r4*c) && distance < (r5*c)) {
-        alert = 3; /// alert 3 when distance between 60Cm to 90Cm
-    } else if (distance >= (r3*c) && distance < (r4*c)) {
-        alert = 4; /// alert 4 when distance between 40Cm and 60Cm
-    } else if (distance >= (r2*c) && distance < (r3*c)) {
-        alert = 5; ///alert 5 when distance between 20Cm and 40m
-    } else if (distance >= (r1*c) && distance <= (r2*c)) { //r1 3 and r2 20
-        alert = 6; ///alert 6 when distance between 1 and 20
-    } else if (distance <=(r1*c)) {
-        alert = 7; ///alert 7 when distance below 1Cm
+    } else if (avgdistance >= (r4*c) && avgdistance < (r5*c)) {
+        alert = 3; /// alert 3 when avgdistance between 60Cm to 90Cm
+    } else if (avgdistance >= (r3*c) && avgdistance < (r4*c)) {
+        alert = 4; /// alert 4 when avgdistance between 40Cm and 60Cm
+    } else if (avgdistance >= (r2*c) && avgdistance < (r3*c)) {
+        alert = 5; ///alert 5 when avgdistance between 20Cm and 40m
+    } else if (avgdistance >= (r1*c) && avgdistance <= (r2*c)) { //r1 3 and r2 20
+        alert = 6; ///alert 6 when avgdistance between 1 and 20
+    } else if (avgdistance <=(r1*c)) {
+        alert = 7; ///alert 7 when avgdistance below 1Cm
+        check_flag = 1;
     } else {
         alert = 0; /// alert 0 all else
     }
@@ -259,32 +269,28 @@
 
 void setbuzzer()
 {
-    int beat;
     /**
     control the PWM to drive the buzzer
     @param buzzer.period frequncy 1KHz
     @param buzzer duty cycle equal on/off max volume
     @param Alertlevel[alert].toneon controls how long the tone will last depending on alert
     */
-    if (g_timer_flag_tone) {
-        g_timer_flag_tone = 1;
-        if (beat == 10) {
-            beat = 0;
-        } else {
-            beat++;
-        }
-
-
+    buzzer.period (1.0/1000.0);
+    buzzer = 0.5;
+    buzzoff.attach(&flip, Alertlevel[alert].toneon);
+}
 
-        if (Alertlevel[alert].toneon < beat) {
-            buzzer.period (1/10000);
-            buzzer = 0.5;
-        } else {
-            buzzer = 0.0;
-        }
+void flip()
+{
+    buzz_flag = 1;
+    buzzer = 0.0;
+    buzzon.attach(&buzzflag,Alertlevel[alert].toneoff);
+}
 
-
-    }
+void buzzflag()
+{
+    buzz_flag = 0;
+    return;
 }
 
 void backlight ()
@@ -347,7 +353,7 @@
                     sprintf(buffer2,"*****MENU*****");
                     sprintf(buffer1,"BACKLIGHT");
                     sprintf(buffer3,"%.0f%%",bright*100);
-                    sprintf(buffer4,"Next       Adj");
+                    sprintf(buffer4,"NEXT       ADJ");
                     lcd.printString(buffer2,0,0);
                     lcd.printString(buffer1,0,1);
                     lcd.printString(buffer3,0,2);
@@ -370,7 +376,7 @@
                     length2 = sprintf(buffer2,"*****MENU*****");
                     length1 = sprintf(buffer1,"OFFSET");
                     length3 = sprintf(buffer3,"%i",offset);
-                    sprintf(buffer4,"Next       Adj");
+                    sprintf(buffer4,"NEXT       ADJ");
                     lcd.printString(buffer2,0,0);
                     lcd.printString(buffer1,0,1);
                     lcd.printString(buffer3,0,2);
@@ -400,15 +406,29 @@
                 }
                 sprintf(buffer2,"*****MENU*****");
                 sprintf(buffer1,"UNITS");
-                sprintf(buffer4,"Next       Adj");
+                sprintf(buffer4,"NEXT       ADJ");
                 lcd.printString(buffer2,0,0);
                 lcd.printString(buffer1,0,1);
                 lcd.printString(buffer4,0,5);
                 lcd.refresh();
 
                 break;
+            case 3:
+                if (g_sw2_flag) {
+                    g_sw2_flag = 0;  // if it has, clear the flag
+                    check_flag =0;
+                }
+                length2 = sprintf(buffer3,"*****MENU*****");
+                length3 = sprintf(buffer1,"CLEAR");
+                length3 = sprintf(buffer2,"COLLISION");
+                sprintf(buffer4,"NEXT       YES");
+                lcd.printString(buffer3,0,0);
+                lcd.printString(buffer1,0,1);
+                lcd.printString(buffer2,0,2);
+                lcd.printString(buffer4,0,5);
 
-            case 3:
+                break;
+            case 4:
 
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;  // if it has, clear the flag
@@ -417,7 +437,7 @@
                 length2 = sprintf(buffer3,"*****MENU*****");
                 length3 = sprintf(buffer1,"RANGE");
                 length3 = sprintf(buffer2,"PARAMETERS");
-                sprintf(buffer4,"Next       Adj");
+                sprintf(buffer4,"NEXT       ADJ");
                 lcd.printString(buffer3,0,0);
                 lcd.printString(buffer1,0,1);
                 lcd.printString(buffer2,0,2);
@@ -464,8 +484,6 @@
                 return;
         }
     }
-    // lcd.refresh();
-
 }
 void submenu()
 {
@@ -491,7 +509,7 @@
                 length3 = sprintf(buffer2,"RANGE");
                 length3 = sprintf(buffer3,"PARAMETERS");
                 length4 = sprintf(buffer4,"1Cm  to  %iCm",r2);
-                sprintf(buffer,"Next       Adj");
+                sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
                 lcd.printString(buffer3,0,2);
@@ -514,7 +532,7 @@
                 sprintf(buffer2,"RANGE");
                 sprintf(buffer3,"PARAMETERS");
                 sprintf(buffer4,"%iCm  to  %iCm",r2,r3);
-                sprintf(buffer,"Next       Adj");
+                sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
                 lcd.printString(buffer3,0,2);
@@ -537,7 +555,7 @@
                 sprintf(buffer2,"RANGE");
                 sprintf(buffer3,"PARAMETERS");
                 sprintf(buffer4,"%iCm  to  %iCm",r3,r4);
-                sprintf(buffer,"Next       Adj");
+                sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
                 lcd.printString(buffer3,0,2);
@@ -560,7 +578,7 @@
                 sprintf(buffer2,"RANGE");
                 sprintf(buffer3,"PARAMETERS");
                 sprintf(buffer4,"%iCm to %iCm",r4,r5);
-                sprintf(buffer,"Next       Adj");
+                sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
                 lcd.printString(buffer3,0,2);
@@ -582,7 +600,7 @@
                 length3 = sprintf(buffer2,"RANGE");
                 length3 = sprintf(buffer3,"PARAMETERS");
                 length3 = sprintf(buffer4,"%iCm to %iCm",r5,r6);
-                sprintf(buffer,"Next       Adj");
+                sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
                 lcd.printString(buffer3,0,2);
@@ -603,7 +621,7 @@
                 length2 = sprintf(buffer1,"*****MENU*****");
                 length3 = sprintf(buffer2,"RANGE");
                 length3 = sprintf(buffer3,"PARAMETERS");
-                sprintf(buffer,"Next       Adj");
+                sprintf(buffer,"NEXT       ADJ");
                 length3 = sprintf(buffer4,"%iCm to %iCm",r6,r7);
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
@@ -623,16 +641,15 @@
 {
     ticker.attach(&timer_isr_led,0.35); /// Attach the ticker for the flashig LEDs
     ticker_srf02.attach(&timer_isr_srf02,0.1); /// Attach the ticker for collecting a range reading
-    ticker_tone.attach(&timer_isr_tone,1); /// Attach the ticker which controls the off time of the buzzer 0.1 = 10 beats per second
+    //  ticker_tone.attach(&timer_isr_tone,0.1); /// Attach the ticker which controls the off time of the buzzer 0.1 = 10 beats per second
     ticker_standby.attach(&timer_isr_standby,3.0);
     sw1.rise(&sw1_isr); /// sw1_isr called when button presed on the rising edge
     sw2.rise(&sw2_isr); /// sw2_isr called when button presed on the rising edge
 
-    /**Set up LEDs switches and LEDS
-    @param r_led 1 or 0
-    @param g_led 1 or 0
-    @param b_led 1 or 0
-    */
+
+    r_led = 1;
+    b_led = 1;
+    g_led = 1;
     rr_led = 0;
     a_led = 0;
     gg_led = 0;
--- 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