Нужна помощь в программировании.

Тема в разделе "Arduino & Shields", создана пользователем ZolbergN, 3 ноя 2015.

  1. ZolbergN

    ZolbergN Нерд

    Здравствуйте, помогите пожалуйста с кодом:

    #include <IRremote.h>

    int RECV_PIN = 11;
    int MOTOR_PIN = 1;
    IRrecv irrecv(RECV_PIN);
    decode_results results;

    void setup()
    {
    Serial.begin(9600);
    irrecv.enableIRIn(); // Запуск приемника
    pinMode(MOTOR_PIN, OUTPUT);
    }

    void loop() {
    if (irrecv.decode(&results)) {
    Serial.println(results.value);
    if (results.value == 2908251746) // При получении кодировки 1
    {
    digitalWrite(MOTOR_PIN, HIGH); //
    }
    if (results.value == 1931099650) // кодировки 2
    {
    digitalWrite(MOTOR_PIN, LOW); //
    }
    irrecv.resume(); // Получаем следующее значение
    }
    }

    мне нужно, чтобы мотор по команде пульта начинал движение, но он не двигается, где ошибка может быть?
    Мотор стоит на моторшилде
     
  2. а он по одному проводу запитывается?
     
  3. ZolbergN

    ZolbergN Нерд

    да
     
  4. хм, может стоит второй подключить? 0)
     
  5. ZolbergN

    ZolbergN Нерд

    Ну, у меня он вот так вот стоит
     

    Вложения:

  6. ZolbergN

    ZolbergN Нерд

    Смотрите, я тут набросал код:

    include <AFMotor.h>
    #include <IRremote.h>

    AF_DCMotor motor(1);
    AF_DCMotor motor2(2);

    int RECV_PIN = 11;
    int MOTOR_PIN = 2;
    IRrecv irrecv(RECV_PIN);
    decode_results results;

    void setup()
    {
    Serial.begin(9600);
    irrecv.enableIRIn(); // Запуск приемника
    pinMode(MOTOR_PIN, OUTPUT);
    }

    void loop() {
    if (irrecv.decode(&results)) {
    Serial.println(results.value);
    if (results.value == 2908251746) // При получении кодировки 1
    {
    digitalWrite(MOTOR_PIN, HIGH);
    motor2.setSpeed(0);
    motor2.run(FORWARD);
    motor.setSpeed(0);
    motor.run(FORWARD);
    }
    else {
    motor.setSpeed(1000);
    motor.run(FORWARD);
    motor2.setSpeed(1000);
    motor2.run(FORWARD);
    }
    if (results.value == 1931099650) // кодировки 2
    {
    digitalWrite(MOTOR_PIN, LOW); //
    }
    irrecv.resume(); // Получаем следующее значение
    }
    }
    Но почему то работает по кнопке на пульте только один мотор, а если вместо этих двух строк
    AF_DCMotor motor(1);
    AF_DCMotor motor2(2);
    , написать
    AF_DCMotor motor3(3);
    AF_DCMotor motor4(4); То работает два двигателя по кнопке на пульте.
    С чем это связано?