Здравствуйте, я скинул скетч, подскажите, где я не прав, машинка отказывается выполнять команды с пульта, стоит как вкопанная.
Лучше помещать код в специальные теги. Вот так: Код (C++): #include <IRremote.h> #include <AFMotor.h> AF_DCMotor motor1(1);//Верхнее леквое колесо AF_DCMotor motor2(2);//Нижнее левое колесо AF_DCMotor motor3(3);//Верхнее правое колесо AF_DCMotor motor4(4);//Нижнее правое колесо int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); // Задаем скорость передачи в COM irrecv.enableIRIn(); // Запуск приемника } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value); //Движение вперед... if (results.value == 810) { for(int i = 0; i<2; i++) { motor1.run(FORWARD); motor1.setSpeed(255); motor2.run(FORWARD); motor2.setSpeed(255); motor3.run(FORWARD); motor3.setSpeed(255); motor4.run(FORWARD); motor4.setSpeed(255); break; } irrecv.resume(); // Получаем следующее значение } //Движение назад... if (results.value == 910) { for(int i = 0; i<2; i++) { motor1.run(BACKWARD); motor1.setSpeed(255); motor2.run(BACKWARD); motor2.setSpeed(255); motor3.run(BACKWARD); motor3.setSpeed(255); motor4.run(BACKWARD); motor4.setSpeed(255); break; } irrecv.resume(); // Получаем следующее значение } //Движение вправо... if (results.value == 110) { for(int i = 0; i<2; i++) { motor1.run(FORWARD); motor1.setSpeed(255); motor2.run(FORWARD); motor2.setSpeed(255); motor3.run(BACKWARD); motor3.setSpeed(255); motor4.run(BACKWARD); motor4.setSpeed(255); break; } irrecv.resume(); // Получаем следующее значение } //Движение влево... if (results.value == 610) { for(int i = 0; i<2; i++) { motor1.run(BACKWARD); motor1.setSpeed(255); motor2.run(BACKWARD); motor2.setSpeed(255); motor3.run(FORWARD); motor3.setSpeed(255); motor4.run(FORWARD); motor4.setSpeed(255); break; } irrecv.resume(); // Получаем следующее значение } } }
Для чего Вы используете break в циклах? По сути, цикл for делает только один проход, вместо двух, заданных в параметрах цикла. Коды, полученные с пульта, соответствуют значениям в проверках?
Там же написано: Код (C++): if (irrecv.decode(&results)) { Serial.println(results.value); И далее: ежели value == чему-то там... А ежели не равно? Тогда ничего и не будет. А как узнать, чему оно всё-таки равно? Правильно - посмотреть в терминал
Вариант №1 Вы неправильно подключили железо Вариант №2 вы не правильно его инициализировали http://robotosha.ru/arduino/motor-shield.html