Level 2 Project Range Device

Dependencies:   N5110 SDFileSystem SRF02 TMP102 mbed

Files at this revision

API Documentation at this revision

Comitter:
el15pjt
Date:
Wed May 04 14:05:07 2016 +0000
Parent:
8:fe6ebe807b9d
Child:
10:c9f3c22368f1
Commit message:
BUZZER needs doing arrange code finish off comments

Changed in this revision

N5110.lib Show annotated file Show diff for this revision Revisions of this file
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/N5110.lib	Wed Apr 27 09:09:55 2016 +0000
+++ b/N5110.lib	Wed May 04 14:05:07 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/eencae/code/N5110/#ba8addc061ea
+http://mbed.org/users/eencae/code/N5110/#a04246b4de38
--- a/main.cpp	Wed Apr 27 09:09:55 2016 +0000
+++ b/main.cpp	Wed May 04 14:05:07 2016 +0000
@@ -6,65 +6,49 @@
 
 #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];
+    int myarray[5] {9,9,9,9,9}; /// initilised to any possitive integer to prevent random values at start up triggering an alert
     setup();
     lcd.init(); // Initiate LCD
-    /*
-        sprintf(buffer,"ELEC 2645");
-        sprintf(buffer1,"Project Ranger");
-        sprintf(buffer2,"Phil Thompson");
-        sprintf(buffer3,"SID 200971914 ");
-        lcd.printString(buffer,0,0);
-        lcd.printString(buffer1,0,1);
-        lcd.printString(buffer2,0,2);
-        lcd.printString(buffer3,0,3);
-        wait (3);
-        */
-    /*
+
+    sprintf(buffer,"ELEC 2645");
+    sprintf(buffer1,"Project Ranger");
+    sprintf(buffer2,"Phil Thompson");
+    sprintf(buffer3,"SID 200971914 ");
+    lcd.printString(buffer,0,0);
+    lcd.printString(buffer1,0,1);
+    lcd.printString(buffer2,0,2);
+    lcd.printString(buffer3,0,3);
+    wait (3);
+
     serial.baud(115200);  // full-speed!
-    serial.printf("#### SD Card Example #####\n");
+    serial.printf("#### SD TESTING #####\n");
     FILE *fp; // this is our file pointer
     wait(1);
-    {
-       /////////////////////// Reading from file example ////////////////////////
+
+
+
+/////////////////////// Reading from file example ////////////////////////
 
-       // now open file for reading...note the 'r'
-       fp = fopen("/sd/settings.txt", "r");
-       if (fp == NULL) {  // if it can't open the file then print error message
-           serial.printf("Error! Unable to open file!\n");
-       } else {
-           serial.printf("Reading file....\n");
-           int r1;
-           int r2;
-           int r3;
-           int r4;
-           int r5;
-           int r6;
-           int r7;
-           int offset;
-          float bright;
-        float value;
-           int i;
+    // now open file for reading...note the 'r'
+    fp = fopen("/sd/settings.txt", "r");
+    if (fp == NULL) {  // if it can't open the file then print error message
+        serial.printf("Error! Unable to open file!\n");
+    } else {
+        serial.printf("Reading file....\n");
 
-           // in this example, we keep reading (using fscanf) until we reach
-           // the 'end of file'. Note we use the address operator & to write
-           // to the variables. Also the format of the string must match what
-           // is in the file
-           while (fscanf(fp, "%d,%f", &i, &value) != EOF) {
-               serial.printf("%d,%f\n",i,value);
-           }
-           serial.printf("Done.\n");
-           fclose(fp);  // ensure you close the file after reading
-       }
+        while (fscanf(fp, "%f,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,",&bright,&units,&offset,&check_flag,&r1,&r2,&r3,&r4,&r5,&r6,&r7) != EOF) {
+            serial.printf("%f,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i, \n",bright,units,offset,check_flag,r1,r2,r3,r4,r5,r6,r7);
+        }
+        serial.printf("Done.\n");
+        fclose(fp);  // ensure you close the file after reading
     }
-    */
-
+    lcd.setBrightness(bright);
+    wait (3);
     while(1) {
 
         if (g_sw1_flag) { /// Event triggered inturupt to call the menu and reset page numbers
@@ -76,42 +60,47 @@
         }
 
         if (g_timer_flag_srf02) {
-
             g_timer_flag_srf02 = 0;  // if it has, clear the flag
-            if (units == METRIC) {
+            if (units == 1) {
                 distance = srf02.getDistanceCm();
                 distance = distance-(offset*c);
             } else {
                 distance = srf02.getDistannceInch();
-                distance = distance -(offset*c);
-            }
+                distance = distance -(offset*c); //MAYBE MOVE C TO OFSET SETTING
+            }// close else breaket
+        } // close if inteurrupt bracket
 
-            if (d == 10) {
-                d = 0;
-            } else {
-                d++;
-            }
-            myarray[d] = distance;
-            int totaldistance = 0;
-            for (int i = 0; i < 9; i++) {
-                int totaldistance = totaldistance+myarray[i];
-            }
-            avgdistance = totaldistance/9;
+        if (d == 4) {
+            d = 0;
+        } else {
+            d++;
         }
 
+        myarray[d] = distance;
+        // serial.printf("ARRAY ELEMENT = %i", d);
+        // serial.printf("myarray %i", myarray[d]);
+        totaldistance =0;
+        for (int i = 0; i < 6; i++) {
+            totaldistance = totaldistance + myarray[i];
+        }
+        avgdistance = (totaldistance/5);
+
+        //   serial.printf("TOATAL DISTANCE %i\n", totaldistance);
+        // serial.printf("DISTANCE %i\n", distance);
+        //   serial.printf("AVERAGE DISTANCE %f\n", avgdistance);
         setalert();
+        //  serial.printf("ALERT LEVEL %i\n", alert);
         lcdoutput();
-        if (!alert == 0) {
-            if (buzz_flag == 0) {
-                setbuzzer();
-            }
-        }
+        //     if (alert !=0) {
+        //       if (buzz_flag == 0) {
+        //         setbuzzer();
+        //   }
+        // }
         setleds();
         sleep();
     }
 }
 
