Uno, motor shield, 2 шаговика. работа одновременно...
- Войдите на сайт для отправки комментариев
Сб, 21/05/2016 - 21:16
для теста код набрал код:
// Adafruit Motor shield library // copyright Adafruit Industries LLC, 2009 // this code is public domain, enjoy! #include <AFMotor.h> long randSpeed_1; long randsteps_1; long randSpeed_2; long randsteps_2; // Connect a stepper motor with 48 steps per revolution (7.5 degree) // to motor port #2 (M3 and M4) AF_Stepper motor_1(20, 2); AF_Stepper motor_2(20, 1); void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Stepper test!"); } void loop() { randSpeed_1 = random(4, 70); motor_1.setSpeed(randSpeed_1); randsteps_1 = random(5, 17); randSpeed_2 = random(4, 70); motor_2.setSpeed(randSpeed_1); randsteps_2 = random(5, 17); motor_1.step(randsteps_1, FORWARD, MICROSTEP); motor_2.step(randsteps_2, FORWARD, MICROSTEP); motor_1.step(randsteps_1, BACKWARD, MICROSTEP); motor_2.step(randsteps_2, BACKWARD, MICROSTEP); }
как заставить ходить оба движка одновременно?
а то получается что сначала один ходит влево, затем второй влево, потом так же по очереди вправо.... а заставить одновременно ходить их... не смог.
почитал форум, уяснил что не ту библиотеку использую...
написал на новой библиотеке...
1. скорость хоть и падает в терминал разная - двиглу абсолютно на это начхать... как взял при включении одну, так с ней и работает.
2. шаги рандомны во всех случаях, а необходимо только для цикла туда-обратно. а то получается что влево идет на 7 шагов, вправо на 3....
3. setAcceleration тоже не работает....
в общем еще сильнее запутался в ней....
Доброго дня.
В общем спустя кучу времени, засел снова, тем более что пришли шаговые движки нормальные, а не вырванные\выпиленные из флопов и сд-ромов.
код получился такой:
получается примерно такой алгоритм:
включается, и начинает ходить влево на случайное число, потом возвращается на ту же точку, откуда включился и так в цикле пока не отключишь....
Но нужно немного другое, ход полностью примерно 125 градусов, соответственно влево\право делится на пополам и сейчас код отрабатывает как раз только половину.... то есть от "нулевой" точки двиг ходит только влево, вправо он ни на один шаг не проходит?
полностью программно не знаю как решить эту проблему... а вот частично аппаратно и прораммно немного представляю.
на какую нибудь цифровую ногу вешаю кнопку....
при включении двиг начинает движение вправо, до тех пор пока не сработает кнопка, путем нажатия на кнопку рычагом одетым на ось двигателя и только потом начинает работать по циклу loop(с переделанными значениями конечно)...
как задать при void setup движение вправо - могу, а как остановить его по прерыванию и задать рабочий режим?
Доброго всем дня.
Можете подсказать, куда в вышеуказанный код включить функцию включения\выключения ноги ардуины?
так чтобы моторы вращались непрерывно, но в случайный момент времени на случайно заданное число секунд выключалась нога ардуинки?
код вида:
работает только когда все моторы стоят...
Может так
после добавления данного кода:
ошибка:
по советам в инете добавил:
build.path=C:\TEMP
не помогло.
Не знаю куда и как Вы добавил, но сам код компилится и работает без ошибки. Добавлять его можно в любой скетч и если отсутствуют заддержки типа (delay, while) то работать должен коректно.
нашел, сделал. спасибо.