Psi Swarm robot library version 0.9

Dependents:   PsiSwarm_V9_Blank

Fork of PsiSwarmV9 by James Hilder

Revision:
17:bf614e28668f
Parent:
16:50686c07ad07
Child:
18:9204f74069b4
--- a/demo.cpp	Thu Jun 01 23:02:32 2017 +0000
+++ b/demo.cpp	Sun Jun 04 13:11:09 2017 +0000
@@ -82,7 +82,8 @@
 void Demo::start_demo_mode()
 {
     psi.debug("- Starting Demo Mode\n");
-    if(use_flash_basic == 1) top_menu = 7;
+    if(use_flash_basic == 1) top_menu = 8;
+    if((has_base_ir == 1 && base_ir_calibration_set != 1) || (has_base_colour_sensor == 1 && base_colour_calibration_set != 1)) top_menu = 7;
     demo_on = 1;
     display.set_backlight_brightness(bl_brightness * 0.01f);
     display.clear_display();
@@ -154,7 +155,7 @@
                             case 8: // PsiBasic Menu
                                 if(sub_menu == psi_basic_file_count) level = 0;
                                 break;
-                            case 7: //LED Menu
+                            case 1: //LED Menu
                                 if(sub_menu < 9) {
                                     if(led_state[sub_menu] == 0) led_state[sub_menu] = 3;
                                     else led_state[sub_menu]--;
@@ -202,15 +203,15 @@
                                 if(sub_menu == 13) level = 0;
                                 break;
                             case 2: // Sensors Menu
-                                if(sub_menu == 4 || sub_menu == 5) {
+                                if(sub_menu == 4 || sub_menu == 5 || sub_menu==6) {
                                     if(base_ir_index == 0) base_ir_index = 4;
                                     else base_ir_index --;
                                 }
-                                if(sub_menu > 5 && sub_menu < 9) {
+                                if(sub_menu > 6 && sub_menu < 10) {
                                     if(side_ir_index == 0) side_ir_index = 7;
                                     else side_ir_index --;
                                 }
-                                if(sub_menu == 12) level = 0;
+                                if(sub_menu == 13) level = 0;
                                 break;
                             case 3: // Motor Menu
                                 if(sub_menu == 0) {
@@ -257,6 +258,10 @@
                             case 5: // Info Menu
                                 if(sub_menu == 6) level = 0;
                                 break;
+                            case 7: // Calibration Menu
+                                if(sub_menu == 0) sensors.calibrate_base_sensors();
+                                if(sub_menu == 2) level = 0;
+                                break;
                             case 6: // Demo Menu
                                 if(sub_menu == 0) {
                                     if(demo_running == 0) {
@@ -379,15 +384,15 @@
 
                                 break;
                             case 2: // Sensors Menu
-                                if(sub_menu == 4 || sub_menu == 5) {
+                                if(sub_menu == 4 || sub_menu == 5 || sub_menu == 6) {
                                     if(base_ir_index == 4) base_ir_index = 0;
                                     else base_ir_index ++;
                                 }
-                                if(sub_menu > 5 && sub_menu < 9) {
+                                if(sub_menu > 6 && sub_menu < 10) {
                                     if(side_ir_index == 7) side_ir_index = 0;
                                     else side_ir_index ++;
                                 }
-                                if(sub_menu == 12) level = 0;
+                                if(sub_menu == 13) level = 0;
                                 break;
                             case 3: // Motor Menu
                                 if(sub_menu == 0) {
@@ -434,6 +439,10 @@
                             case 5: // Info Menu
                                 if(sub_menu == 6) level = 0;
                                 break;
+                            case 7: // Calibration Menu
+                                if(sub_menu == 0) sensors.calibrate_base_sensors();
+                                if(sub_menu == 2) level = 0;
+                                break;    
                             case 6: // Demo Menu
                                 if(sub_menu == 0) {
                                     if(demo_running == 0) {
@@ -493,8 +502,8 @@
                         if(top_menu == 0) {
                             top_menu = 9;
                         } else {
+                            top_menu --;
                             if(use_flash_basic == 0 && top_menu == 8) top_menu = 7;
-                            top_menu --;
                         }
                         break;
                     case 1:
@@ -504,7 +513,7 @@
                                 else sub_menu --;
                                 break;
                             case 2: //Sensors Menu
-                                if(sub_menu == 0) sub_menu = 12;
+                                if(sub_menu == 0) sub_menu = 13;
                                 else sub_menu --;
                                 break;
 
@@ -536,7 +545,8 @@
                 switch(level) {
                     case 0:
                         top_menu ++;
-                        if((top_menu - use_flash_basic) > 7) top_menu = 0;
+                        if(top_menu == 8 && use_flash_basic == 0) top_menu = 9;
+                        if((top_menu) > 9) top_menu = 0;
                         break;
                     case 1:
                         switch(top_menu) {
@@ -545,7 +555,7 @@
                                 else sub_menu ++;
                                 break;
                             case 2: //Sensors Menu
-                                if(sub_menu == 12) sub_menu = 0;
+                                if(sub_menu == 13) sub_menu = 0;
                                 else sub_menu ++;
                                 break;
                             case 3: //Motor Menu
@@ -600,7 +610,7 @@
                     strcpy(topline,"---CODE DEMOS---");
                     break;
                 case 7:
-                    strcpy(topline,"-MOTOR CALIBRATE");
+                    strcpy(topline,"---CALIBRATION--");
                     break;
                 case 8:
                     strcpy(topline,"---PSI BASIC----");
@@ -699,31 +709,36 @@
                             sprintf(bottomline,"BIR%dR:%d",base_ir_index+1,sensors.get_illuminated_base_ir_value(base_ir_index));
                             break;
                         case 6:
+                            sensors.store_illuminated_base_ir_values();
+                            sprintf(bottomline,"BIC%dR:%1.3f",base_ir_index+1,sensors.get_calibrated_base_ir_value(base_ir_index));
+                            break;
+                        case 7:
                             sensors.store_background_raw_ir_values();
                             sprintf(bottomline,"SIR%dB:%d",side_ir_index+1,sensors.get_background_raw_ir_value(side_ir_index));
                             break;
-                        case 7:
+                        case 8:
                             sensors.store_illuminated_raw_ir_values();
                             sprintf(bottomline,"SIR%dR:%d",side_ir_index+1,sensors.get_illuminated_raw_ir_value(side_ir_index));
                             break;
-                        case 8:
+                        case 9:
                             sprintf(bottomline,"SIR%dD:%3.1f",side_ir_index+1,0.0);
                             break;
-                        case 9:
+                        case 10:
                             if(ultrasonic_distance_updated == 1) {
                                 sprintf(bottomline,"USONIC:%3dcm",ultrasonic_distance);
                             } else sprintf(bottomline,"USONIC:---------");
                             sensors.update_ultrasonic_measure();
                             break;
-                        case 10:
+                        case 11:
                             sensors.store_line_position();
                             if(line_found == 1)sprintf(bottomline,"LINE:%1.3f",line_position);
                             else sprintf(bottomline,"LINE:---------");
                             break;
-                        case 11:
+                      
+                        case 12:
                             sprintf(bottomline,"COLOUR: %s",colour.get_colour_string(colour.detect_colour_once()));
                             break;
-                        case 12:
+                        case 13:
                             sprintf(bottomline,"EXIT");
                             break;
                     }
@@ -826,13 +841,13 @@
                     }
                     break;
                 case 7:
-                    strcpy(topline,"-MOTOR CALIBRATE");
+                    strcpy(topline,"---CALIB. MENU--");
                     switch(sub_menu) {
                         case 0:
-                            sprintf(bottomline,"RUN A3 TEST");
+                            sprintf(bottomline,"BASE SENSOR");
                             break;
                         case 1:
-                            sprintf(bottomline,"ENTER VALUE");
+                            sprintf(bottomline,"MOTOR");
                             break;
                         case 2:
                             sprintf(bottomline,"EXIT");