-
 void lcdoutput()
 {
     /**
@@ -123,98 +112,94 @@
 
     // if alert == 0 no need to display range path is clear
     if (alert == 0) {
+        lcd.clear();
         if (g_timer_flag_standby) {
             g_timer_flag_standby = 0;
-            T = tmp102.get_temperature();
+            Traw = tmp102.get_temperature();
             standby++;
-            if (standby >3) {
-                standby = 3;
+            if (standby >2) {
+                standby = 2;
             }
         }
-
         switch (standby) {
+            case 0:
+                if (check_flag == 1) {
+                    sprintf(buffer5,"COLLISIONCHECK");
+                }
+                sprintf(buffer,"**PATH CLEAR**");
+                lcd.printString(buffer,0,5);
+                lcd.printString(buffer,0,0);
+                lcd.refresh();
+                break;
             case 1:
                 if (check_flag == 1) {
-                    sprintf(buffer4,"COLLISIONCHECK");
+                    sprintf(buffer5,"COLLISIONCHECK");
+                    lcd.printString(buffer5,0,5);
                 }
-                lcd.clear();
-                sprintf(buffer,"**PATH CLEAR**");
-                lcd.printString(buffer,0,0);
-                lcd.printString(buffer4,0,5);
+                if (units == 0) {
+                    T = (Traw*1.8000)+32.00;
+                    sprintf(buffer3,"TEMP = %.2fF",T);
+                    sprintf(buffer2,"TEMPERATER");
+                } else {
+                    T=Traw;
+                    sprintf(buffer3,"TEMP = %.2fC",T);
+                    sprintf(buffer2,"TEMPERATER");
+                }
+                lcd.printString(buffer3,4,3);
+                lcd.printString(buffer2,12,2);
                 lcd.refresh();
                 break;
             case 2:
                 if (check_flag == 1) {
-                    sprintf(buffer4,"COLLISIONCHECK");
+                    sprintf(buffer5,"COLLISIONCHECK");
+                    lcd.printString(buffer5,0,5);
                 }
-                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");
+                if (units == 0) {
+                    T = (Traw*1.8000)+32.00;
+                    sprintf(buffer3,"TEMP = %.2fF",T);
+                    sprintf(buffer2,"TEMPERATER");
+                } else {
+                    T=Traw;
+                    sprintf(buffer3,"TEMP = %.2fC",T);
+                    sprintf(buffer2,"TEMPERATER");
                 }
-                lcd.clear();
-                sprintf(buffer3,"TEMP = %.2f",T);
-                sprintf(buffer2,"TEMPERATER");
+                lcd.printString(buffer3,4,3);
+                lcd.printString(buffer2,12,2);
                 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);
+        } //close switch
 
 
-        float h = (r7/84);
-        float distbar = (avgdistance*h);
+    } else { //If alert isn't 0 then the distance is to be dispayed alonng with the the distance bar
+        lcd.setBrightness(bright);
+        standby = 0;
+        lcd.clear();
+        if (units == 1) {
+            sprintf(buffer2,"%0.2f Cm",avgdistance);
+        } else {
+            sprintf(buffer2,"%0.2f In",avgdistance);
+        }
+        sprintf(buffer,"****RANGE!****");
+        sprintf(buffer1,"DISTANCE");
+        sprintf(buffer4,"Menu");
+        lcd.printString(buffer2,25,2);
+        lcd.printString(buffer,0,0);
+        lcd.printString(buffer1,16,1);
+        lcd.printString(buffer4,0,5);
+        int h;
+        h = (84/r7*c); ///Maps length of bar to largest set range r7
+        distbar = (avgdistance*h)-2;
         //drawRect(int x0,int y0,int width,int height,int fill);
         lcd.drawRect(0,29,distbar,7,1); //
+        serial.printf("H = %i, r7 = %i",h,r7);
+        serial.printf("distbar %f",distbar);
         lcd.refresh();
-
     }
-
 }
 
-
 void setalert()
 {
-    /** A fuction used to determin the alert level given a range with the use of IF statments
-    @param distance The distance read from sensor
-    @param alert The level that distance falls with in 0 -7
-    @returns alert
-    */
-
     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)) {
@@ -229,6 +214,9 @@
         alert = 6; ///alert 6 when avgdistance between 1 and 20
     } else if (avgdistance <=(r1*c)) {
         alert = 7; ///alert 7 when avgdistance below 1Cm
+        if (check_flag ==0) {
+            save();
+        }
         check_flag = 1;
     } else {
         alert = 0; /// alert 0 all else
@@ -264,7 +252,6 @@
         a_led = Alertlevel[alert].sa_led;
         gg_led = Alertlevel[alert].sgg_led;
     }
