A team manual robot program 10/3 もとどうり

Dependencies:   mbed PS3

Files at this revision

API Documentation at this revision

Comitter:
shina
Date:
Thu Oct 03 11:58:43 2019 +0000
Parent:
1:b4936498e47c
Commit message:
manual robot 10/3

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Aug 28 09:05:52 2019 +0000
+++ b/main.cpp	Thu Oct 03 11:58:43 2019 +0000
@@ -4,12 +4,12 @@
 /*
 アドレス
 0x10:右前
-0x12:左前
+0x12:左後ろ
 0x14:右後ろ
-0x16:左後ろ
+0x16:左前
 0x18:サーボ制御回路
 0x20:右ラック
-0x22:左ラック
+0x22:左ラック.
 0x24:回収機構
 0x26:右ファン
 0x28:左ファン
@@ -30,6 +30,8 @@
 DigitalOut pwm(D4);
 DigitalOut stop(D10);
 DigitalOut led1(LED1);
+Timer timer;
+Timer timer2;
 
 //変数
 char data1;//右上
@@ -44,7 +46,7 @@
 char data9;//左ファン
 char data10;//パトランプ
 char data11;//吐き出し機構
-char get_data_rs232=0x80;
+char get_data_rs232=0x00;
 int Ry;
 int Rx;
 int Ly;
@@ -77,40 +79,57 @@
 int o=1;
 int old_right1=0;
 int old_left1=0;
-
-
-
+int p=5;
+int q=0;
+int old_ue1=0;
+int old_shita=0;
+int old_left2=0;
+int old_triangle=0;
+int old_cross=0;
+int r=6;
+int s=5;
 
 
 //関数プロトタイプ宣言
+void initialization();
 void get_data();
 void change_data();
 void change_pwm();
 void change_servo();
-void change_rack();
+//void change_rack();
 void change_fan();
 void send_data(char address,char data);
 void emergency();
 void change_rack_2();
 void sequence_kaisyu();
+//void kaisyu();
+//void sequence_kaisyu_short();
 //void sequence_hakidashi();
-//void hakidashi();
+void hakidashi();
+void mode_change();
+
+
 
 //メイン関数
-int main(){
+int main()
+{
     led=1;
-    data7=0x80;
-    while(true){
+    pwm=1;
+    initialization();
+    while(true) {
         emergency();
         get_data();
+        mode_change();
         change_pwm();
         change_servo();
         change_data();
-        change_rack();
+        //change_rack();
         change_rack_2();
         sequence_kaisyu();
-       //sequence_hakidashi();
-       //hakidashi();
+        //kaisyu();
+        //sequence_kaisyu_short();
+        //sequence_hakidashi();
+        hakidashi();
         change_fan();
         send_data(0x10,data1);
         send_data(0x12,data2);
@@ -119,15 +138,70 @@
         send_data(0x18,data_servo);
         send_data(0x20,data5);
         send_data(0x22,data6);
+        //send_data(0x24,data7);
         send_data(0x26,data8);
         send_data(0x28,data9);
         send_data(0x40,data10);
-        
-        }
+        //send_data(0x30,data11);
+
+
+
+
+    }
+}
+
+
+//初期化
+void initialization()
+{
+    data1=0x80;
+    data2=0x80;
+    data3=0x80;
+    data4=0x80;
+    data5=0x80;
+    data6=0x80;
+    data7=0x10;
+    data8=0x80;
+    data9=0x80;
+    data10=0x80;
+    data11=0x80;
+
+    send_data(0x10,data1);
+    send_data(0x12,data2);
+    send_data(0x14,data3);
+    send_data(0x16,data4);
+    send_data(0x20,data5);
+    send_data(0x22,data6);
+    send_data(0x24,data7);
+    send_data(0x26,data8);
+    send_data(0x28,data9);
+    send_data(0x40,data10);
+    send_data(0x30,data11);
+    
+
+    data10=0x3f;
+    send_data(0x40,data10);
+    
+    if(q==0){
+        data10=0xdf;
+        send_data(0x40,data10);
+    }else if(q==1){
+        data10=0xcf;
+        send_data(0x40,data10);
     }
     
+    /*data_servo=0x03;
+    send_data(0x18,data_servo);
+    data_servo=0x04;
+    send_data(0x18,data_servo);*/
+    timer2.reset();
+    
+}
+
+
 //データ読み込み
