创客百科

姿势共享,有节操无门槛参与的创客百科,创客动力之源 \ (^_^) /

用户工具

站点工具


arduino:libraries:boxz_motorraw

motorRaw()

说明

通过motorRaw(),您可以以一种原始协议的方式通过串口对两个直流电机进行控制。
其格式为: 0xF | 0xFF | 0xFF
对应数据: 控制|速度A |速度B
Byte 1(High):最高位,控制位。4个bit分别控制6线制电机驱动板的4个使能引脚IN1~IN4,或者其中2个bit控制4线制驱动的2个使能引脚INA和INB
Byte 2-3:SpeedA速度,范围从0x00到0xFF
Byte 4-5(Low):SpeedB速度,范围从0x00到0xFF

另外,由于串口通信发送的是ASC码,而本函数接收的是十六进制整数,所以需要对Arduino接收的串口数据进行转换。
例如,如果你要4线制驱动板的机器人向前运动,需要发送 “262143”, 而不是 “0x3FFFF”

语法

motorRaw(data);
以一种原始协议的方式对两个直流电机进行控制。

参数

data:16进制无符号长整数数据
串口发送的指令转换如下:
goForward
4P: 0x3FFFF = 262143
6P: 0x9FFFF = 655359
goBackward
4P: 0x0FFFF = 65535
6P: 0x6FFFF = 458751
goLeft
4P: 0x2FFFF = 196607
6P: 0xAFFFF = 720895
goRight
4P: 0x1FFFF = 131071
6P: 0x5FFFF = 393215

如果您的电机驱动板是四或六线制,但是控制时序与本库不同,可以使用此函数进行控制。
例如:某六线制电机驱动板向前的使能位序列是0110,那么全速前进的指令就是 0x6FFFF。所以串口发送的数据应为458751

返回

例子:

//  Hardware support list
//  任何4线或6线制的电机驱动板
 
 
#include "BOXZ.h"
 
int pin_inA = 4;
int pin_inB = 7;
int pin_pwmA = 5;
int pin_pwmB = 6;
unsigned long key;
String comdata = "";
 
void setup()
{
  Serial.begin(9600);
  boxz.initMotor(pin_inA,pin_inB,pin_pwmA,pin_pwmB);
  Serial.println("Hello! BOXZ!");
}
 
void loop()
{
  while (Serial.available() > 0)  
  {
    comdata += char(Serial.read());
    delay(2);
  }
  if (comdata.length() > 0)
  {
    Serial.println(comdata);
	//because the serial data is ASC format, we should convert to long int.
	//If you want to goForward, you should send "262143", it means "0x3FFFF".
	//but if you sent "0x3FFFF" or "3FFFF", it's not work.
    key = comdata.toInt();
    Serial.println(key);
    comdata = "";
    boxz.motorRaw(key);
  }
}

返回BOXZ目录

本页面的其他翻译:
arduino/libraries/boxz_motorraw.txt · 最后更改: 2016/12/25 22:15 (外部编辑)