我正在研究RC汽车项目,我正在使用2个直流电机作为后轮,前面有一个伺服电机,用于转向,带有纳米arduino作为微控制器,HC 06从属蓝牙接收器和用于Fwd / Rev的L298N模块和PWM。对于我的发射器我使用nano arduino操纵杆和HC-06主人。
我需要我的操纵杆Y轴来驱动前轮/转速和X轴以进行转向。我为X轴转向单独测试伺服而且它工作正常,当测试Y轴上的FWD / REV代码时它工作了..但是当我结合我的代码它不起作用我的伺服开始摇动和我的直流电机开始回应x和y !!
有人可以帮助我。
以下是使用的代码:
主码(发射器);
select Count(*) from Table1
从代码(仅限伺服);
// == MASTER DEVICE - Joystick ==
//int xAxis, yAxis;
void setup() {
Serial.begin(9600); // Default communication rate of the Bluetooth
module
}
void loop() {
xAxis = analogRead(A0); // Read Joysticks X-axis
yAxis = analogRead(A1); // Read Joysticks Y-axis
// Send the values via the serial port to the slave HC-05 Bluetooth
device
Serial.write(xAxis/4); // Dividing by 4 for converting from 0 -
1023 to 0 - 256, (1 byte) range
Serial.write(yAxis/4);
delay(20);
}
直流电机的从代码FWD / REV;
#include <Servo.h>
Servo myServo;
int yAxis;
void setup() {
myServo.attach(3);
Serial.begin(9600); // Default communication rate of the Bluetooth
module
}
void loop() {
yAxis = 510 / 4;
// Read the incoming data from the Joystick, or the master
Bluetooth device
if(Serial.available() > 0){ // Checks whether data is comming from
the serial port
yAxis = Serial.read(); // Reads the data from the serial port
}
delay(10);
myServo.write(yAxis);
delay(10);
}
我想将它们组合在一起,因此其中一个轴用于直流电机FWD / REV,另一个轴用于伺服电机的左/右。
答案 0 :(得分:0)
您必须对发送的数据更加明确。
不要发送x = 20,y = 30作为char [2] = {20,30}。
最小值为char [4] = {'x',20,'y',30}。
然后你将检查你是否收到了4个字符的完整数据报,然后你可以检查你是否不将x与y混淆。