123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include <AccelStepper.h>
- // Define the pinss
- #define STEP_PIN1 5
- #define DIR_PIN1 4
- #define ENABLE_PIN1 6
- // Define the steps per revolution of your stepper motor
- const float STEPS_PER_REVOLUTION = 200.0;
- float i = 20; //Gear Transmission
- // Create an instance of the AccelStepper class
- AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN1, DIR_PIN1);
- void setup() {
- Serial.begin(9600); // Set the baud rate to the same value used in Python
- // Set the maximum speed and acceleration (you can adjust these values)
- stepper.setMaxSpeed(400);
- stepper.setAcceleration(100.0);
- // Set the enable pin as an output and disable the motor by default
- pinMode(ENABLE_PIN1, OUTPUT);
- digitalWrite(ENABLE_PIN1, HIGH);
- // Set the motor direction (0 for clockwise, 1 for counter-clockwise)
- stepper.setPinsInverted(false, false, true); // Adjust the last parameter if needed
- }
- void loop() {
- if (Serial.available() > 0) {
- // Read the incoming value from Python
- int value = Serial.parseInt();
- if ((value > -125) && (value < 125)) {
- rotateStepper(value * i);
- Serial.println(value);
- }
- }
- delay(1000);
- }
- void rotateStepper(float degrees) {
- // Calculate the number of steps based on the desired angle
- float steps = degrees * (STEPS_PER_REVOLUTION / 360.0);
- // Move the stepper to the specified number of steps
- stepper.move(steps);
- // Enable the motor
- digitalWrite(ENABLE_PIN1, LOW);
- // Run the stepper until it reaches the target position
- while (stepper.distanceToGo() != 0) {
- stepper.run();
- }
- // Disable the motor
- digitalWrite(ENABLE_PIN1, HIGH);
- }
|