繁体   English   中英

使用操纵杆控制Arduino Mega来控制DC电机

[英]Programming Arduino Mega using joystick to control DC motor

我正在尝试使用带有Arduino Mega的操纵杆控制直流电动机。 我已经能够运行直流电动机,以及分别找到操纵杆的电位计值。 我仅使用操纵杆的y轴,以便在操纵杆抬起时使电动机向前移动,而在操纵杆下降时使电动机向后移动。 操纵杆的中间位置约为504。

// motor one
int enA = 3;
int in1 = 22;
int in2 = 24;
// y_joystick
int y_joy = A1;
int joy_value = 0;
void setup() {
  // set all the motor control pins to outputs
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode (y_joy, INPUT);
  Serial.begin(9600);
}

void loop() {
  joy_value = analogRead(y_joy);
  if (0 < joy_value < 500) {
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    analogWrite(enA, 120);
  } else if (511 < joy_value < 1024) {
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    analogWrite(enA, 120);
  } else {
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    analogWrite(enA, 0);
  }
  Serial.print("y-axis: ");
  Serial.println(analogRead(y_joy));
  Serial.print("\n");
  delay(1000);
}

现在,此代码在串行监视器中打印出操纵杆值,但根本不会旋转电动机。 我肯定连接正确,因为它们与我以前单独运行电动机的方式相同。 我可能在代码中丢失了一些内容,但看不到它,因此感谢您提供任何反馈。

您应该使用具有双重条件的逻辑运算符。 尝试替换您的if / else语句:

if (0 < joy_value < 500) {
    ...
} else if (511 < joy_value < 1024) {
    ...
} else {
    ...
}

通过:

if (0 < joy_value && joy_value < 500) {
    ...
} else if (511 < joy_value && joy_value < 1024) {
    ...
} else {
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM