Всем привет, Столкнулся с проблемой. Использую библиотеку AFMotor для управления 2 DC моторами. Uno + Amperka Motor Shiled (2 канала 2А). Моторы подключены к управляющим каналам М1, М2. При написании скетча без библиотеку AFMotor оба мотора работают как надо. При использовании библиотеки AFMotor моторы включаются и крутятся только в одну сторону, без исполнения команд остановки и реверса. Моторы работают только на каналах 3, 4. Скетч следующий: #include <AFMotor.h> // Определяем два объекта как DC motors// AF_DCMotor motor1(3); AF_DCMotor motor2(4); int shotPin = 13; // Определяем объект как затвор DSLR// void setup() { Serial.begin(9600); // set up Serial library at 9600 bps// Serial.println("Motor test2"); motor1.setSpeed(255); // Set motor 1 to maximum speed motor2.setSpeed(100); // Set motor 2 to half speed motor1.run(FORWARD); motor1.run(RELEASE); motor1.run(BACKWARD); // run in reverse motor2.run(FORWARD); motor2.run(RELEASE); motor2.run(BACKWARD); // run in reverse } void loop() { //Задаем направление движение вперед motor1.run(FORWARD); //пауза 3 секунды - двигатель крутится delay(3000); //Останавливаем двигатель, и пауза 3 сек. motor1.run(RELEASE); delay(3000); //Переключаем направление вращения motor1.run(BACKWARD); //пауза 3 секунды - двигатель крутится delay(3000); //Задаем направление движение вперед motor2.run(FORWARD); //пауза 3 секунды - двигатель крутится delay(3000); //Останавливаем двигатель, и пауза 3 сек. motor2.run(RELEASE); delay(3000); //Переключаем направление вращения motor2.run(BACKWARD); //пауза 3 секунды - двигатель крутится delay(3000); } Помогите плз..
Не нужна вам библиотека AFMotor, у adafruit их motorshield управляется по другому. Код (Text): #define PIN_MDIR_1 4 #define PIN_MDIR_2 7 #define PIN_MPWR_1 5 #define PIN_MPWR_2 6 void test() { // channel 1 digitalWrite(PIN_MDIR_1, LOW); digitalWrite(PIN_MPWR_1, HIGH); delay(3000); digitalWrite(PIN_MPWR_1, LOW); delay(100); digitalWrite(PIN_MDIR_1, HIGH); digitalWrite(PIN_MPWR_1, HIGH); delay(3000); digitalWrite(PIN_MPWR_1, LOW); // channel 2 digitalWrite(PIN_MDIR_2, LOW); for (byte i = 0; i < 255; i++) { analogWrite(PIN_MPWR_2, i); delay(100); } for (byte i = 255; i > 0; i--) { analogWrite(PIN_MPWR_2, i); delay(100); } digitalWrite(PIN_MDIR_2, HIGH); for (byte i = 0; i < 255; i++) { analogWrite(PIN_MPWR_2, i); delay(100); } for (byte i = 255; i > 0; i--) { analogWrite(PIN_MPWR_2, i); delay(100); } digitalWrite(PIN_MPWR_2, LOW); } void setup() { pinMode(PIN_MDIR_1, OUTPUT); pinMode(PIN_MDIR_2, OUTPUT); pinMode(PIN_MPWR_1, OUTPUT); pinMode(PIN_MPWR_2, OUTPUT); // test(); } void loop() { int pot = analogRead(A0); byte dir = 0; byte pwr = 0; dir = (pot >= 512); if (pot >= 512) pwr = (pot-512)/2; else pwr = (511-pot)/2; digitalWrite(PIN_MDIR_1, dir); digitalWrite(PIN_MDIR_2, dir); analogWrite(PIN_MPWR_1, pwr); analogWrite(PIN_MPWR_2, pwr); }