Здравствуйте форумчане. Столкнулся с такой проблемой. Захотел управлять двигателями постоянного тока с кнопок, через шилд L293D. Написал код, но вместо нормальной работы получается какая-то лажа. Подскажите в чем может быть проблема. Программа компилирует скетч без проблем. Код (C++): const int buttonPin1 = 32; const int ledPin1 = 33; const int buttonPin2 = 34; const int ledPin2 = 35; const int buttonPin3 = 36; const int ledPin3 = 37; #include <AFMotor.h> AF_DCMotor motor1(1); AF_DCMotor motor2(2); AF_DCMotor motor3(3); AF_DCMotor motor4(4); void setup() { pinMode(ledPin1, OUTPUT); pinMode(buttonPin1, INPUT); pinMode(ledPin2, OUTPUT); pinMode(buttonPin2, INPUT); pinMode(ledPin3, OUTPUT); pinMode(buttonPin3, INPUT); motor1.setSpeed(255); motor1.run(RELEASE); motor2.setSpeed(255); motor2.run(RELEASE); motor3.setSpeed(255); motor3.run(RELEASE); motor4.setSpeed(255); motor4.run(RELEASE); } void loop() { int buttonState1 = digitalRead(buttonPin1); if (buttonState1 == HIGH) { digitalWrite(ledPin1, HIGH); motor1.run(RELEASE); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); } else { digitalWrite(ledPin1, LOW); motor1.run(FORWARD); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); motor1.setSpeed(255); motor2.setSpeed(255); motor3.setSpeed(255); motor4.setSpeed(255); } int buttonState2 = digitalRead(buttonPin2); if (buttonState2 == HIGH) { digitalWrite(ledPin2, HIGH); motor1.run(RELEASE); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); } else { digitalWrite(ledPin2, LOW); motor1.run(BACKWARD); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); motor1.setSpeed(255); motor2.setSpeed(255); motor3.setSpeed(255); motor4.setSpeed(255); } int buttonState3 = digitalRead(buttonPin3); if (buttonState3 == HIGH) { digitalWrite(ledPin3, HIGH); motor1.run(RELEASE); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); } else { digitalWrite(ledPin3, LOW); motor1.run(RELEASE); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); motor1.setSpeed(255); motor2.setSpeed(255); motor3.setSpeed(255); motor4.setSpeed(255); } }
а в чем лажа заключается, можно поподробнее? И хорошо бы схему. Кнопки как подключаются? Подтяжка есть?
Лажа в том, что один более мощный двигатель вообще отказывается работать, 3 поменьше крутятся постоянно, останавливаются только при нажатии на третью кнопку. Двигатели подключены к шилду, шилд ставится сверху на ардуино. Я использую мегу, что бы иметь свободные входа-выхода. Поскольку нигде в эмуляторах не нашел где можно использовать мегу, то вставлю схему на уно из интернета Пины к кнопкам 32,34,36 Пины к светодиодам 33,35,37