2017-01-18 3 views
1

Я пытаюсь раскрутить двигатель (RMCS-220x с высоким крутящим моментом кодировщик DC серводвигатель и драйвер), используя интерфейс I2C Raspberry Pi 2 с помощью следующего кода:wiringPi библиотека Raspberry Pi 2, чтобы повернуть двунаправленную ПОСТ.Т. серводвигателю

#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; 
} 

Байты, записанные в функции wiringPiI2CWriteReg16, относятся к нижеследующему ниже коду, которые приведены в Техническом описании двигателя.

/* Ниже приведен пример использования обновления переменной скорости на УРОК-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(255); // send LSB of 255 
I2C_Write(0); // send MSB of 0 to and so Speed of forward 255 
I2C_Stop(); // send I2C stop 

/* Ниже приведен пример использования обновления переменной скорости на УРОК-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, что позволяет мне вращать двигатель только в одном (правом) направлении кода. Теперь я тоже хочу повернуть его в левом направлении.

Буду признателен за ваши предложения.

ответ

0

Вы должны использовать подписанную значение в последние 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 

... 
Смежные вопросы