123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*==========================================================================
- * The sketch shows how to move more than one motor.
- *
- * If more than one motor is moved by one controller all motors will arrive at
- * their targets at the same time. E.g., if the motors are part of a
- * x/y transport system, the transport move on a straight diagonal line to the
- * target coordinates.
- *
- * The sketch also shows examples how the motor properties are set up
- *
- * A 1/16 microstep driver is assumed. You probably want to adjust speed,
- * acceleration and distances if you are using a driver with another microstep
- * resolution.
- ===========================================================================*/
- #include "TeensyStep.h"
- Stepper motor_1(2, 3); //STEP pin = 2, DIR pin = 3
- Stepper motor_2(9,10); //STEP pin = 9, DIR pin = 10
- Stepper motor_3(14,15); //STEP pin = 14, DIR pin = 15
- StepControl controller;
- void setup()
- {
- // setup the motors
- motor_1
- .setMaxSpeed(50000) // steps/s
- .setAcceleration(200000); // steps/s^2
-
- motor_2
- .setMaxSpeed(50000) // steps/s
- .setAcceleration(200000); // steps/s^2
- motor_3
- //.setPullInSpeed(300) // steps/s currently deactivated...
- .setMaxSpeed(10000) // steps/s
- .setAcceleration(50000) // steps/s^2
- .setStepPinPolarity(LOW); // driver expects active low pulses
- }
- void loop()
- {
- constexpr int spr = 16*200; // 3200 steps per revolution
-
- // lets shake
- for(int i = 0; i < 5; i++)
- {
- motor_1.setTargetRel(spr/4); // 1/4 revolution
- controller.move(motor_1);
- motor_1.setTargetRel(-spr/4);
- controller.move(motor_1);
- }
- delay(500);
-
- // move motor_1 to absolute position (10 revolutions from zero)
- // move motor_2 half a revolution forward
- // both motors will arrive their target positions at the same time
- motor_1.setTargetAbs(10*spr);
- motor_2.setTargetRel(spr/2);
- controller.move(motor_1, motor_2);
- // now move motor_2 together with motor_3
- motor_2.setTargetRel(300);
- motor_3.setTargetRel(-800);
- controller.move(motor_2, motor_3);
- // move all motors back to their start positions
- motor_1.setTargetAbs(0);
- motor_2.setTargetAbs(0);
- motor_3.setTargetAbs(0);
- controller.move(motor_1, motor_2, motor_3);
-
- delay(1000);
- }
|