-
 }
 
 void setbuzzer()
@@ -276,7 +263,7 @@
     @param Alertlevel[alert].toneon controls how long the tone will last depending on alert
     */
     buzzer.period (1.0/1000.0);
-    buzzer = 0.5;
+    buzzer = 0.2;
     buzzoff.attach(&flip, Alertlevel[alert].toneon);
 }
 
@@ -284,7 +271,7 @@
 {
     buzz_flag = 1;
     buzzer = 0.0;
-    buzzon.attach(&buzzflag,Alertlevel[alert].toneoff);
+    buzzon.attach(&buzzflag, Alertlevel[alert].toneoff);
 }
 
 void buzzflag()
@@ -323,20 +310,15 @@
     g_timer_flag_srf02 = 1;   /** set flag in ISR by ticker_srf02 @param g_timer_flag_srf02 0 or 1 */
 }
 
-void timer_isr_tone()
-{
-    g_timer_flag_tone = 1; /** set flag in ISR by ticker_tone @param g_timer_flag_tone 0 or 1 */
-}
 void timer_isr_standby()
 {
     g_timer_flag_standby = 1; /** set flag in ISR by ticker_tone @param g_timer_flag_tone 0 or 1 */
 }
 
+
 void menu()
 {
     while(1) {
-
-
         if (g_sw1_flag) {
             g_sw1_flag = 0;
             page++; /// Moves page
@@ -348,154 +330,155 @@
                     g_sw2_flag = 0;  // if it has, clear the flag
                     backlight();
                     lcd.clear();
-                } else {
-                    int lightbar = bright*84;
-                    sprintf(buffer2,"*****MENU*****");
-                    sprintf(buffer1,"BACKLIGHT");
-                    sprintf(buffer3,"%.0f%%",bright*100);
-                    sprintf(buffer4,"NEXT       ADJ");
-                    lcd.printString(buffer2,0,0);
-                    lcd.printString(buffer1,0,1);
-                    lcd.printString(buffer3,0,2);
-                    lcd.printString(buffer4,0,5);
-                    lcd.drawRect(0,26,lightbar,7,1);  // move bar up!!!!!!!!!!!!!!!!
-                    lcd.refresh();
-
                 }
+                int lightbar = bright*84;
+                sprintf(buffer1,"BACKLIGHT");
+                sprintf(buffer2,"%.0f%%",bright*100);
+                lcd.drawRect(0,26,lightbar,7,1);  // move bar up!!!!!!!!!!!!!!!!
+                lcd.printString(buffer1,0,1);
+                lcd.printString(buffer2,0,2);
+                sprintf(buffer4,"NEXT       ADJ");
+                lcd.printString(buffer4,0,5);
+                lcd.refresh();
                 break;
-
             case 1:
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;  // if it has, clear the flag
                     if (offset == 20) {
                         offset = 0;
+                        lcd.clear();
                     } else {
                         offset += 1;
                     }
-                } else {
-                    length2 = sprintf(buffer2,"*****MENU*****");
-                    length1 = sprintf(buffer1,"OFFSET");
-                    length3 = sprintf(buffer3,"%i",offset);
-                    sprintf(buffer4,"NEXT       ADJ");
-                    lcd.printString(buffer2,0,0);
-                    lcd.printString(buffer1,0,1);
-                    lcd.printString(buffer3,0,2);
-                    lcd.printString(buffer4,0,5);
-                    lcd.refresh();
                 }
-
+                sprintf(buffer1,"OFFSET");
+                sprintf(buffer2,"%i",offset);
+                lcd.printString(buffer1,0,1);
+                sprintf(buffer4,"NEXT       ADJ");
+                lcd.printString(buffer4,0,5);
                 break;
-
             case 2:
+                sprintf(buffer1,"UNITS");
+                lcd.printString(buffer1,0,1);
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;  // if it has, clear the flag
-                    if (units == METRIC) {
-                        units = IMPERIAL;
-                        c= 0.3937;
+                    if (units == 1) {
+                        units = 0;
+                        c = 0.3937;
+                        sprintf(buffer2,"IMPERIAL");
+                        lcd.clear();
                     } else {
-                        units = METRIC;
+                        units = 1;
+                        sprintf(buffer2,"METRIC");
                         c = 1;
+                        lcd.clear();
                     }
                 }
-                if (units == METRIC) {
-                    sprintf(buffer3,"METRIC");
-                    lcd.printString(buffer3,0,2);
-                } else {
-                    sprintf(buffer3,"IMPERIAL");
-                    lcd.printString(buffer3,0,2);
-                }
-                sprintf(buffer2,"*****MENU*****");
-                sprintf(buffer1,"UNITS");
                 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;
+                    lcd.clear();
                 }
