Всем большой ПРИВЕТ! Помогите вставить две кнопки,нажатие на первую запускает движение в одну сторону и потом мотор просто останавливается,а нажатие на вторую кнопку запускает процесс в обратную сторону.Если нажимать одну и туже кнопку то мотор каждый раз начинает движение в одну сторону. В данном скетче мотор плавно разгоняется и плавно тормозит,затем повторяет всё в другую сторону #include <AccelStepper.h> #define HALFSTEP 8 // Определение пинов для управления двигателем #define motorPin1 3 // IN1 на 1-м драйвере ULN2003 #define motorPin2 4 // IN2 на 1-м драйвере ULN2003 #define motorPin3 5 // IN3 на 1-м драйвере ULN2003 #define motorPin4 6 // IN4 на 1-м драйвере ULN2003 // Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4 // для использования AccelStepper с 28BYJ-48 AccelStepper stepper1 (HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4); void setup (){ stepper1.setMaxSpeed (800.0); stepper1.setAcceleration (100.0); stepper1.setSpeed (200); stepper1.moveTo (20000); } void loop (){ // Изменяем направление, если шаговик достигает заданного положения if (stepper1.distanceToGo ()==0) stepper1.moveTo (-stepper1.currentPosition ()); stepper1.run (); } взято тут- http://robotosha.ru/arduino/stepper-motor-28byj-uln2003-arduino.html#comment-10406
Код (C++): void loop () { static int dir = 0; long distance = 5000; if (!digitalRead(BUTTON1_PIN)) dir = 1; if (!digitalRead(BUTTON2_PIN)) dir = -1; stepper1.moveTo(dir * distance); // Переместиться в абсолютно указанное положение. Само движение запускается функцией run(). // stepper1.move(dir * distance); // Переместиться в относительно указанное положение. Само движение запускается функцией run(). Значение distance может быть больше или меньше нуля. stepper1.run (); }