候補

Dependencies:   MotorDriver_SU mbed

Files at this revision

API Documentation at this revision

Comitter:
12f2027a
Date:
Mon Dec 01 04:46:42 2014 +0000
Commit message:
center2 ??????

Changed in this revision

MotorDriver_SU.lib Show annotated file Show diff for this revision Revisions of this file
center2.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 41b88efe25c9 MotorDriver_SU.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MotorDriver_SU.lib	Mon Dec 01 04:46:42 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/NT32/code/MotorDriver_SU/#e6c391eb8fac
diff -r 000000000000 -r 41b88efe25c9 center2.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/center2.cpp	Mon Dec 01 04:46:42 2014 +0000
@@ -0,0 +1,454 @@
+#include "mbed.h"
+#include "MotorDriver_SU.h"
+ 
+ 
+DigitalIn sw(P0_1, PullUp);
+DigitalOut led(P1_28);
+AnalogIn   sw1(P0_22);
+AnalogIn   sw2(P0_12);
+AnalogIn   sw3(P0_16);
+AnalogIn   sw4(P0_11);
+AnalogIn   sw5(P0_13);
+ 
+MotorDriver_SU motor(MOTOR_DOUBLE);
+MotorDriver_SU lift(MOTOR_SINGLE);
+ 
+ 
+int main( ){
+    float hoge1;
+    float hoge2;
+    float hoge3;
+    float hoge4;
+    float hoge5;
+    int position = 0;
+    int AI = 0;//カーブの方向判定
+    int updown = 0;//リフトの向き判定
+    int R = 0;
+    int L = 0;
+    
+//11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111    
+        while(1){
+        
+        hoge1 = sw1.read();
+        hoge2 = sw2.read();
+        hoge3 = sw3.read();
+        hoge4 = sw4.read();
+        hoge5 = sw5.read();
+        
+        while(sw == 0){
+                motor.Drive(0, STOP, 0); 
+                motor.Drive(1, STOP, 0);       
+        }
+        /*黒_白_白_白_白*/
+        if(sw1  <= 0.6 && sw2 > 0.6 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 500);           
+                motor.Drive(1, CW, 2000);
+        }
+        /*白_黒_白_白_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.3 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1600);           
+                motor.Drive(1, CW, 2000);
+        }
+        /*白_黒_黒_白_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.6 && sw3 <= 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1800);           
+                motor.Drive(1, CW, 2000);
+        }
+        /*白_白_黒_白_白*/
+        else if(sw1  > 0.6  && sw2  > 0.6 && sw3 <= 0.3 && sw4  > 0.6 && sw5 > 0.6){
+                motor.Drive(0, CW, 2000);           
+                motor.Drive(1, CW, 2000); 
+        }
+                
+        /*白_白_黒_黒_白*/
+        else if(sw1  > 0.6 && sw2 > 0.6 && sw3 <= 0.6 && sw4 <= 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 2000);           
+                motor.Drive(1, CW, 1800);
+        }
+        /*白_白_白_黒_白*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 <= 0.3 && sw5 > 0.6){  
+                motor.Drive(0, CW, 2000);           
+                motor.Drive(1, CW, 1600);
+        }
+        /*白_白_白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 > 0.6 && sw5 <= 0.6){  
+                motor.Drive(0, CW, 2000);           
+                motor.Drive(1, CW, 500);
+        }
+        
+        else if(sw1  > 0.5 && sw5  <= 0.3){   
+            break;
+        }
+        }
+        
+//2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
+        
+        
+        while(1){
+        
+        hoge1 = sw1.read();
+        hoge2 = sw2.read();
+        hoge3 = sw3.read();
+        hoge4 = sw4.read();
+        hoge5 = sw5.read();
+        
+        while(sw == 0){
+                motor.Drive(0, STOP, 0); 
+                motor.Drive(1, STOP, 0);       
+        }
+        /*黒_白_白_白_白*/
+        if(sw1  <= 0.6 && sw2 > 0.6 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 500);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*黒_白_白*/
+        else if(sw2 <= 0.3 && sw3 > 0.6 && sw4 > 0.6){   
+                motor.Drive(0, CW, 600);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*黒_黒_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.6 && sw3 <= 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 200);
+        }
+        /*白_黒_白*/
+        else if(sw1  > 0.6  && sw2  > 0.6 && sw3 <= 0.3 && sw4  > 0.6 && sw5 > 0.6){
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 1000); 
+        }
+                
+        /*白_黒_黒*/
+        else if(sw1  > 0.6 && sw2 > 0.6 && sw3 <= 0.6 && sw4 <= 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 200);
+        }
+        /*白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 <= 0.3 && sw5 > 0.6){  
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 600);
+        }
+        /*白_白_白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 > 0.6 && sw5 <= 0.6){  
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 500);
+        }
+        
+        else if(sw1  <= 0.6 ){ 
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CCW, 1000); 
+                wait(0.225);
+                break;
+        }
+        }
+
+//3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333        
+        
+        
+        while(1){
+        
+        hoge1 = sw1.read();
+        hoge2 = sw2.read();
+        hoge3 = sw3.read();
+        hoge4 = sw4.read();
+        hoge5 = sw5.read();
+        
+        while(sw == 0){
+                motor.Drive(0, STOP, 0); 
+                motor.Drive(1, STOP, 0);       
+        }
+        /*黒_白_白_白_白*/
+        if(sw1  <= 0.6 && sw2 > 0.6 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 300);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*白_白_白*/
+        else if(sw2 <= 0.6 && sw3 > 0.6 && sw4 > 0.6){   
+                motor.Drive(0, CW, 400);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*黒_白_白*/
+        else if(sw2 <= 0.3 && sw3 > 0.6 && sw4 > 0.6){   
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 600);
+        }
+        /*黒_黒_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.6 && sw3 <= 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 500);
+        }
+        /*白_黒_白*/
+        else if(sw1  > 0.6  && sw2  > 0.6 && sw3 <= 0.3 && sw4  > 0.6 && sw5 > 0.6){
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 400); 
+        }
+                
+        /*白_黒_黒*/
+        else if(sw1  > 0.6 && sw2 > 0.6 && sw3 <= 0.6 && sw4 <= 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 300);
+        }
+        /*白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 <= 0.3 && sw5 > 0.6){  
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 300);
+        }
+        /*白_白_白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 > 0.6 && sw5 <= 0.6){  
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 300);
+        }
+        
+        else if(sw1 > 0.6 && sw5 <= 0.6){  
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CCW, 1000);
+        }
+        
+        else if(sw1  <= 0.6 && sw5 > 0.6){
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 500);
+                wait(0.2);  
+                break;
+        }
+        
+}
+
+
+
+//444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
+while(1){
+        
+        hoge1 = sw1.read();
+        hoge2 = sw2.read();
+        hoge3 = sw3.read();
+        hoge4 = sw4.read();
+        hoge5 = sw5.read();
+        
+        while(sw == 0){
+                motor.Drive(0, STOP, 0); 
+                motor.Drive(1, STOP, 0);       
+        }
+        /*黒_白_白_白_白*/
+        if(sw1  <= 0.6 && sw2 > 0.6 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 500);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*黒_白_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.3 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 400);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*黒_黒_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.6 && sw3 <= 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 350);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*白_黒_白*/
+        else if(sw1  > 0.6  && sw2  > 0.6 && sw3 <= 0.3 && sw4  > 0.6 && sw5 > 0.6){
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 1000); 
+        }
+                
+        /*白_黒_黒*/
+        else if(sw1  > 0.6 && sw2 > 0.6 && sw3 <= 0.6 && sw4 <= 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 350);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 <= 0.3 && sw5 > 0.6){  
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 400);
+        }
+        /*白_白_白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 > 0.6 && sw5 <= 0.6){  
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 500);
+        }
+        
+        else if(sw5  <= 0.3){  
+            motor.Drive(0, CW, 1000);           
+            motor.Drive(1, CW, 1000); 
+            wait(0.28);
+            break;
+        }
+        
+}
+
+//5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
+        
+        
+while(1){
+        
+        hoge1 = sw1.read();
+        hoge2 = sw2.read();
+        hoge3 = sw3.read();
+        hoge4 = sw4.read();
+        hoge5 = sw5.read();
+        
+        while(sw == 0){
+                motor.Drive(0, STOP, 0); 
+                motor.Drive(1, STOP, 0);       
+        }
+        /*黒_白_白_白_白*/
+        if(sw1  <= 0.6 && sw2 > 0.6 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 800);           
+                motor.Drive(1, CW, 1200);
+        }
+        /*白_黒_白_白_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.3 && sw3 > 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 800);           
+                motor.Drive(1, CW, 1200);
+        }
+        /*白_黒_黒_白_白*/
+        else if(sw1  > 0.6 && sw2 <= 0.6 && sw3 <= 0.6 && sw4 > 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1000);           
+                motor.Drive(1, CW, 1200);
+        }
+        /*白_白_黒_白_白*/
+        else if(sw1  > 0.6  && sw2  > 0.6 && sw3 <= 0.3 && sw4  > 0.6 && sw5 > 0.6){
+                motor.Drive(0, CW, 1200);           
+                motor.Drive(1, CW, 1200); 
+        }
+                
+        /*白_白_黒_黒_白*/
+        else if(sw1  > 0.6 && sw2 > 0.6 && sw3 <= 0.6 && sw4 <= 0.6 && sw5 > 0.6){   
+                motor.Drive(0, CW, 1200);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*白_白_白_黒_白*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 <= 0.3 && sw5 > 0.6){  
+                motor.Drive(0, CW, 1200);           
+                motor.Drive(1, CW, 1000);
+        }
+        /*白_白_白_白_黒*/
+        else if(sw1  > 0.6 && sw2  > 0.6 && sw3  > 0.6 && sw4 > 0.6 && sw5 <= 0.6){  
+                motor.Drive(0, CW, 1200);           
+                motor.Drive(1, CW, 800);
+        }
+        
+        ///////////大きい右カーブを曲がるためのプログラム//////////
+        /*1センサ2-5が黒(センサ5によって右のカーブであることを判定する)*/
+        else if(sw1  > 0.5 && sw2 <= 0.3 && sw3 > 0.5 && sw4 > 0.5 &&sw5  <= 0.3){   
+            AI = 1;
+        }
+        
+        /*2センサ3-5が黒(センサ5によって右のカーブであることを判定する)*/
+        else if(sw1  > 0.5 && sw2 > 0.5 && sw3 <= 0.3 &&  sw4 > 0.5 && sw5  <= 0.3){   
+            AI = 1;
+        }
+        /*3センサ4-5が黒(センサ5によって右のカーブであることを判定する)*/
+        else if(sw1  > 0.5 && sw2 > 0.5 && sw3 > 0.5 &&  sw4 <= 0.3 && sw5  <= 0.3){   
+            AI = 1;
+        }
+        
+        /*4センサ2-3-5が黒(センサ5によって右のカーブであることを判定する)*/
+        else if(sw1  > 0.5 && sw2 <= 0.5 && sw3 <= 0.5 && sw4 > 0.5 && sw5 <= 0.3){   
+            AI = 1;
+        }
+        
+        /*5センサ3-4-5が黒(センサ5によって右のカーブであることを判定する)*/
+        else if(sw1  > 0.5 && sw2 > 0.5 && sw3 <= 0.3 && sw4 <= 0.3 && sw5 <= 0.3){   
+            AI = 1;
+        }
+        
+        ///////////大きい左カーブを曲がるためのプログラム//////////
+        /*6センサ1-2が黒(センサ1によって右のカーブであることを判定する)*/
+        else if(sw1  <= 0.3 && sw2 <= 0.3 && sw3 > 0.5 && sw4 > 0.5 && sw5 > 0.5){   
+            AI = 2;
+        }
+        
+        /*7センサ1-3が黒(センサ1によって右のカーブであることを判定する)*/
+        else if(sw1  <= 0.3 && sw2 > 0.5 && sw3 <= 0.3 && sw4 > 0.5 && sw5 > 0.5){   
+            AI = 2;
+        }
+        
+        /*8センサ1-4が黒(センサ1によって右のカーブであることを判定する)*/
+        else if(sw1  <= 0.3 && sw2 > 0.5 && sw3 > 0.5 && sw4 <= 0.3 && sw5 > 0.5){   
+            AI = 2;
+        }
+        
+        /*9センサ1-2-3が黒(センサ1によって右のカーブであることを判定する)*/
+        else if(sw1  <= 0.3 && sw2 <= 0.5 && sw3 <= 0.5 && sw4 > 0.5 && sw5 > 0.5){   
+            AI = 2;
+        }
+        
+        /*10センサ1-3が黒(センサ1によって右のカーブであることを判定する)*/
+        else if(sw1  <= 0.3 && sw2 > 0.5 && sw3 <= 0.5 && sw4 <= 0.5 && sw5 > 0.5){   
+            AI = 2;
+        }
+        
+        
+        
+        /*11全部白かつAI = 1*/
+        else if(AI == 1 && sw1  > 0.5 && sw2 > 0.5 && sw3 > 0.5 && sw4 > 0.5 && sw5 > 0.5){   
+            motor.Drive(0, CW, 1200);         
+            motor.Drive(1, CCW, 1200); 
+        }
+        /*12全部白かつAI = 2*/
+        else if(AI == 2 && sw1  > 0.5 && sw2 > 0.5 && sw3 > 0.5 && sw4 > 0.5 && sw5 > 0.5){   
+            motor.Drive(0, CCW, 1200);         
+            motor.Drive(1, CW, 1200);  
+        }
+        
+        
+        /**********************************/
+        /*停止位置で止まるためのプログラム*/
+        /**********************************/
+        
+        /*1.4.1 センサ1-5が黒*/
+        else if(sw1  <= 0.5 && sw5 <= 0.5){
+               
+            
+                      
+            if( updown == 0 ){
+                
+                ///////////停止//////////
+                /*
+                motor.Drive(0, STOP, 0);           
+                motor.Drive(1, STOP, 0);
+                wait(0.1);
+                */
+                ///////////リフト上げる//////////
+                lift.Drive(0, CCW, 2000);
+                wait(1.5);
+                ///////////リフト停止//////////
+                lift.Drive(0, STOP, 0);
+                wait(0.1);
+                
+                ///////////停止位置を超えるために少し前進//////////
+                /*
+                motor.Drive(0, CW, 1200);           
+                motor.Drive(1, CW, 1200);
+                wait(0.1);
+                */
+                updown = 1;
+            }
+            
+            else if( updown == 1 ){
+                ///////////停止//////////
+                motor.Drive(0, STOP, 0);           
+                motor.Drive(1, STOP, 0);
+                wait(0.1);
+                ///////////リフト下げる//////////
+                lift.Drive(0, CW, 4095);
+                wait(1.0);
+                ///////////リフト停止//////////
+                lift.Drive(0, STOP, 0);
+                wait(0.1);
+                ///////////バック//////////
+                motor.Drive(0, CCW, 4095);           
+                motor.Drive(1, CCW, 4095);
+                wait(1.2);
+                ///////////モータ停止//////////
+                motor.Drive(0, STOP, 0);           
+                motor.Drive(1, STOP, 0);
+                wait(1.0);
+                updown = 0;
+                break;
+            }
+        }            
+        
+        
+            
+}            
+
+}
\ No newline at end of file
diff -r 000000000000 -r 41b88efe25c9 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Dec 01 04:46:42 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5
\ No newline at end of file