-                length2 = sprintf(buffer3,"*****MENU*****");
-                length3 = sprintf(buffer1,"CLEAR");
-                length3 = sprintf(buffer2,"COLLISION");
-                sprintf(buffer4,"NEXT       YES");
-                lcd.printString(buffer3,0,0);
+                if (check_flag == 0) {
+                    sprintf(buffer1,"NO");
+                    sprintf(buffer2,"COLLISION");
+                    lcd.printString(buffer1,0,1);
+                    sprintf(buffer4,"NEXT     ");
+                } else {
+                    sprintf(buffer1,"CLEAR");
+                    sprintf(buffer2,"COLLISION");
+                    lcd.printString(buffer1,0,1);
+                    sprintf(buffer4,"NEXT     CLEAR");
+                }
+
+                lcd.printString(buffer4,0,5);
+                break;
+            case 4:
+                if (g_sw2_flag) {
+                    g_sw2_flag = 0;  // if it has, clear the flag
+                    bright = 1.0;
+                    offset = 0;
+                    units = 1;
+                    r1 = 03;/// Upper limit of alert 1
+                    r2 = 10;/// Upper limit of alert 2
+                    r3 = 20;/// Upper limit of alert 3
+                    r4 = 35;/// Upper limit of alert 4
+                    r5 = 50;/// Upper limit of alert 5
+                    r6 = 65;/// Upper limit of alert 6
+                    r7 = 80;/// Upper limit of alert 7
+                    lcd.clear();
+                    sprintf(buffer1,"SETTINGS");
+                    sprintf(buffer2,"RESET");
+                    lcd.printString(buffer1,0,1);
+                    lcd.printString(buffer2,0,2);
+                    wait(1);
+                    return;
+                }
+                lcd.clear();
+                sprintf(buffer1,"RESET");
+                sprintf(buffer2,"SETTINGS");
                 lcd.printString(buffer1,0,1);
                 lcd.printString(buffer2,0,2);
