Библиотека Accelstepper

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Azret, 13 мар 2017.

  1. parovoZZ

    parovoZZ Гуру

    ничего не понял, но жутко интересно.
     
  2. natan04g

    natan04g Нуб

    Ладно, с той проблемой разобрался, но появилась новая - взял жк дисплей для с i2c модулем и когда я пытался вывести информацию на этот дисплей, были проблемы с очисткой - мотор жутко тормозил. Пробовал заменить на millis с if, но не получилось, не фортонуло, проблема не ушла. Что можно с этим сделать?
     
  3. akl

    akl Гуру

    оптимизировать алгоритм работы с дисплеем - например обновлять только ту инофмацию на нем которую нужно обновить и только в тот момент когда это нужно.
     
    vvr нравится это.
  4. yanboy

    yanboy Нуб

    Приветствую . ребят подскажите я в библиотеке accelstepper могу применять концевики ?
     
  5. vvr

    vvr Инженерище

    в библиотеке их естественно нет.
    но использовать их для управления двигателем никто не запрещает.
     
  6. Onkel

    Onkel Гуру

    Конечно могут. Но есть тонкости - если ускорения не бесконечные, то возможно еще будет крутить после сработки концевика, так что нужно аккуратно с этим. Нужно делать такие ускорения, чтобы при сработке концевика шаговик не выломал там что-нибудь, или жесткий стоп с бесконечным ускорением.
     
  7. yanboy

    yanboy Нуб

    а как не подскажите ? или где копаться хотя бы ?
     
  8. yanboy

    yanboy Нуб

    усорения мне впринципе не важны там скоорость двигателя очень мааленькая!!
     
  9. vvr

    vvr Инженерище

    подключаете и опрашиваете как кнопки.
     
  10. yanboy

    yanboy Нуб

    #include <AccelStepper.h>


    AccelStepper Stepper1(1,13,12); //используетпин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)


    int dir = 1; //используется для смены направления


    void setup() {


    Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)


    Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)


    }


    void loop() {


    if(Stepper1.distanceToGo()==0){ //проверка, отработал ли двигатель предыдущее движение


    Stepper1.move(1600*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)


    dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении


    delay(1000); //задержка на 1 секунду


    }


    Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя


    }

    в этом скетче как думаете будет работать ?