c++ - 使用 Arduino Mega 和 Simple-H HV Motor Shield 控制直流电机

标签 c++ c arduino motordriver

<分区>

我正在尝试使用 Simple-H HV 电机屏蔽和 H 桥连接来控制单个直流电机。我需要使用串行监视器控制速度和方向(例如“f 220”表示以 220 的速度前进)。这是我的代码:

M1使电机前进,M2使电机后退。

这是错误:没有匹配函数来调用“HardwareSerial::print()”

我不知道这是否是正确的编码方式。我只是想在编程方面得到一些帮助,因为我在 Arduino 编码方面还很陌生。

const int PWM1 = 2;  //PA - PWM A (M1)
const int PWM2 = 3;  //PB - PWM B (M2)
const int MotorEnable = 4;  //EA - Enable A
const int TestLED = 13;  //LED that tests whether going forward or back. LED lights up = forward, //non-lit = reverse

void setup() {
  pinMode(PWM1, OUTPUT);
  pinMode(PWM2, OUTPUT);

  Serial.begin(9600);
}
void loop() {

   int VariableMove = Serial.print(); // *** ERROR is here! ***
   int speed = Serial.parseInt();

  if (Serial.available() > 0) {
      if (VariableMove = "f" && speed >= 0 && speed <= 255) {
        digitalWrite(MotorEnable, HIGH);
        digitalWrite(PWM1, HIGH);
        digitalWrite(PWM2, LOW);
        Serial.println("Going Forward");
        analogWrite(PWM1, speed);
        }
     if (VariableMove = "r" && speed >= 0 && speed <= 255)  {
        digitalWrite(MotorEnable, HIGH); 
        digitalWrite(PWM1, LOW);
        digitalWrite(PWM2, HIGH); 
        Serial.println("Coming Back");
        analogWrite(PWM2, speed);
       }
       }
  }

最佳答案

你说的那行是抛出错误:

 int VariableMove = Serial.print(); // *** ERROR is here! ***

不清楚您期望该行做什么,但它有两个问题:

  1. Serial.print() 需要一个参数:要打印的数据。错误是由于在没有参数的情况下调用该方法造成的,因为正如错误消息所述:no matching function for call to 'HardwareSerial::print()'

  2. 与其说是编码错误,不如说是使用错误:Serial.print()返回一个 long 表示写入的字节数,稍后在您正在测试的代码中是否为字符串“f”等。因此您可能需要 Serial.read() 或读取传入数据的其他方法之一。

最后这一行 if (VariableMove = "f"

单个 =赋值 要测试等效性,您可以使用两个 ==,如下所示:

if (VariableMove == "f" 这是一个常见的错误。

来自串行库文档:

Returns

size_t (long): print() returns the number of bytes written, though reading that number is optional

关于c++ - 使用 Arduino Mega 和 Simple-H HV Motor Shield 控制直流电机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24152743/

相关文章:

对象数据成员的 C++ 连续内存访问

c++ - 将 C++ 函数名称打印到 C 而不进行修饰

c - movndq 有效吗?

c - c中的pow数字错误

java - 通过 BLE 将 Arduino101 连接到 PC 中的 Java 应用程序

c++ - 将 x264vfw 连接到自定义源过滤器

c++ - OpenCV C++ : Conversion from CV_32F to CV8U using converTo is giving unexpected values

c++ - 使内存可读、可写和可执行是否会受到任何性能影响?

c++ - Arduino - 使用 VS2015 进行简单的基于类的单元测试

c - 嵌入式C:实现逻辑