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 строку:
Изменить на: