使用带有Pio Cli命令的i2c smartdrive传感器来运行电机

时间:2018-01-21 15:12:34

标签: iot i2c android-things

这是我的i2c传感器:http://www.mindsensors.com/rpi/76-smartdrive-high-current-motor-controller请在文件会议中查看pdf

基于此Google指南https://developer.android.com/things/sdk/pio/pio-cli.html我需要在XX ZZ YY UU中以确定的速度,方向,持续时间等运行电机......

例如:pio i2c I2C1 0x1B write-reg-buffer 0xXX 0xYY 0xUU 0xZZ

As(在这种情况下)我将在我的android事物应用程序上使用writeRegBuffer()以确定的spped,方向,持续时间等运行一个,两个或两个电机?

例如:我在intel edison / android事件DP2中使用(通过jcenter)这个驱动程序,但现在我想创建一个AT驱动程序在nx pico和rpi 3中使用smartdrive,因为没有更多的mraa:

https://github.com/androidthings/contrib-drivers/issues/70

我的问题是 :如果您在此处看到:https://github.com/intel-iot-devkit/upm/blob/master/src/smartdrive/smartdrive.hpp 特别是在这个:https://github.com/intel-iot-devkit/upm/blob/master/src/smartdrive/smartdrive.cxx 在功能

SmartDrive::Run_Seconds(int motor_id, int direction, uint8_t speed, uint8_t duration, bool wait_for_completion, int next_action )

您会看到writeArray(array, sizeof(array));

确定。我需要帮助才能在使用writeRegBuffer(int reg, byte[] buffer, int length)write(byte[] buffer, int length)

的Android内容中使用它

2 个答案:

答案 0 :(得分:1)

根据您链接的PIO CLI tool文档,i2c命令的格式为:

$ pio i2c <bus_name> <slave_address> <command> <reg> <val>

您的电机控制器的默认从地址为0x36并使用寄存器。例如,您可以使用此工具写入“Motor 1 Speed”寄存器(地址0x46),如下所示:

$ pio i2c I2C1 0x36 write-reg-byte 0x46 <speed_value>

代码中的相同操作如下所示:

PeripheralManagerService manager = new PeripheralManagerService();

I2cDevice device = manager.openI2cDevice("I2C1", 0x36);
device.writeRegByte(0x46, speed);

答案 1 :(得分:0)

沿方向A运行电机1 pio i2c I2C1 0x1B write-raw 0x46 128 0x05 0x00 0xD1

沿方向B运行电机1 pio i2c I2C1 0x1B write-raw 0x46 127 0x05 0x00 0xD1

沿方向A运行电机2 pio i2c I2C1 0x1B write-raw 0x4E 128 0x05 0x00 0xD1

沿方向B运行电机2 pio i2c I2C1 0x1B write-raw 0x4E 127 0x05 0x00 0xD1