Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #define Y_STEP_PIN 60
- #define Y_DIR_PIN 61
- #define Y_ENABLE_PIN 56
- #define Y_MIN_PIN 14
- #define Y_MAX_PIN 15
- static const uint8_t MOTOR_STEP_PREDELIMITER = 16;
- static const float MOTOR_DEGREE_PER_STEP = 1.8f;
- static const uint8_t DRIVER_PIN_DELAY = 250;
- void setup() {
- pinMode(Y_DIR_PIN, OUTPUT);
- digitalWrite(Y_DIR_PIN, HIGH);
- pinMode(Y_ENABLE_PIN, OUTPUT);
- digitalWrite(Y_ENABLE_PIN, LOW);
- pinMode(Y_STEP_PIN, OUTPUT);
- pinMode(Y_MIN_PIN, INPUT_PULLUP);
- pinMode(Y_MAX_PIN, INPUT_PULLUP);
- Serial.begin(115200);
- }
- void motor_step()
- {
- digitalWrite(Y_STEP_PIN, HIGH);
- delayMicroseconds(DRIVER_PIN_DELAY);
- digitalWrite(Y_STEP_PIN, LOW);
- delayMicroseconds(DRIVER_PIN_DELAY);
- }
- void rotate_on_click()
- {
- static size_t step_counter = 0;
- if (digitalRead(Y_MIN_PIN) || digitalRead(Y_MAX_PIN)) {
- motor_step();
- step_counter++;
- if ((step_counter % 5) == 0) {
- Serial.print(step_counter);
- Serial.print("\n");
- }
- }
- }
- size_t degree2steps(size_t degree)
- {
- return round((float)(MOTOR_STEP_PREDELIMITER * degree) / MOTOR_DEGREE_PER_STEP);
- }
- void rotate_N_degree_on_click(size_t target_angle)
- {
- if (digitalRead(Y_MIN_PIN) || digitalRead(Y_MAX_PIN)) {
- const size_t steps = degree2steps(target_angle);
- for (size_t step_counter = 0; step_counter < steps; step_counter++) {
- motor_step();
- }
- }
- }
- void loop ()
- {
- rotate_on_click();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement