Dependents: Serialservo_01 nhk_2018_undercarry_test08 nhk_2018_undercarry_test09 nhk_2018_undercarry_test10 ... more
Serialservo.cpp
- Committer:
- kenken0721
- Date:
- 2018-11-24
- Revision:
- 3:42687d677641
- Parent:
- 2:da6abd6afe26
File content as of revision 3:42687d677641:
#include "mbed.h" #include "Serialservo.h" long Serialservo::map(long x, long in_min, long in_max, long out_min, long out_max){ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } Serialservo::Serialservo(PinName TX, PinName RX, PinName Dout) : ser(TX, RX), switching(Dout){ } //初期化関数 void Serialservo::init(){ ser.baud(115200); ser.format(8, Serial::Even, 1); //ser.attach(NULL, Serial::TxIrq); switching = 1; tx_data[0] = 0; tx_data[1] = 0; tx_data[2] = 0; } //データ送信完了待ち関数 void Serialservo::flush(){ //wait_ms(0.1); ser.attach(NULL, Serial::TxIrq); switching = 0;//受信モードに切替 } //データ送信関数 void Serialservo::transmission(){ switching = 1;//送信モードに切り替え ser.putc(tx_data[0]); ser.putc(tx_data[1]); ser.putc(tx_data[2]); wait(0.005); //ser.attach(this,&Serialservo::flush, Serial::TxIrq); } //ポジション設定 void Serialservo::move(char id,int pos){ pos = (int)map((int)pos, 0, 270, 3500, 11500); int temp1 = (pos & 0x3F80) >> 7; int temp2 = pos & 0x7f; tx_data[0] = ICS_POS_CMD | id; tx_data[1] = (unsigned char)temp1; tx_data[2] = (unsigned char)temp2; transmission();//送信 } //保持トルク設定 void Serialservo::stretch(char id,int str){ int temp1 = SUB_ST_COMMND; int temp2 = str; tx_data[0] = ICS_PARA_WRITE_COMMND | id; tx_data[1] = (unsigned char)temp1; tx_data[2] = (unsigned char)temp2; transmission();//送信 } //スピード設定 void Serialservo::speed(char id,int spe){ int temp1 = SUB_SP_COMMND; int temp2 = spe; tx_data[0] = ICS_PARA_WRITE_COMMND | id; tx_data[1] = (unsigned char)temp1; tx_data[2] = (unsigned char)temp2; transmission();//送信 }