Closed. This question is off-topic. It is not currently accepting answers. Learn more
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
5年前关闭。
我试图用一个简单的高压电机屏蔽和一个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! ***

目前还不清楚您希望该生产线做什么,但它有两个问题:
Serial.print()需要一个参数:要打印的数据。由于错误消息声明:no matching function for call to 'HardwareSerial::print()'
编码错误比使用错误少:Serial.print()返回一个long表示稍后在测试的代码中写入的字节数(如果是字符串“f”等),因此您可能需要Serial.read()或其他读取传入数据的方法之一。
最后这一行if (VariableMove = "f"
一个=是用来测试两个==的等价性的赋值,如下所示:
if (VariableMove == "f"这是一个常见的错误。
从序列库文档中:
退换商品
size_t(long):print()返回写入的字节数
读那个号码是可选的

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

10-11 16:09