Поворот ШД с помощью библиотеки AccelStepper, и com порта

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем vano_klassik, 28 янв 2019.

  1. vano_klassik

    vano_klassik Нуб

    #include <AccelStepper.h>
    #include <Stepper.h>
    byte lol;
    int i;
    AccelStepper stp(1,5,2);
    AccelStepper stp2(1,6,3);

    void setup () {
    Serial.begin(9600);
    // pinMode(5,INPUT);
    //pinMode(2,INPUT);
    // Stepper.stp(5);
    stp.setSpeed(100);
    stp.setAcceleration(250);
    stp2.setSpeed(100);
    stp2.setAcceleration(250);
    }

    void loop () {
    if(Serial.available() > 0) {
    lol=Serial.read();


    if (lol=='8') {
    //digitalWrite(5, HIGH);


    if (stp.distanceToGo()==0,(stp2.distanceToGo()==0)){
    if (i==126){
    Serial.println("var");
    stp.moveTo(i);
    stp2.moveTo(-i);
    }
    }
    stp.run();
    stp2.run();

    }
    if (lol=='0') {
    //digitalWrite(11,12);
    }
    if (lol=='2') {
    //digitalWrite(11,12);
    stp.move(-10000);
    }
    stp.run();

    delay(5);
    }
    }


    И так. Всем привет. Хошу давать двум ШД команды через com порт ардуино. По логистике вещей он должен сделать 126 шагов по команде "8", но делает 1 шаг. Если в com порт прописать (888888888888).
    То сделает 9 шагов (по количеству 8-ок в диалоговом окне). Нужно исправить. чтобы на одну 8-ку делалось 126 шагов. Прошу помочь
     
  2. timofeevvas

    timofeevvas Нерд

    Ошибка точно в описании движения.
    Из того что я увидел:
    1) Переменная i объявлена, но не инициализирована. И при этом сравнивается со 126.
    2) Я вообще не понял зачем такие условия накручены.
    Если допустимо, чтобы двигатели двигались по очереди, то попробуй команду runToNewPosition() для одного и другого ШД. Если необходимо параллельное, то move() и run()
    Вот тут есть немного: https://forum.arduino.cc/index.php?topic=402640.0
    PS IDE под рукой нет, поэтому рабочий код прям сейчас не напишу.
    А в примерах к библиотеке нету примера на движение? Можно было бы оттуда стянуть
     
    Последнее редактирование: 6 фев 2019
  3. b707

    b707 Гуру

    Вано!
    Во-первых - выложи код по правилам форума, неудобно читать.
    Во-вторых, тебе надо подучить синтаксис языка Си
    Вот, к примеру в этой строчке написана полная чушь:
    Код (C++):
    if (stp.distanceToGo()==0,(stp2.distanceToGo()==0)){