Ardino CAR и ИК-пульт, не работают 2 задних двигателя при подключении ик-датчика
- Войдите на сайт для отправки комментариев
Вс, 07/07/2013 - 05:14
Написал такой скетч для управления Arduino car c ИК пульта, ик-датчик подключил к серво-поту 2 (он же 10 порт ардуино) Motor control shield. Но когда использую пульт включаются не все 4 двигателя, а только 2 передних М3 и М4,дрругие моторы рабочие, с другими скетчами (например таким) без ик-пульта работают все 4. Питание на входе Motor control shield +7,5в. В чем может быть проблема?
#include <AFMotor.h>; #include <IRremote.h> AF_DCMotor motor1(1); AF_DCMotor motor2(2); AF_DCMotor motor3(3); AF_DCMotor motor4(4); int RECV_PIN = 10; IRrecv irrecv(RECV_PIN); decode_results results; void setup(){ irrecv.enableIRIn(); // включить приемник delay(1000); Serial.begin(9600); } void loop(){ motor1.setSpeed(255); motor2.setSpeed(255); motor3.setSpeed(255); motor4.setSpeed(255); Serial.println(results.value, DEC); if (irrecv.decode(&results)) { delay(300); if (results.value == 1033561079) {inFORWARD();} //Вперед if (results.value == 1217346747) {inBACKWARD();} //Назад if (results.value == 71952287) {inRIGHT();} //Вправо if (results.value == 2351064443) {inLEFT();} //Влево if (results.value == 465573243) {STOP();} //Стоп irrecv.resume(); } } void inFORWARD(){ motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); } void inBACKWARD(){ motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(BACKWARD); motor4.run(BACKWARD); } void inLEFT(){ motor1.run(FORWARD); motor2.run(BACKWARD); motor3.run(BACKWARD); motor4.run(FORWARD); } void inRIGHT(){ motor1.run(BACKWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(BACKWARD); } void STOP(){ motor1.run(RELEASE); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); }
На фото красным выделенно M1 и М2 (задние) которые не работают...
http://hostingkartinok.com/show-image.php?id=6a904835f70524de404cef46c82...
если бы вы прочитали внимательно то наверно нашли бы список пинов которые использует шилд
Note:
The following pins are in use only if the DC/Stepper noted is in use:
D11: DC Motor #1 / Stepper #1 (activation/speed control)
D3: DC Motor #2 / Stepper #1 (activation/speed control)
D5: DC Motor #3 / Stepper #2 (activation/speed control)
D6: DC Motor #4 / Stepper #2 (activation/speed control)
The following pins are in use if any DC/steppers are used:
D4, D7, D8 and D12 are used to drive the DC/Stepper motors via the 74HC595 serial-to-parallel latch.
The following pins are used only if that particular servo is in use:
D9: Servo #1 control.
D10: Servo #2 control.
и на 10 пине как раз сидит контроль колес.. :)
Разьем с Motor control shield, ser1 который, контакт S, с него идет на прямую на контакт 10 арудуино.
И что? вы думаете что если на 10 пин кроме сервы еще воткнуть инфракрасный сенсор то будет все замечательно?
ну тогда думайте дальше почему оно у вас не работает :)
C 13 портом та же истори =(
а вы вообще как его подключаете и куда?
напоял поверх motor control shield контакты на свободние пины, к 13 и 2,1,0(их пока не испоьзую), подключаю к пинам земли и +5в ик приемник motor control shield, (пробовал напрямую к arduino, то же самое). Может быть конфлик библиотек AFMotor и IRremote?
2 порт тоже, всетаки дело не в подключении ик-приемника, передние колеса же на все команды откликаются!
А задние не работают только с эти скетчем...
Решил пробелему правкой конфигов библиотеки IRremote (как описанно в теме). Дело в том что IRremote использует timer2, а AFMotor timer0 для моторов M3, М4 и тоже timer2, но для М1 и М2.
Чтобы исправить, нужно в файле ...\arduino-х.х.х\libraries\IRremote\IRremoteInt.h строку:
Изменить на: