USART通讯,电机

时间:2018-06-01 15:32:24

标签: c++ arduino serial-port

我的Arduino代码有问题。
代码应该是这样的:第一个Arduino Uno通过蓝牙从移动应用程序接收数据。然后将这些数据发送到另一个Arduino Uno,它应该使用H桥控制两个直流电机(它们的方向和速度)。

以下是仅适用于一台电机的代码 接收Arduino接收数据但电机不工作,只有二极管在适当的时刻开/关。当我添加电机代码时,一切工作都会使发送数据的速度慢得多 你知道代码中有什么问题,它不能正常工作吗?

发送数据的Arduino代码:

#include <SoftwareSerial.h>
SoftwareSerial BT1(4,2); // RX, TX
SoftwareSerial port2(8,7); // RX, TX 
char data;
void setup() {
   Serial.begin(9600);
   BT1.begin(9600);
   port2.begin(9600);
}

void loop() {
  BT1.listen();
  if (BT1.available() > 0){
    while (BT1.available() > 0) {
      data = BT1.read();
      port2.write(data);
    }
  }
}

Arduino接收数据的代码:

#include <SoftwareSerial.h>

SoftwareSerial port1(4,2);
char data = '0';

// Motor A
const int in1 = 10;
const int in2 = 9;
const int en1 = 11;

// Motor B
const int in3 = 6;
const int in4 = 5;
const int en2 = 3;

void setup() {
  Serial.begin(9600);

  port1.begin(9600);


  //Enabling pins responsible for motor B and and setting them as output
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(en2, OUTPUT);
}

void demo1() {
  /************** For motor B ****************/
  //Set direction
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);

  //Set speed from 0 to 255
  analogWrite(en2, 250);


  delay(5000);

  /************** For motor B ****************/
  //Change direction
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);


  delay(5000);
}

void stopMotor() {
  //Stopping the motor B
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void loop() {
  if (port1.available() > 0){
    Serial.println("Data from other Arduino:");
    data = port1.read();
    Serial.println(data);
    if (data == '1') {
      demo1();
    } else {
      stopMotor();
    }
  } 
}

0 个答案:

没有答案