+                sprintf(buffer4,"NEXT      RESET");
                 lcd.printString(buffer4,0,5);
-
+                lcd.refresh();
                 break;
-            case 4:
-
+            case 5:
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;  // if it has, clear the flag
                     submenu();
                 }
-                length2 = sprintf(buffer3,"*****MENU*****");
-                length3 = sprintf(buffer1,"RANGE");
-                length3 = sprintf(buffer2,"PARAMETERS");
-                sprintf(buffer4,"NEXT       ADJ");
-                lcd.printString(buffer3,0,0);
+                sprintf(buffer1,"RANGE");
+                sprintf(buffer2,"PARAMETERS");
                 lcd.printString(buffer1,0,1);
-                lcd.printString(buffer2,0,2);
+                sprintf(buffer4,"EXIT       ADJ");
                 lcd.printString(buffer4,0,5);
-
                 break;
-
             default:
                 lcd.clear();
-                /*   //save();
-
-                ///////////////////// Writing list to file example //////////////////////
-
-                   // for this example, I'll create some numbers to write to file in a big list
-                   // a data logger for example will usually append to a file - at a reading
-                   // at the end rather than creating a new file
-                   fp = fopen("/sd/settinngs.txt", "a");
+                save ();
+                sprintf(buffer3,"    SAVING    ");
+                lcd.printString(buffer3,0,2);
+                sprintf(buffer4,"   SETTINGS   ");
+                lcd.printString(buffer4,0,3);
+                wait (1);
+                return;
+        }// switch bracket
+        sprintf(buffer,"*****MENU*****");
+        lcd.printString(buffer2,0,2);
+        lcd.printString(buffer,0,0);
+        lcd.refresh();
+    }//while braket
+}//functon bracket
 
-                   if (fp == NULL) {  // if it can't open the file then print error message
-                       serial.printf("Error! Unable to open file!\n");
-                   } else {  // opened file so can write
-                       serial.printf("Writing to file....");
-                       for(int i = 1; i <= 50; i++) {
-                           int r1;
-                           int r2;
-                           int r3;
-                           int r4;
-                           int r5;
-                           int r6;
-                           int r7;
-                           int offset; // create suitable variables to store the data in the file
-                           float bright;
-                           float dummy = 1000.0F/i;  // dummy variable
-                           fprintf(fp, "%d,%f\n",i,dummy);  // print formatted string to file (CSV)
-                       }
-                       serial.printf("Done.\n");
-                       fclose(fp);  // ensure you close the file after writing
-                   }
 
-                   // you can comment out the writing example to check that the writing has
-                   // worked - when you run it after commenting, it should still open the
-                   // file that exists on the SD card - assuming you didn't delete it!
-                */
-                return;
-        }
+void save()
+{
+    fp = fopen("/sd/settings.txt", "w");
+    if (fp == NULL) {  // if it can't open the file then print error message
+        serial.printf("Error! Unable to open file!\n");
+    } else {  // opened file so can write
+        serial.printf("Writing to file....");
+        fprintf(fp, "%f,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i",bright,units,offset,check_flag,r1,r2,r3,r4,r5,r6,r7); // ensure data type matches
+        serial.printf("Done.\n");
+        fclose(fp);  // ensure you close the file after writing
     }
 }
