【问题标题】:Programming Arduino Mega using joystick to control DC motor使用操纵杆对 Arduino Mega 进行编程以控制直流电机
【发布时间】:2016-01-03 02:51:41
【问题描述】:

我正在尝试使用带有 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);
}

现在这段代码打印出串行监视器中的操纵杆值,但根本不旋转电机。我很肯定这些连接是正确的,因为它们与我之前使用的相同连接,只是让电机自行向前和向后运行。我可能在我的代码中遗漏了一些东西,但只是看不到它,因此感谢任何反馈。

【问题讨论】:

  • enA 是什么?你说你已经使用 arduino 板运行了电机。你也可以展示一下那个草图吗?
  • 不应该是A3,而不是 (D)3?

标签: arduino joystick


【解决方案1】:

您应该使用带有双重条件的逻辑运算符。尝试替换您的 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 {
    ...
}

【讨论】:

  • @Wmson - 也更好用:Serial.println(joy_value);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 2015-08-14
相关资源
最近更新 更多