#include "CRC16.h"
#include <SoftwareSerial.h>
#define GEAR_RATIO 232 //传动减速比
#define NODE_ID 0x01 //驱动器ID
#define SPD_ADDR 284 //驱动器:速度设置寄存器地址
#define SPD_ST_ADDR 2 //驱动器:当前运转速度状态寄存器地址
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
MotorControl(0);
while(Serial.read()>=0){}
}
void loop() {
// put your main code here, to run repeatedly:
MotorControl(i*GEAR_RATIO);
Serial.println(i,HEX);//TEXT
}
//delay(10);
}
void CMDRx()
{
int16_t i,rxd,n;
int16_t d[16];
if (Serial.available() > 0) //TEXT
{
delay(100);
for(i=0;i<16;i++)
{
d[i]= Serial.read();//TEXT
}
}
while(Serial.read()>=0){}
}
void MotorControl(int v)
{
unsigned int d[10];
unsigned int crc,i;
d[0] = NODE_ID;
d[1] = 0x06;
d[2] = SPD_ADDR>>8;
d[3] = SPD_ADDR&0x00FF;
d[4] = (v>>8)&0x00FF;
d[5] = v&0x00FF;
crc=CRC16(d,6); //calculate the CRC-16
d[6] = crc&0x00FF;
d[7] = crc>>8;
for(i=0;i<8;i++)
{
Serial.println(d[i],HEX);//TEXT
}
}