+
+
 void submenu()
 {
-
     while(1) {
-        /// innterupt used to shift page
+        /// interupt used to shift page
         if (g_sw1_flag) {
             g_sw1_flag = 0;
             subpage++;
         }
-        switch (subpage) {
-                ///interupt used to adjust range
+        switch (subpage) {  ///interupt used to adjust range
             case 0:
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;           // if it has, clear the flag
@@ -505,10 +488,10 @@
                         r2 = r2+1;
                     }
                 }
-                length2 = sprintf(buffer1,"*****MENU*****");
-                length3 = sprintf(buffer2,"RANGE");
-                length3 = sprintf(buffer3,"PARAMETERS");
-                length4 = sprintf(buffer4,"1Cm  to  %iCm",r2);
+                sprintf(buffer1,"*****MENU*****");
+                sprintf(buffer2,"RANGE");
+                sprintf(buffer3,"PARAMETERS");
+                sprintf(buffer4,"1Cm to %iCm",r2);
                 sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
@@ -516,9 +499,7 @@
                 lcd.printString(buffer4,0,3);
                 lcd.printString(buffer,0,5);
                 break;
-
             case 1:
-
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;           // if it has, clear the flag
                     if (r3 == r4) {
@@ -527,11 +508,10 @@
                         r3 += 1;
                     }
                 }
-
                 sprintf(buffer1,"*****MENU*****");
                 sprintf(buffer2,"RANGE");
                 sprintf(buffer3,"PARAMETERS");
-                sprintf(buffer4,"%iCm  to  %iCm",r2,r3);
+                sprintf(buffer4,"%iCm to %iCm",r2,r3);
                 sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
@@ -539,9 +519,7 @@
                 lcd.printString(buffer4,0,3);
                 lcd.printString(buffer,0,5);
                 break;
-
             case 2:
-
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;           // if it has, clear the flag
                     if (r4 == r5) {
@@ -550,11 +528,10 @@
                         r4 += 1;
                     }
                 }
-
                 sprintf(buffer1,"*****MENU*****");
                 sprintf(buffer2,"RANGE");
                 sprintf(buffer3,"PARAMETERS");
-                sprintf(buffer4,"%iCm  to  %iCm",r3,r4);
+                sprintf(buffer4,"%iCm to %iCm",r3,r4);
                 sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
@@ -562,9 +539,7 @@
                 lcd.printString(buffer4,0,3);
                 lcd.printString(buffer,0,5);
                 break;
-
             case 3:
-
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;           // if it has, clear the flag
                     if (r5 == r6) {
@@ -573,7 +548,6 @@
                         r5 += 1;
                     }
                 }
-
                 sprintf(buffer1,"*****MENU*****");
                 sprintf(buffer2,"RANGE");
                 sprintf(buffer3,"PARAMETERS");
@@ -586,7 +560,6 @@
                 lcd.printString(buffer,0,5);
                 break;
             case 4:
-
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;           // if it has, clear the flag
                     if (r6 == r7) {
@@ -595,11 +568,10 @@
                         r6 += 1;
                     }
                 }
-
-                length2 = sprintf(buffer1,"*****MENU*****");
-                length3 = sprintf(buffer2,"RANGE");
-                length3 = sprintf(buffer3,"PARAMETERS");
-                length3 = sprintf(buffer4,"%iCm to %iCm",r5,r6);
+                sprintf(buffer1,"*****MENU*****");
+                sprintf(buffer2,"RANGE");
+                sprintf(buffer3,"PARAMETERS");
+                sprintf(buffer4,"%iCm to %iCm",r5,r6);
                 sprintf(buffer,"NEXT       ADJ");
                 lcd.printString(buffer1,0,0);
                 lcd.printString(buffer2,0,1);
@@ -608,7 +580,6 @@
                 lcd.printString(buffer,0,5);
                 break;
             case 5:
-
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;           // if it has, clear the flag
                     if (r7 == 300) {
@@ -617,42 +588,37 @@
                         r7 += 1;
                     }
                 }
-
-                length2 = sprintf(buffer1,"*****MENU*****");
-                length3 = sprintf(buffer2,"RANGE");
-                length3 = sprintf(buffer3,"PARAMETERS");
-                sprintf(buffer,"NEXT       ADJ");
-                length3 = sprintf(buffer4,"%iCm to %iCm",r6,r7);
+                sprintf(buffer1,"*****MENU*****");
+                sprintf(buffer2,"RANGE");
+                sprintf(buffer3,"PARAMETERS");
+                sprintf(buffer,"EXIT       ADJ");
+                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);
                 lcd.printString(buffer,0,5);
                 break;
-
             default:
                 lcd.clear();
-                //  save();
                 return;
-        }
-    }
-}
+        }//switch breaket
+    }//while bracket
+}//function bracket
+
 void setup()
 {
     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,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);
+    ticker_srf02.attach(&timer_isr_srf02,0.1);/// Attach the ticker for collecting a range reading
+    ticker_standby.attach(&timer_isr_standby,5.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
-
-
-    r_led = 1;
-    b_led = 1;
-    g_led = 1;
-    rr_led = 0;
-    a_led = 0;
-    gg_led = 0;
-    sw2.mode(PullDown);
-    sw1.mode(PullDown);
+    r_led = 1; //Onboard leds
+    b_led = 1; //Onboard leds
+    g_led = 1; //Onboard leds
+    rr_led = 0; //PCB LEDS
+    a_led = 0; //PCB LEDS
+    gg_led = 0; //PCB LEDS
+    sw2.mode(PullDown); //Turns on use of the pulldown resistors for use with the PCB buttons
+    sw1.mode(PullDown); //Turns on use of the pulldown resistors for use with the PCB buttons
 }
