Surgical_Hand / Mbed 2 deprecated krs3

Dependencies:   mbed krs3

main.cpp

Committer:
takaoha
Date:
2019-12-23
Revision:
1:fa3a640a55e0
Parent:
0:651a188c5dc3
Child:
2:33681dfc2aa5

File content as of revision 1:fa3a640a55e0:

#include "mbed.h"
#include "math.h"


DigitalInOut name(PC_7);//EN_IN(HIGHでICS機器に送信するモード、LOWでICS機器から受信するモードにするピン)と繋いでいる
Serial master(PA_9, PA_10);//シリアル通信を担当するピン

Serial pc(USBTX,USBRX);
bool setpos(int deg,int id);
void getID();

//int getpos(int id);
int txlen=3;
int rxlen=3;
int _id;

int main() {
    pc.printf("hello\r\n");
    master.baud(1250000);//クロックレートの設定
    master.format(8, Serial::Even, 1);//通信方式の設定
    name.output();//p8を出力モードに
    
    int deg=0;
    char degpart[3];
    int id;

    while(1){
    pc.printf("degree\r\n");
    for(int i=0;i<3;i++){
        degpart[i]=pc.getc()-48;
        printf("%d",degpart[i]);      
        }
        printf("\r\n");
        deg=100*degpart[0]+10*degpart[1]+degpart[2];
    //pc.scanf("%d\r\n",deg);
    pc.printf("%d\r\n",deg);
    pc.printf("id\r\n");
    id=pc.getc()-48;
    //id+=48;
    pc.printf("%d\r\n",id);
    setpos(deg,id);
    //getID();
    } 
}

bool setpos(int deg,int id){
    name=1;
    int txdata[txlen];
    int rxdata[rxlen];
    if(deg>135 || deg<-135){
        pc.printf("failed\r\n");
        return 0;
        }
    int pos=deg*29.633;
    pos=pos+7500;
    //pc.printf("%d\r\n",pos);
    txdata[0]=0x80+id;
    txdata[1]=((pos >> 7) & 0x007F);
    txdata[2]=(pos & 0x007F); 
    
    for(int i=0;i<txlen;i++){
        master.putc(txdata[i]);
        }
        wait(0.00002);
        
        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);
    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){
    name=1;
    unsigned char txdata[txlen-1];
    unsigned char rxdata[rxlen];
    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]);
        }
    name=0;
    wait(0.5);
   if(master.readable()){
    pc.printf("OK\r\n");
    }
    for(int i=0;i<rxlen;i++){
        if(master.readable()){
        rxdata[i]=master.getc();
        pc.printf("%c",rxdata[i]);
        }else{
            pc.printf("failed\r\n");
            }
        }
    
    
    
    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);
        master.putc(0x0);
        master.putc(0x0);
        master.putc(0x0);
        wait(0.01);
        name=0;
        /*for(int i=0;i<5;i++)
        {
            id = (master.getc() & 0x1f);
        }*/
        id=master.getc();
        printf("%d\r\n",id);
        wait_ms(500);
        
    }