【发布时间】: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?