Surgical_Hand / Mbed 2 deprecated krs3

Dependencies:   mbed krs3

Revision:
2:33681dfc2aa5
Parent:
1:fa3a640a55e0
Child:
3:e356b3e7ecfd
--- a/main.cpp	Mon Dec 23 15:36:06 2019 +0000
+++ b/main.cpp	Tue Dec 24 07:15:01 2019 +0000
@@ -1,30 +1,35 @@
 #include "mbed.h"
 #include "math.h"
-
-
+AnalogIn fsr(PC_0);
 DigitalInOut name(PC_7);//EN_IN(HIGHでICS機器に送信するモード、LOWでICS機器から受信するモードにするピン)と繋いでいる
 Serial master(PA_9, PA_10);//シリアル通信を担当するピン
+Serial pc(USBTX,USBRX);
 
-Serial pc(USBTX,USBRX);
 bool setpos(int deg,int id);
 void getID();
+void getpos(int id);
 
-//int getpos(int id);
+
 int txlen=3;
 int rxlen=3;
 int _id;
 
 int main() {
     pc.printf("hello\r\n");
-    master.baud(1250000);//クロックレートの設定
+    //master.baud(1250000);//クロックレートの設定
+    master.baud(112500);
     master.format(8, Serial::Even, 1);//通信方式の設定
     name.output();//p8を出力モードに
     
     int deg=0;
     char degpart[3];
     int id;
-
+    char a;
     while(1){
+    pc.printf("choose1 or 2 or3\r\n");
+    a=pc.getc();
+    switch(a){
+    case '1':
     pc.printf("degree\r\n");
     for(int i=0;i<3;i++){
         degpart[i]=pc.getc()-48;
@@ -40,7 +45,35 @@
     pc.printf("%d\r\n",id);
     setpos(deg,id);
     //getID();
-    } 
+    wait(1.0);
+    getpos(id);
+    break;
+    
+    
+    case '2':
+    double i;
+    i=fsr.read();
+    
+    deg=i*270-135;
+    pc.printf("%d\r\n",deg);
+    setpos(deg,5);
+    break;
+    
+    case '3':
+    pc.printf("id\r\n");
+    id=pc.getc()-48;
+    //id+=48;
+    pc.printf("%d\r\n",id);
+    getpos(id);
+    break;
+    
+    default:
+    break;
+    }
+    
+
+    }
+    
 }
 
 bool setpos(int deg,int id){
@@ -61,99 +94,70 @@
     for(int i=0;i<txlen;i++){
         master.putc(txdata[i]);
         }
-        wait(0.00002);
+        //wait(0.00002);
+        wait(0.0002);
         
-        name=0;
-       
-        
+       name=0;
         for(int i=0;i<rxlen;i++){
             rxdata[i]=master.getc();
-            //wait(0.05);
-            //pc.printf("%d\r\n",rxdata[i]);
             }
-        //wait(0.01);
-        //name=1;
-            
-        //if(i==txlen-1){
-            //name=0;
-            
-            
-            /*for(int i=0;i<rxlen;i++){
-           //pc.printf("h\r\n");
-          
-           //pc.printf("hello\r\n");
-           rxdata[i]=master.getc();
-           }*/
-        
-        //pc.printf("OK\r\n");
-        
-    //wait(0.05);
-    //pc.printf("hello\r\n");
-  
     
-       
-           //pc.printf("hello\r\n");
-        int degnow;  
-       degnow=((rxdata[1] << 7) & 0x3F80) + (rxdata[2] & 0x007F);
+    int degnow;  
+    degnow=((rxdata[1] << 7) & 0x3F80) + (rxdata[2] & 0x007F);
     degnow=(degnow-7500)/29.6;
-    //pc.printf("%d\r\n",degnow);
+   
     pc.printf("%d\r\n",rxdata[0]);
     pc.printf("%d\r\n",rxdata[1]);
     pc.printf("%d\r\n",rxdata[2]);
     pc.printf("角度%d\r\n",degnow);
+    
     }
 
-/*int getpos(int id){
+void getpos(int id){
     name=1;
     unsigned char txdata[txlen-1];
-    unsigned char rxdata[rxlen];
+    unsigned char rxdata[rxlen+1];
     int degnow;
     
     txdata[0]=0xA0+id;
     txdata[1]=0x05;
     
-    pc.printf("done\r\n");
+    
     for(int i=0;i<txlen-1;i++){
         master.putc(txdata[i]);
         }
+    wait(0.0002);
     name=0;
-    wait(0.5);
-   if(master.readable()){
-    pc.printf("OK\r\n");
-    }
-    for(int i=0;i<rxlen;i++){
-        if(master.readable()){
+    
+    for(int i=0;i<rxlen+1;i++){
         rxdata[i]=master.getc();
-        pc.printf("%c",rxdata[i]);
-        }else{
-            pc.printf("failed\r\n");
-            }
         }
-    
+
+    pc.printf("%d\r\n",rxdata[0]);
+    degnow=((rxdata[2] << 7) & 0x3F80) + (rxdata[3] & 0x007F);
+    degnow=(degnow-7500)/29.6;
+    pc.printf("%d\r\n",degnow);
     
-    
-    pc.printf("%d",rxdata[0]);
-    degnow=((rxdata[2] << 7) & 0x3F80) + (rxdata[3] & 0x007F);
-    //degnow=(degnow-7500)*1000/296;
-    pc.printf("%d",degnow);
-    return degnow;
-    } */
+    } 
 
 void getID()
     {
         int id;
         name=1;
         master.putc(0xFF);
+        wait(0.00001);
         master.putc(0x0);
-        master.putc(0x0);
+        wait(0.00001);
         master.putc(0x0);
-        wait(0.01);
+        wait(0.00001);
+        master.putc(0x0);
+        wait(0.00002);
         name=0;
-        /*for(int i=0;i<5;i++)
+        for(int i=0;i<5;i++)
         {
             id = (master.getc() & 0x1f);
-        }*/
-        id=master.getc();
+        }
+        //id=master.getc();
         printf("%d\r\n",id);
         wait_ms(500);