помогите с написанием кода для шагового двигателя

Тема в разделе "Arduino & Shields", создана пользователем Alex-26rus, 20 апр 2016.

  1. Alex-26rus

    Alex-26rus Нерд

    Здравствуйте уважаемые форумчане!

    Помогите пожалуйста разобраться со скетчем для шаговика. Плата "ардуино уно", драйвер ШГ L298N, ШГ от принтера.

    Скетч взял из примеров, в самой программе. Подключтл, загрузил, всё работает. Вот теперь пытаюсь сделать так чтобы двигатель сперва крутился один раз в одну сторону, затем один раз в другую, с одними параметрами, а затем так-же но только медленнее и делал меньше шагов.

    Какая строчка в коде за что отвечает, я разобрался, но вот как изменить параметры никак не разберусь. Постоянно выдает ту или инную ошибку.

    Подскажите пожалуйста как и что дописАть в скетче чтоб вс заработало.

    Прошу сильно не принать, т.к. в программировании я не силён, только-только познаю эту сложную, но интересную науку.

    Всем откликнувшимся заранее БОЛЬШОЕ СПАСИБО!!!

    вот сам скетч:


    #include <Stepper.h>
    const int stepsPerRevolution = 200;
    Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

    void setup() {
    myStepper.setSpeed(60);
    Serial.begin(9600);
    }

    void loop() {
    Serial.println("clockwise");
    myStepper.step(stepsPerRevolution);
    delay(500);

    Serial.println("counterclockwise");
    myStepper.step(-stepsPerRevolution);
    delay(500);
    }
     
  2. REm

    REm Гик

  3. ANV

    ANV Гуру

  4. ostrov

    ostrov Гуру

    Я сделал восход солнца вручную. Вот фрагмент из основных функций:
    Код (C++):
    void stopStep() { // выключение двигателя
      Step(0, 0, 0, 0);
    }

    void rotateR() // 24 шага по часовой стрелке = 1 оборот оси = 1 мм движения штока вниз
    {
      for (byte i = 0; i < 6; i++) { // один такой блок сдвигает шток на 1/6 мм
        Step(1, 0, 1, 0);            // один такой шаг сдвигает шток на 1/24 мм
        Step(0, 1, 1, 0);
        Step(0, 1, 0, 1);
        Step(1, 0, 0, 1);
      }
      printCount();
    }

    void rotateL() // 24 шага по часовой стрелке = 1 оборота оси = 1 мм движения штока вверх
    {
      for (byte i = 0; i < 6; i++) { // один такой блок сдвигает шток на 1/6 мм
        Step(1, 0, 0, 1);            // один такой шаг сдвигает шток на 1/24 мм
        Step(0, 1, 0, 1);
        Step(0, 1, 1, 0);
        Step(1, 0, 1, 0);
      }
      printCount();
    }

    void Step(boolean a, boolean b, boolean c, boolean d) // один шаг
    {
      digitalWrite(A, a);
      digitalWrite(B, b);
      digitalWrite(C, c);
      digitalWrite(D, d);
      delay(delStep);
    }
     
  5. Alex-26rus

    Alex-26rus Нерд

    С простым движком я как бы уже разобрался, а вот с шаговым никак. Запустить, крутить туда-сюда. А вот чтоб каждое его кручение было с разными скоростями и с разным количеством шагов, никак не пойму. Вот поэтому и прошу помощи в том, что и где подкорректировать в скетче, чтоб хоть было посмотреть, как это должно выглядеть. Но только на примере скетча из примеров.
     
  6. ostrov

    ostrov Гуру

    Я вам дал пример как можно крутить ШД хоть пошагово, хоть пооборотно. Скорость регулируется задержками между шагами/оборотами, без задержек скорость максимальна.