C 连接树莓Pi 2的Pi库以旋转双向直流伺服电机

C 连接树莓Pi 2的Pi库以旋转双向直流伺服电机,c,raspberry-pi2,i2c,wiringpi,C,Raspberry Pi2,I2c,Wiringpi,我尝试使用Raspberry pi 2的i2c接口和以下代码旋转电机(RMCS-220X高扭矩编码器直流伺服电机和驱动器): #include <stdio.h> #include <wiringPi.h> #include <wiringPiI2C.h> #define Motoraddrs 0x08 //motor address int main(void){ int I2C_fd; wiringPiSetupGpio(); wiringPiSetu

我尝试使用Raspberry pi 2的i2c接口和以下代码旋转电机(RMCS-220X高扭矩编码器直流伺服电机和驱动器):

#include <stdio.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>
#define Motoraddrs 0x08 //motor address

int main(void){
int I2C_fd;

wiringPiSetupGpio();
wiringPiSetup(); 

I2C_fd = wiringPiI2CSetup(Motoraddrs);

wiringPiI2CWriteReg16(I2C_fd, 0x01, 0xff);//spins from low speed of 0x01 to
                                            max 0xff in right side
delay(100);

return 0; 
}
/*以下是将RMCS-220x上的速度变量更新为反向255并将其读回的示例用法*/

I2C_Start(0x10 + 0); // send the slave address of the RMCS-220x and 
                       write bit 0
I2C_Write(1); // send the command variable for speed
I2C_Write(1); // send LSB of 1
I2C_Write(255); // send MSB of 255 to and so Speed of backward 255
I2C_Rep_Start(0x10 + 1); // send I2C address with rep start and 1 to read
speed = I2C_Read_Ack(); // read speed LSB byte and ack
speed = I2C_Read_Nak(); // read speed MSB byte and don’t ack
I2C_Stop(); // send I2C stop
在我的例子中,上面的代码使用wiringPi库,只允许我向一个(右)方向旋转电机。现在我想把它也向左旋转


非常感谢你的建议

必须在最后2个字节的数据中使用有符号值:

向后旋转:

...

I2C_Write(1); // send the command variable for speed

I2C_Write(1); // send LSB of 1 

I2C_Write(255);// send MSB of 255 to and so Speed of backward 255 

...
...

I2C_Write(1);// send the command variable for speed  
I2C_Write(255);// send LSB of 255  
I2C_Write(0);// send MSB of 0 to and so Speed of forward 255

...
向前旋转:

...

I2C_Write(1); // send the command variable for speed

I2C_Write(1); // send LSB of 1 

I2C_Write(255);// send MSB of 255 to and so Speed of backward 255 

...
...

I2C_Write(1);// send the command variable for speed  
I2C_Write(255);// send LSB of 255  
I2C_Write(0);// send MSB of 0 to and so Speed of forward 255

...

必须在最后2个字节的数据中使用有符号的值:

向后旋转:

...

I2C_Write(1); // send the command variable for speed

I2C_Write(1); // send LSB of 1 

I2C_Write(255);// send MSB of 255 to and so Speed of backward 255 

...
...

I2C_Write(1);// send the command variable for speed  
I2C_Write(255);// send LSB of 255  
I2C_Write(0);// send MSB of 0 to and so Speed of forward 255

...
向前旋转:

...

I2C_Write(1); // send the command variable for speed

I2C_Write(1); // send LSB of 1 

I2C_Write(255);// send MSB of 255 to and so Speed of backward 255 

...
...

I2C_Write(1);// send the command variable for speed  
I2C_Write(255);// send LSB of 255  
I2C_Write(0);// send MSB of 0 to and so Speed of forward 255

...