[英]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.