First Draft, serial print change based on distance

Revision:
9:ada61082bbaa
Parent:
8:7e48229d678c
Child:
10:be53044119d1
diff -r 7e48229d678c -r ada61082bbaa main.cpp
--- a/main.cpp	Fri Jan 28 13:01:19 2022 +0000
+++ b/main.cpp	Fri Jan 28 17:12:01 2022 +0000
@@ -155,7 +155,8 @@
     
     // check which state we are in and see which the next state should be
     switch(state) {
-        case 0:
+        case 0:{
+        int sense = 1;
         lcd.clear();
         lcd.printString(" object at 0'",0,0);
         lcd.printString("   R + 60'",0,2);
@@ -163,11 +164,15 @@
         lcd.refresh();
             if (R == 1){
                 state = 1;}
-            else if (L == 1){
-                state = 5;}
             else state = 0;
-                break;
-        case 1:
+            
+             if (Start_flag == 1) {
+                Start_flag = 0;
+                object_sense1();
+            }
+
+                break;}
+        case 1:{
         lcd.clear();
         lcd.printString(" object at 60'",0,0);
         lcd.printString("   R + 60'",0,2);
@@ -175,11 +180,14 @@
         lcd.refresh();
             if (R == 1){
                 state = 2;}
-            else if (L == 1){
-                state = 0;}
             else state = 1;
-                break;
-        case 2:
+                break;}
+            
+            if (Start_flag == 1) {
+                Start_flag = 0;
+                object_sense2();
+            }
+        case 2:{
         lcd.clear();
         lcd.printString(" object at 120'",0,0);
         lcd.printString("   R + 60'",0,2);
@@ -187,11 +195,14 @@
         lcd.refresh();
             if (R == 1){
                 state = 3;}
-            else if (L == 1){
-                state = 1;}
             else state = 2;
-                break;
-        case 3:
+                break;}
+                
+            if (Start_flag == 1) {
+                Start_flag = 0;
+                object_sense3();
+            }
+        case 3:{
         lcd.clear();
         lcd.printString(" object at 180'",0,0);
         lcd.printString("   R + 60'",0,2);
@@ -199,11 +210,14 @@
         lcd.refresh();
             if (R == 1){
                 state = 4;}
-            else if (L == 1){
-                state = 2;}
             else state = 3;
-                break;
-        case 4:
+                break;}
+                
+            if (Start_flag == 1) {
+                Start_flag = 0;
+                object_sense4();
+            }
+        case 4:{
         lcd.clear();
         lcd.printString(" object at 240'",0,0);
         lcd.printString("   R + 60'",0,2);
@@ -211,26 +225,39 @@
         lcd.refresh();
             if (R == 1){
                 state = 5;}
-            else if (L == 1){
-                state = 3;}
             else state = 4;
-                break;
-         case 5:
+                break;}
+                
+            if (Start_flag == 1) {
+                Start_flag = 0;
+                object_sense5();
+            }
+         case 5:{
         lcd.clear();
         lcd.printString(" object at 300'",0,0);
         lcd.printString("   R + 60'",0,2);
         lcd.printString("   L - 60'",0,4);
         lcd.refresh();
             if (R == 1){
-                state = 0;}
-            else if (L == 1){
-                state = 4;}
+                state = 6;}
             else state = 5;
-                break;
-            default:
+                break;}
+            if (Start_flag == 1) {
+                Start_flag = 0;
+                object_sense6();
+            }
+        case 6:{
+            if (buffer1 - 10 <= glass[1] >= buffer1 + 10 and buffer2 - 10 <= glass[2] >= buffer2 + 10 and buffer3 - 10 <= glass[3] >= buffer3 + 10 and buffer4 - 10 <= glass[4] >= buffer4 + 10 and buffer5 - 10 <= glass[5] >= buffer5 + 10 and buffer6 - 10 <= glass[6] >= buffer6 + 10){       
+                 printf("glass");}
+            else{
+             printf("nothing");}
+             }
+             
+              
+            default:{
                 error("Invalid state");  //invalid state - call error routine
                 // or could jump to starting state i.e. state = 0
-                break;  
+                break;}
         }
         if (Back_flag == 1) {
             Back_flag = 0;
@@ -258,9 +285,11 @@
      
 void calibrate_object(){
      
+     sense = 0;
+     
      while(1)
     {
-        mu.checkDistance();     
+        mu.checkDistance();    
         
         if (Back_flag == 1) {
             Back_flag = 0;
@@ -270,21 +299,133 @@
         }
         }
         
+void object_sense1(){
+     
+        sense = 1;
+     
+        mu.checkDistance();
+            
+        }
+
+void object_sense2(){
+     
+        sense = 2;
+     
+        mu.checkDistance();
+            
+        }
+        
+void object_sense3(){
+     
+        sense = 3;
+     
+        mu.checkDistance();
+            
+        }
+        
+void object_sense4(){
+     
+        sense = 4;
+     
+        mu.checkDistance();
+            
+        }
+        
+void object_sense5(){
+     
+        sense = 5;
+     
+        mu.checkDistance();
+            
+        }
+        
+void object_sense6(){
+     
+        sense = 6;
+     
+        mu.checkDistance();
+            
+        }
+        
 void dist(int distance)
-
 {
+     printf("sense = %d", sense);
     // printf("Distance changed to %dmm\r\n", distance);
-
-     lcd.clear();
+    switch(sense){
+        case 0:{
+    
+            lcd.clear();
      
-     char buffer[14];
-     int length = sprintf(buffer,"%dmm", distance);
-     if (length <= 14)
+            char buffer[14];
+            int length = sprintf(buffer,"%dmm", distance);
+            if (length <= 14)
     
-     lcd.printString("set object to",0,0);
-     lcd.printString("    1000mm",0,1);
-     lcd.printString(    buffer,0,3);
-     lcd.refresh();
+            lcd.printString("set object to",0,0);
+            lcd.printString("    200mm",0,1);
+            lcd.printString(buffer,24,3);
+            lcd.refresh();
+            
+            break;}
+            
+        case 1:{
+        
+            printf("sens1");
+            char buffer1[14];
+            int length1 = sprintf(buffer1,"%dmm", distance);
+            if (length1 <= 14)
+            //printf("distance = %d", distance);
+            
+            break;}
+        case 2:{
+        
+            printf("sens2");
+            char buffer2[14];
+            int length2 = sprintf(buffer2,"%dmm", distance);
+            if (length2 <= 14)
+            //printf("distance = %d", distance);
+            
+            break;}
+        case 3:{
+        
+            printf("sens3");
+            char buffer3[14];
+            int length3 = sprintf(buffer3,"%dmm", distance);
+            if (length3 <= 14)
+            //printf("distance = %d", distance);
+            
+            break;}
+
+        case 4:{
+        
+            printf("sens4");
+            char buffer4[14];
+            int length4 = sprintf(buffer4,"%dmm", distance);
+            if (length4 <= 14)
+            //printf("distance = %d", distance);
+            
+            break;}
+            
+        case 5:{
+        
+            printf("sens5");
+            char buffer5[14];
+            int length5 = sprintf(buffer5,"%dmm", distance);
+            if (length5 <= 14)
+            //printf("distance = %d", distance);
+            
+            break;}
+            
+        case 6:{
+        
+            printf("sens6");
+            char buffer6[14];
+            int length6 = sprintf(buffer6,"%dmm", distance);
+            if (length6 <= 14)
+            //printf("distance = %d", distance);
+            
+            break;}
+
+        }         
     }
 
 /***************************************************************************//**