\ No newline at end of file
--- a/main.h	Wed Apr 27 09:09:55 2016 +0000
+++ b/main.h	Wed May 04 14:05:07 2016 +0000
@@ -62,7 +62,6 @@
 */
 Ticker ticker;
 Ticker ticker_srf02;
-//Ticker ticker_tone;
 Ticker ticker_standby;
 Timeout buzzoff;
 Timeout buzzon;
@@ -89,7 +88,7 @@
 @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_led = 0, g_timer_flag_srf02 = 0; /** Flag rised by interupts*/
 volatile int g_timer_flag_standby = 0;
 volatile int buzz_flag = 0;
 /**
@@ -102,22 +101,30 @@
 @namespace  RangePresets
 @brief Preset range of the differant alert levels
 */
-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 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 */
-int alert;/*!< veriable to hold the current alert level */
-int distance;/*!< veriable to hold the distance read from the srf02 sensor */
-float bright = 1;/*!< veriable to hold the current LED backlight of the 5110 LCD */
-char units = METRIC;/*!< veriable to hold the current unit type set to METRIC as default */
-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;
-float c =1; /// convertion factor from Cm to inch
-int check_flag = 0;
-
+float Traw;
+int totaldistance;
+int r1 = 03;/// Upper limit of alert 1
+int r2 = 10;/// Upper limit of alert 2
+int r3 = 20;/// Upper limit of alert 3
+int r4 = 35;/// Upper limit of alert 4
+int r5 = 50;/// Upper limit of alert 5
+int r6 = 65;/// Upper limit of alert 6
+int r7 = 80;/// Upper limit of alert 7
+float avgdistance =0; // Averaged Distance vale from ten previous readings
+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
+int alert;/// veriable to hold the current alert level
+int distance;/// veriable to hold the distance read from the srf02 sensor
+float bright = 1.0;/// veriable to hold the current LED backlight of the 5110 LCD
+int units = 1;/// veriable to hold the current unit type set to METRIC as default
+//int length, length1, length2, length3, length4; //
+char buffer[14], buffer1[14], buffer2[14], buffer3[14], buffer4[14],buffer5[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14) not ended globale but reused frquently throuh out
+float T; /// Temperature value retured from TMP102 sensor
+int standby = 0; ///?????????????????????
+float c =1; /// convertion factor from Cm to inch 1 = metric no convertion
+int check_flag = 0; ///???????????
+float distbar;
 
 struct Alertlevel {
     char srr_led;  /// stead RED LED state
@@ -204,7 +211,7 @@
                     standby =0;
                     lcd.clear();
 
-                    if (units == METRIC) {
+                    if (units == 1) {
                         sprintf(buffer,"%0.2f Cm",avgdistance);
                         sprintf(buffer1,"****RANGE!****");
                         sprintf(buffer2,"DISTANCE");
@@ -231,10 +238,9 @@
 @endcode
 */
 void lcdoutput();
-
+void save();
 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
@@ -250,8 +256,6 @@
 @endcode
 */
 void backlight();
-void Getdistance();
-void init_K64F();
 void sw2_isr();
 void sw1_isr();
 void setup();
@@ -317,8 +321,6 @@
 @endcode*/
 void setleds();
 void setbuzzer();
-
-
 void menu();
 /**
 {
@@ -377,13 +379,13 @@
             case 2:
                 if (g_sw2_flag) {
                     g_sw2_flag = 0;  // if it has, clear the flag
-                    if (units == METRIC) {
-                        units = IMPERIAL;
+                    if (units == 1) {
+                        units = 0;
                     } else {
-                        units = METRIC;
+                        units = 1;
                     }
                 }
-                if (units == METRIC) {
+                if (units == 1) {
                     sprintf(buffer3,"METRIC");
                     lcd.printString(buffer3,0,2);
                 } else {
@@ -567,6 +569,5 @@
 void submenu();
 void save();
 void load();
-void GetDistance();
 
 #endif
\ No newline at end of file