通过motorRaws(),您可以以一种原始协议字符串的方式通过串口对两个直流电机进行控制。协议格式与motorRaw()一样。
本函数是在motorRaw()函数基础之上增加了对字符串的数据转换,让您可以直接通过串口发送HEX格式的字符串数据。
其格式为: 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
例如,如果你要4线制驱动板的机器人向前运动,仅需要发送字符串 “3FFFF”, 而不是 “0x3FFFF”或者 “262143”
motorRaws(data);
以一种原始协议字符串的方式对两个直流电机进行控制。
data:16进制无符号长整数数据
串口发送的指令转换如下:
goForward
4P: 0x3FFFF = 3FFFF
6P: 0x9FFFF = 9FFFF
goBackward
4P: 0x0FFFF = 0FFFF
6P: 0x6FFFF = 6FFFF
goLeft
4P: 0x2FFFF = 2FFFF
6P: 0xAFFFF = AFFFF
goRight
4P: 0x1FFFF = 1FFFF
6P: 0x5FFFF = 5FFFF
如果您的电机驱动板是四或六线制,但是控制时序与本库不同,可以使用此函数进行控制。
例如:某六线制电机驱动板向前的使能位序列是0110,那么全速前进的指令就是 0x6FFFF。所以串口发送的数据应为6FFFF
无
// 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) { //because the serial data is ASC format, we should convert to long int. //If you want to goForward, you should send "3FFFF", it means "0x3FFFF". //but if you sent "0x3FFFF" or "262143", it's not work. boxz.motorRaws(comdata); comdata = ""; //Empty the data string } }