-void get_data(){
+void get_data()
+{
     Ry=ps3.getRightJoystickYaxis();
     Rx=ps3.getRightJoystickXaxis();
     Ly=ps3.getLeftJoystickYaxis();
@@ -146,181 +220,303 @@
     hidari1=ps3.getButtonState(hidari);
     migi1=ps3.getButtonState(migi);
     get_data_rs232=slave.getc();
-    if(get_data_rs232==0x20||get_data_rs232==0x22||get_data_rs232==0x24||get_data_rs232==0x32||get_data_rs232==0x34){
+    
+
+
+    if(get_data_rs232) {
         led1=1;
-        }else{
-            led1=0;
-            }
-    pc.printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",Ry,Rx,Ly,left1,left2,right1,right2,select,start,ue1,shita,triangle,square,migi1,hidari1,tushin_check,i);
-    if(Ry==0&&Rx==0&&Ly==0&&left1==0&&right1==0&&right2==0&&left2==0&&select==0&&start==0&&shita==0&&triangle==0&&ue1==0&&migi1==0&&hidari1==0&&square==0&&circle==0&&cross==0){
+    } else {
+        led1=0;
+    }
+    //pc.printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",Ry,Rx,Ly,left1,left2,right1,right2,select,start,ue1,shita,triangle,square,migi1,hidari1,tushin_check,i);
+    if(Ry==0&&Rx==0&&Ly==0&&left1==0&&right1==0&&right2==0&&left2==0&&select==0&&start==0&&shita==0&&triangle==0&&ue1==0&&migi1==0&&hidari1==0&&square==0&&circle==0&&cross==0) {
         data_check=0;
-        }else{
-            data_check=1;
-            }
-    
+    } else {
+        data_check=1;
     }
-    
+
+}
+
 //緊急停止
-void emergency(){
-    if(start!=old_start){
-    old_start=start;
-    if(start==1){
-        if(j==1){
-    //緊急停止
-            led=0;
-            stop=1;
-            j=0;
-        }else if(j==0){
-    //緊急停止解除
-            led=1;
-            stop=0;
-            j=1;
+void emergency()
+{
+    if(start!=old_start) {
+        old_start=start;
+        if(start==1) {
+            if(j==1) {
+                //緊急停止
+                led=0;
+                stop=1;
+                j=0;
+            } else if(j==0) {
+                //緊急停止解除
+                led=1;
+                stop=0;
+                j=1;
             }
         }
-    }  
+    }
+}
+
+
+//モードチェンジ
+void mode_change(){
+    if(old_select!=select){
+        old_select=select;
+        if(select==1){
+            if(q==0){
+                //送風モード
+                q=1;
+        /*        data_servo=0x03;
+                send_data(0x18,data_servo);
+                data_servo=0x04;
+                send_data(0x18,data_servo);*/
+                data10=0xcf;
+                send_data(0x40,data10);
+            }else if(q==1){
+                //回収モード
+                q=0;
+                data10=0xdf;
+                send_data(0x40,data10);
+            }
+        }
+    }
 }
 
-    
 //データ変化(メカナム)
-void change_data(){
-    if(Ry>30&&i==0){
+void change_data()
+{
+
+    if(Ry!=0||Rx!=0) {
+        square=0;
+        migi1=0;
+    }
+
+    if(Ry>30&&i==0) {
+        if(right1==1) {
+            data1=0xcf;
+            data2=0x00;
+            data3=0xcf;
+            data4=0x00;
+        } else if(left1==1) {
+            data1=0x00;
+            data2=0xcf;
+            data3=0x00;
+            data4=0xcf;
+        } else {
+            data1=0x00;
+            data2=0x00;
+            data3=0x00;
+            data4=0x00;
+        }
+    } else if(Ry<-30&&i==0) {
             if(right1==1){
-                data1=0xcf;
-                data2=0x00;
-                data3=0xcf;
-                data4=0x00;
+                data1=0xdf;
+                data2=0xff;
+                data3=0xdf;
+                data4=0xff;
             }else if(left1==1){
-                data1=0x00;
-                data2=0xcf;
-                data3=0x00;
-                data4=0xcf;
+                data1=0xff;
+                data2=0xdf;
+                data3=0xff;
+                data4=0xdf;
             }else{
-                data1=0x00;
-                data2=0x00;
-                data3=0x00;
-                data4=0x00;
+                data1=0xff;
+                data2=0xff;
+                data3=0xff;
+                data4=0xff;
             }
-        }else if(Ry<-30&&i==0){
-        data1=0xff;
-        data2=0xff;
-        data3=0xff;
-        data4=0xff;
-        }else if(Rx>30&&i==0){
-        data1=0x00;
-        data2=0xff;
-        data3=0xff;
-        data4=0x00;
-        }else if(Rx<-30&&i==0){
-        data1=0xff;
-        data2=0x00;
-        data3=0x00;
-        data4=0xff;
-        }else if(right1==1&&i==0){
+    } else if(Rx>30&&i==0) {
+        if(right1==1) {
+            data1=0xff;
+            data2=0xdf;
+            data3=0xcf;
+            data4=0x00;
+        } else if(left1==1) {
+            data1=0xdf;
+            data2=0xff;
+            data3=0x00;
+            data4=0xcf;
+        } else {
+            data1=0xff;
+            data2=0xff;
+            data3=0x00;
+            data4=0x00;
+        }
+    } else if(Rx<-30&&i==0) {
+        if(right1==1) {
+            data1=0xcf;
+            data2=0x00;
+            data3=0xff;
+            data4=0xdf;
+        } else if(left1==1) {
+            data1=0x00;
+            data2=0xcf;
+            data3=0xdf;
+            data4=0xff;
+        } else {
+            data1=0x00;
+            data2=0x00;
+            data3=0xff;
+            data4=0xff;
+        }
+    } else if(right1==1&&i==0) {
         data1=0xff;
         data2=0x00;
         data3=0xff;
         data4=0x00;
-        }else if(left1==1&&i==0){
+    } else if(left1==1&&i==0) {
         data1=0x00;
         data2=0xff;
         data3=0x00;
         data4=0xff;
-        }else if(Ry>30&&i==1){
-                if(right1==1){
-                    data1=0x4f;
-                    data2=0x3f;
-                    data3=0x4f;
-                    data4=0x3f;
-                }else if(left1==1){
-                    data1=0x3f;
-                    data2=0x4f;
-                    data3=0x3f;
-                    data4=0x4f;
-                }else{
-                    data1=0x3f;
-                    data2=0x3f;
-                    data3=0x3f;
-                    data4=0x3f;
+    } else if(Ry>30&&i==1) {
+        if(right1==1) {
+            data1=0x4f;
+            data2=0x3f;
+            data3=0x4f;
+            data4=0x3f;
+        } else if(left1==1) {
+            data1=0x3f;
+            data2=0x4f;
+            data3=0x3f;
+            data4=0x4f;
+        } else {
+            data1=0x3f;
+            data2=0x3f;
+            data3=0x3f;
+            data4=0x3f;
+        }
+    } else if(Ry<-30&&i==1) {
+        if(right1==1){
+            data1=0x5f;
+            data2=0xbf;
+            data3=0x5f;
+            data4=0xbf;
+        }else if(left1==1){
+            data1=0xbf;
+            data2=0x5f;
+            data3=0xbf;
+            data4=0x5f;
+        }else{
+            data1=0xbf;
+            data2=0xbf;
+            data3=0xbf;
+            data4=0xbf;
         }
-        }else if(Ry<-30&&i==1){
-        data1=0xbf;
-        data2=0xbf;
-        data3=0xbf;
-        data4=0xbf;
-        }else if(Rx>30&&i==1){
-        data1=0x3f;
-        data2=0xbf;
-        data3=0xbf;
-        data4=0x3f;
-        }else if(Rx<-30&&i==1){
-        data1=0xbf;
-        data2=0x3f;
-        data3=0x3f;
-        data4=0xbf;
-        }else if(right1==1&&i==1){
+    } else if(Rx>30&&i==1) {
+        if(right1==1) {
+            data1=0xbf;
+            data2=0x5f;
+            data3=0x4f;
+            data4=0x3f;
+        } else if(left1==1) {
+            data1=0x5f;
+            data2=0xbf;
+            data3=0x3f;
+            data4=0x4f;
+        } else {
+            data1=0xbf;
+            data2=0xbf;
+            data3=0x3f;
+            data4=0x3f;
+        }
+    } else if(Rx<-30&&i==1) {
+        if(right1==1) {
+            data1=0x4f;
+            data2=0x3f;
+            data3=0xbf;
+            data4=0x5f;
+        } else if(left1==1) {
+            data1=0x3f;
+            data2=0x4f;
+            data3=0x5f;
+            data4=0xbf;
+        } else {
+            data1=0x3f;
+            data2=0x3f;
+            data3=0xbf;
+            data4=0xbf;
+        }
+    } else if(right1==1&&i==1) {
         data1=0xbf;
         data2=0x3f;
         data3=0xbf;
         data4=0x3f;
-        }else if(left1==1&&i==1){
+    } else if(left1==1&&i==1) {
         data1=0x3f;
         data2=0xbf;
         data3=0x3f;
         data4=0xbf;
-        }else{
+    } else {
         data1=0x80;
         data2=0x80;
         data3=0x80;
         data4=0x80;
-        }
     }
+}
 
 
-//pwm変化    
-void change_pwm(){
-if(select!=old_select){
-    old_select=select;
-    if(select==1){
-    if(i==1){
-        pwm=0;
-        i=0;
-        }else if(i==0){
-            pwm=1;
-            i=1;
+//pwm変化
+void change_pwm()
+{
+    if(cross!=old_cross) {
+        old_cross=cross;
+        if(cross==1) {
+            if(i==1) {
+                pwm=0;
+                data10=0xbf;
+                send_data(0x40,data10);
+                i=0;
+            } else if(i==0) {
+                pwm=1;
+                data10=0x3f;
+                send_data(0x40,data10);
+                i=1;
             }
         }
     }
 }
 
 //サーボモーター
-void change_servo(){
-        if(right2!=old_right2){
-                    old_right2=right2;
-                    //ハンガー機構
-                    if(right2==1){
-                        if(o==1){
-                            data_servo=0x01;
-                            o=0;
-                        }else if(o==0){
-                            data_servo=0x02;
-                            o=1;
-                        }
-                    }
-            }else if(circle!=old_circle){
-                    old_circle=circle;
-                    //バスタオル挟む機構
-                    if(circle==1){
-                        if(k==1){
-                            data_servo=0x03;
-                            k=0;
-                        }else if(k==0){
-                            data_servo=0x04;
-                            k=1;   
-                        }
-                    }
-            }/*else if(hidari1!=old_hidari1){
+void change_servo()
+{
+    if(right2!=old_right2) {
+        old_right2=right2;
+        //ハンガー機構&バスタオル機構initialize処理
+        if(right2==1) {
+            if(o==1) {
+                
+               // timer.start();
+              //  data_servo=0x03;
+               // send_data(0x18,data_servo);
+                data_servo=0x01;
+                //send_data(0x18,data_servo);
+                o=2;
+            } else if(o==2) {
+                data_servo=0x02;
+                //send_data(0x18,data_servo);
+                o=3;
+            }
+            //data_servo=0x01;
+        }
+    } else if(circle!=old_circle) {
+        old_circle=circle;
+        //バスタオル挟む機構
+        if(circle==1) {
+            if(k==1) {
+                data_servo=0x03;
+                //send_data(0x18,data_servo);
+                k=0;
+            } else if(k==0) {
+                data_servo=0x04;
+                //send_data(0x18,data_servo);
+                k=1;
+            }
+        }
+    }/*else if(hidari1!=old_hidari1){
                     old_hidari1=hidari1;
-                
+
                     if(hidari1==1&&select==0){
                         if(n==1){
                             data_servo=0x05;
@@ -331,204 +527,445 @@
                         }
                     }
             }*/
-     }
-    
+            
+           /* if(timer.read()>2&&o==2){
+                data_servo=0x04;
+                send_data(0x18,data_servo);
+                timer.stop();
+                timer.reset();
+                }*/
+}
+
 //ラック
-void change_rack(){
-        //右
-        if(triangle==1&&cross==0&&ue1==0&&shita==0&&(-32<Ly<32)){
-            if(get_data_rs232!=0x20&&get_data_rs232!=0x22){
-                data5=0x00;
-            }else if(get_data_rs232==0x20||get_data_rs232==0x22){
-                data5=0x10;
-                }
-        }else if(triangle==0&&cross==1&&ue1==0&&shita==0&&(-32<Ly<32)){
-            if(get_data_rs232!=0x26&&get_data_rs232!=0x28){
-                data5=0xff;
-            }else if(get_data_rs232==0x26||get_data_rs232==0x28){
-                data5=0x10;
-                }
+/*
+void change_rack()
+{
+
+
+    //右
+    if(triangle==1&&cross==0&&ue1==0&&shita==0&&(-32<Ly<32)) {
+        if(!(get_data_rs232 & 0x01)) {
+            data5=0x00;
+        } else if(get_data_rs232 & 0x01) {
+            data5=0x10;
+        }
+    } else if(triangle==0&&cross==1&&ue1==0&&shita==0&&(-32<Ly<32)) {
+        if(!(get_data_rs232 & 0x04)) {
+            data5=0xff;
+        } else if(get_data_rs232 & 0x04) {
+            data5=0x10;
+        }
         //左
-        }else if(triangle==0&&cross==0&&ue1==1&&shita==0&&(-32<Ly<32)){
-            if(get_data_rs232!=0x20&&get_data_rs232!=0x24){
-                data6=0xff;
-            }else if(get_data_rs232==0x20||get_data_rs232==0x24){
-                data6=0x10;
-                }
-        }else if(triangle==0&&cross==0&&ue1==0&&shita==1&&(-32<Ly<32)){
-            if(get_data_rs232!=0x26&&get_data_rs232!=0x30){
-                data6=0x00;
-            }else if(get_data_rs232==0x26||get_data_rs232==0x30){
-                data6=0x10;
-                }
-        }else if(triangle==0&&cross==0&&ue1==0&&shita==0&&(-32<Ly<32)){
-            data5=0x80;
-            data6=0x80;
-            
+    } else if(triangle==0&&cross==0&&ue1==1&&shita==0&&(-32<Ly<32)) {
+        if(!(get_data_rs232 & 0x02)) {
+            data6=0xff;
+        } else if(get_data_rs232 & 0x02) {
+            data6=0x10;
         }
+    } else if(triangle==0&&cross==0&&ue1==0&&shita==1&&(-32<Ly<32)) {
+        if(!(get_data_rs232 & 0x08)) {
+            data6=0x00;
+        } else if(get_data_rs232 & 0x08) {
+            data6=0x10;
+        }
+    } else if(triangle==0&&cross==0&&ue1==0&&shita==0&&(-32<Ly<32)) {
+        data5=0x80;
+        data6=0x80;
+
+    }
 
 }
+*/
 
 //ラック左右
-void change_rack_2(){
-    if(triangle==0&&cross==0&&ue1==0&&shita==0&&Ly>32){
-        if(get_data_rs232==0x20){
+void change_rack_2()
+{
+    /*
+    if(triangle==0&&cross==0&&ue1==0&&shita==0&&Ly>32) {
+        if(get_data_rs232 & 0x01) {
             data5=0x10;
+        } else {
+            data5=0x00;
+        }
+        if(get_data_rs232 & 0x02) {
             data6=0x10;
-        }else if(get_data_rs232==0x22){
-            data5=0x10;
+        } else {
             data6=0xff;
-        }else if(get_data_rs232==0x24){
-            data5=0x00;
+        }
+    } else if(triangle==0&&cross==0&&ue1==0&&shita==0&&Ly<-32) {
+        if(get_data_rs232 & 0x04) {
+            data5=0x10;
+        } else {
+            data5=0xff;
+        }
+        if(get_data_rs232 & 0x08) {
             data6=0x10;
-        }else{
+        } else {
+            data6=0x00;
+        }
+    } else if(triangle==0&&cross==0&&ue1==0&&shita==0&&(-32<Ly<32)) {
+        data5=0x80;
+        data6=0x80;
+    }
+    */
+    
+    if(ue1!=old_ue1){
+        old_ue1=ue1;
+        if(ue1==1&&start==0){
             data5=0x00;
             data6=0xff;
+            
+            /*data_servo=0x03;
+            send_data(0x18,data_servo);
+            data_servo=0x04;
+            send_data(0x18,data_servo);*/
         }
-    }else if(triangle==0&&cross==0&&ue1==0&&shita==0&&Ly<-32){
-        if(get_data_rs232==0x26){
-            data5=0x10;
-            data6=0x10;
-        }else if(get_data_rs232==0x28){
-            data5=0x10;
-            data6=0x00;
-        }else if(get_data_rs232==0x30){
-            data5=0xff;
-            data6=0x10;
-        }else{
+    }else if(shita!=old_shita){
+        old_shita=shita;
+        if(shita==1&&start==0){
             data5=0xff;
             data6=0x00;
         }
-    }else if(triangle==0&&cross==0&&ue1==0&&shita==0&&(-32<Ly<32)){
-        data5=0x80;
-        data6=0x80;
+    }
+    
+    if((get_data_rs232 & 0x01)&&data5==0x00){
+        data5=0x10;
+        send_data(0x20,data5);
+    }else if((get_data_rs232 & 0x04)&&data5==0xff){
+        data5=0x10;
+        send_data(0x20,data5);
     }
+    
+    if((get_data_rs232 & 0x02)&&data6==0xff){
+        data6=0x10;
+        send_data(0x22,data6);
+    }else if((get_data_rs232 & 0x08)&&data6==0x00){
+        data6=0x10;
+        send_data(0x22,data6);
+    }
+    
+    
 }
 
 //回収機構
-void sequence_kaisyu(){
-     if(square!=old_square){
-         old_square=square;
-         if(square==1){
-             /*data_servo=0x07;
-             send_data(0x18,data_servo);
-             wait(2);
-             data7=0xff;
-             send_data(0x24,data7);
-             wait(4);
-             data7=0x10;
-             send_data(0x24,data7);
-             data_servo=0x08;
-             send_data(0x18,data_servo);
-             wait(2);
-             data7=0x00;
-             send_data(0x24,data7);
-             wait(4);
-             data7=0x10;
-             send_data(0x24,data7);*/
-             
-             data_servo=0x07;
-             send_data(0x18,data_servo);
-             wait(1.5);
-             data7=0x00;
-             while(get_data_rs232!=0x32){
-             send_data(0x24,data7);
-             get_data_rs232=slave.getc();
-             }
-             data7=0x10;
-             send_data(0x24,data7);
-             data_servo=0x08;
-             send_data(0x18,data_servo);
-             wait(2);
-             data7=0xff;
-             while(get_data_rs232!=0x34){
-             send_data(0x24,data7);
-             get_data_rs232=slave.getc();
-             }
-             data7=0x10;
-             send_data(0x24,data7);
+
+void sequence_kaisyu()
+{
+    if(q==0){
+    if(square!=old_square) {
+        old_square=square;
+        if(square==1&&select==0) {
+            
+            data_servo=0x07;
+            send_data(0x18,data_servo);
+            wait(1.3);
+            data7=0x00;
+            get_data_rs232=get_data_rs232 & 0b11101111;
+            while(!(get_data_rs232 & 0x10)) {
+                send_data(0x24,data7);
+                get_data_rs232=slave.getc();
+            }
+            data7=0x10;
+            send_data(0x24,data7);
+            data_servo=0x08;
+            send_data(0x18,data_servo);
+            wait(1.3);
+            data7=0xff;
+            get_data_rs232=get_data_rs232 & 0b11011111;
+            while(!(get_data_rs232 & 0x20)) {
+                send_data(0x24,data7);
+                get_data_rs232=slave.getc();
+            }
+            data7=0x10;
+            send_data(0x24,data7);
+            
+            }
+        }else if(triangle!=old_triangle){
+            if(triangle==1&&select==0){
+                                
+                data_servo=0x07;
+                send_data(0x18,data_servo);
+                wait(1.3);
+                data7=0x00;
+                send_data(0x24,data7);
+                wait(0.3);
+                data7=0x10;
+                send_data(0x24,data7);
+                data_servo=0x08;
+                send_data(0x18,data_servo);
+                wait(1.3);
+                data7=0xff;
+                get_data_rs232=get_data_rs232 & 0b11011111;
+                while(!(get_data_rs232 & 0x20)) {
+                    send_data(0x24,data7);
+                    get_data_rs232=slave.getc();
+                }
+                data7=0x10;
+                send_data(0x24,data7);
+            }
+        }
+    }
+}
+
+
+/*
+void kaisyu(){
+        if(q==0){
+        if(old_square!=square){
+            old_square=square;
+            if(square==1){
+                p=1;
 
-         }
-      }
-}
+                }
+            }
+         switch(p){
+            
+            case 1:
+            data_servo=0x07;
+            send_data(0x24,data_servo);
+            timer2.start();
+            if(timer2.read()>3.5){
+                timer2.stop();
+                timer2.reset();
+                p=2;
+            }
+            break;
+            
+            case 2:
+            data7=0x00;
+            send_data(0x24,data7);
+            if(get_data_rs232 & 0x10){
+                data7=0x10;
+                send_data(0x24,data7);
+                p=3;
+            }
+            break;
+            
+            case 3:
+            data_servo=0x08;
+            send_data(0x18,data_servo);
+            timer2.start();
+            if(timer2.read()>1.3){
+                p=4;
+            }
+
+            break;
+            
+            case 4:
+            data7=0xff;
+            send_data(0x24,data7);
+            if(get_data_rs232 & 0x20){
+                data7=0x10;
+                send_data(0x24,data7);
+                p=5;
+            }
+            break;
+            
+            default:
+                p=5;
+            break;
+            
+            }
+         }   
+    }
+*/
+
 /*
-void sequence_hakidashi(){
-     if(migi1!=old_migi1){
-         old_migi1=migi1;
-         if(migi1==1){
-             data_servo=0x07;
-             send_data(0x18,data_servo);
-             wait(2);
-             data11=0xff;
-             while(get_data_rs232!=0x36){
-                 send_data(0x30,data11);
-                 get_data_rs232=slave.getc();
-                 }
+void sequence_hakidashi()
+{
+    if(q==0){
+    if(migi1!=old_migi1) {
+        old_migi1=migi1;
+        if(migi1==1&&select==0) {
+              data_servo=0x07;
+              send_data(0x18,data_servo);
+              wait(1);
+              data7=0x00;
+              send_data(0x24,data7);
+              wait(0.5);
+              data7=0x10;
+              send_data(0x24,data7);
+              data11=0xff;
+              while(!(get_data_rs232 & 0x40)){
+                  send_data(0x30,data11);
+                  get_data_rs232=slave.getc();
+              }
+              data11=0x10;
+              send_data(0x38,data11);
+              data11=0x00;
+              while(!(get_data_rs232 & 0x80)){
+                  send_data(0x30,data11);
+                  get_data_rs232=slave.getc();
+              }
               data11=0x10;
               send_data(0x30,data11);
-              wait(0.5);
-              data11=0x00;
-              while(get_data_rs232!=0x38){
-                  send_data(0x30,data11);
+              data7=0xff;
+              while(!(get_data_rs232 & 0x20)){
+                  send_data(0x24,data7);
                   get_data_rs232=slave.getc();
-                  }
-              data11=0x10;
-              send_data(0x30,data11);
-              data_servo=0x08;
-              send_data(0x18,data_servo);
-              wait(2);     
-             }
-         }
-     }
-*/  
+              }
+              data7=0x10;
+              send_data(0x24,data7);
+ 
+            }
+        }
+    }
+}
+*/
 
 /*
+void sequence_kaisyu_short(){
+    if(q==0){
+        if(old_triangle!=triangle){
+            old_triangle=triangle;
+            if(triangle==1){
+                
+                data_servo=0x07;
+                send_data(0x18,data_servo);
+                wait(1.3);
+                data7=0x00;
+                send_data(0x24,data7);
+                wait(0.3);
+                data7=0x10;
+                send_data(0x24,data7);
+                data_servo=0x08;
+                send_data(0x18,data_servo);
+                wait(1.3);
+                data7=0xff;
+                get_data_rs232=get_data_rs232 & 0x;
+                while(!(get_data_rs232 & 0x20)) {
+                    send_data(0x24,data7);
+                    get_data_rs232=slave.getc();
+                }
+                data7=0x10;
+                send_data(0x24,data7);
+
+            }
+        }
+    }
+}*/
+
 void hakidashi(){
-    if(migi1==1&&hidari1==0){
-        data_servo=0x07;
-        if(get_data_rs232==0x36){
-            data11=0x10;
-        }else if(get_data_rs232!=0x38){
-            data11=0xff;
+    if(q==0){
+        if(old_migi1!=migi1){
+            old_migi1=migi1;
+            if(migi1==1&&select==0){
+                r=1;
+            }
+        }
+        
+        switch(r){
+            case 1:
+            data_servo=0x07;
+            send_data(0x18,data_servo);
+            timer2.start();
+            if(timer2.read()>1.5){
+                timer2.stop();
+                timer2.reset();
+                r=2;
             }
-    }else if(migi1==0&&hidari1==1){
-        data_servo=0x08;
-        if(get_data_rs232==0x38){
-            data11=0x10;
-        }else if(get_data_rs232!=0x38){
+            break;
+            
+            case 2:
+            data7=0x00;
+            send_data(0x24,data7);
+            timer2.start();
+            if(timer2.read()>0.3){
+                timer2.stop();
+                timer2.reset();
+                data7=0x10;
+                send_data(0x24,data7);
+                r=3;
+            }
+            break;
+            
+            case 3:
+            data11=0xff;
+            send_data(0x30,data11);
+            if(get_data_rs232 & 0x40){
+                data11=0x10;
+                send_data(0x30,data11);
+                r=4;
+            }
+            break;
+            
+            case 4:
             data11=0x00;
+            send_data(0x30,data11);
+            if(get_data_rs232 & 0x80){
+                data11=0x10;
+                send_data(0x30,data11);
+                r=5;
+            }
+            break;
+            
+            case 5:
+            data7=0xff;
+            send_data(0x24,data7);
+            if(get_data_rs232 & 0x20){
+                data7=0x10;
+                send_data(0x24,data7);
+                r=6;
+            }
+            break;
+            
+            default:
+            r=6;
+            break;
         }
-    }else{
-        data11=0x80;
-    }   
+    }
 }
 
-*/
+
 
 //ファン
-void change_fan(){
-    if(left2==1){
+void change_fan()
+{
+    if(q==1){   
+    if(left2==1&&(old_triangle==triangle)) {
         data8=0xff;
         data9=0xff;
         data10=0xff;
-        }else if(left2==0){
+    } else if(left2==0&&(old_triangle==triangle)) {
+        data8=0x00;
+        data9=0x00;
+        data10=0x00;
+    }else if(left2==0&&(old_triangle!=triangle)&&select==0){
+        old_triangle=triangle;
+        if(triangle==1){
+            data8=0xff;
+            data9=0xff;
+            data10=0xff;
+            data_servo=0x03;
+            send_data(0x26,data8);
+            send_data(0x28,data9);
+            send_data(0x40,data10);
+            wait(0.5);
+            send_data(0x18,data_servo);
+            wait(1);
             data8=0x00;
             data9=0x00;
             data10=0x00;
-            }
+            send_data(0x26,data8);
+            send_data(0x28,data9);
+            send_data(0x40,data10);
+            wait(0.5);
+            data_servo=0x04;
+            send_data(0x18,data_servo);
+        }
     }
-  
+}
+    
+}
 
-
-    
 //i2c
-void send_data(char address,char data){
+void send_data(char address,char data)
+{
     tsushin=1;
     tushin_check=0;
-    i2c.frequency(100000);
     i2c.start();
     i2c.write(address);
     tushin_check=i2c.write(data);
     i2c.stop();
-    wait(0.003);
-    }
\ No newline at end of file
+}
+