Camera Slider Firmware 1.0
Firmware for camera slider with stepper motor control and BLE communication
motors.cpp
Go to the documentation of this file.
1// motors.c
2
3#include <AccelStepper.h>
4
5AccelStepper slider_stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
6AccelStepper rotator_stepper(AccelStepper::FULL4WIRE, 7,8,9,10);
7
8
9#define TOP_LIMIT 0
10#define BOTTOM_LIMIT 1
11
12volatile byte ledState = LOW;
13
14
15void limit_motors() {
16 digitalToggle(LED_RED);
17 slider_stepper.disableOutputs();
18 slider_stepper.moveTo(slider_stepper.currentPosition());
19}
20
21
22
24// limit switches
25 pinMode(TOP_LIMIT, INPUT_PULLUP);
26 pinMode(BOTTOM_LIMIT, INPUT_PULLUP);
27 pinMode(LED_RED, OUTPUT);
28
29 attachInterrupt(digitalPinToInterrupt(TOP_LIMIT), limit_motors, FALLING);
30 attachInterrupt(digitalPinToInterrupt(BOTTOM_LIMIT), limit_motors, FALLING);
31
32 // slider
33 slider_stepper.setMaxSpeed(900);
34 slider_stepper.setAcceleration(30);
35 slider_stepper.moveTo(0);
36
37 rotator_stepper.setMaxSpeed(2000);
38 slider_stepper.setAcceleration(30);
39 slider_stepper.moveTo(0);
40
41 digitalToggle(LED_RED);
42 delay(200);
43 digitalToggle(LED_RED);
44
45}
46
47void slide_dist(int dist){
48 slider_stepper.moveTo(slider_stepper.currentPosition() + dist);
49}
50
51
52void rotate_angle(int angle){
53 rotator_stepper.moveTo(rotator_stepper.currentPosition() + angle);
54}
55
56
58 if (!slider_stepper.run()){
59 slider_stepper.disableOutputs();
60 } else {
61 slider_stepper.enableOutputs();
62 }
63
64 if (!rotator_stepper.run()){
65 rotator_stepper.disableOutputs();
66 } else {
67 rotator_stepper.enableOutputs();
68 }
69}
70
72 slider_stepper.run();
73 rotator_stepper.run();
74}
#define TOP_LIMIT
Definition motors.cpp:9
void setup_steppers()
Definition motors.cpp:23
void run_or_hold()
Definition motors.cpp:71
void rotate_angle(int angle)
Definition motors.cpp:52
void limit_motors()
Definition motors.cpp:15
AccelStepper rotator_stepper(AccelStepper::FULL4WIRE, 7, 8, 9, 10)
void run_or_off()
Definition motors.cpp:57
AccelStepper slider_stepper
Definition motors.cpp:5
#define BOTTOM_LIMIT
Definition motors.cpp:10
volatile byte ledState
Definition motors.cpp:12
void slide_dist(int dist)
Definition motors.cpp:47