помогите с кодом

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем exposity, 16 окт 2012.

  1. exposity

    exposity Нуб

    Здравствуйте.
    Помогите, пожалуйста, разобраться... Я хочу запрограммировать моторы подсоединенные к motor shield так, чтобы М1 вращался со скоростью 255, а М2 со скоростью 150. В следующем скетче это возможно сделать?

    #define SPEED_LEFT 6
    #define SPEED_RIGHT 5
    #define DIR_LEFT 7
    #define DIR_RIGHT 4

    void go(int speed, bool reverseLeft, bool reverseRight, int duration)
    {
    analogWrite(SPEED_LEFT, speed);
    analogWrite(SPEED_RIGHT, speed);
    digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH);
    digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH);
    delay(duration);
    }

    void setup()
    {
    for(int i = 5; i <= 8; i++)
    pinMode(i, OUTPUT);
    }

    void loop()
    {
    // Вращение
    go(255, false, true, 5000);

    // Пауза
    go(0, false, false, 1000);

    // Вращение
    go(255, true, false, 5000);

    // Пауза
    go(0, false, false, 1000);
    }


    Заранее благодарен.
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Да, просто разделите параметры функции go:

    Код (Text):

    void go(int speedLeft, int speedRight, bool reverseLeft, bool reverseRight, int duration)
    {
        analogWrite(SPEED_LEFT, speedLeft);
        analogWrite(SPEED_RIGHT, speedRight);
        digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH);
        digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH);
        delay(duration);
    }
     
    …и используйте:

    Код (Text):

    go(255, 150, false, false, 1000);
     
     
  3. exposity

    exposity Нуб

    Спасибо за совет. Этот вариант я пробовал, но тут программа выдает ошибку "too few arguments to function void go(int, int, bool, bool, int)" при этом выделяет строку void go(int speedLeft, int speedRight, bool reverseLeft, bool reverseRight, int duration)
     
  4. nailxx

    nailxx Официальный Нерд Администратор

    Вам стоит немного больше узнать о функциях в языке C.

    Компилятор заругался и чётко описал в чём проблема:

    «не хватает аргуметов для функции void go(int, int, bool, bool, int)»

    То есть, ожидается, что их теперь будет 5, а вы где-то передали меньше. Видимо 4, оставив записи из предыдущего примера `loop`.
     
  5. exposity

    exposity Нуб

    спасибо. это из-за невнимательности и неопытности.