-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdc_motor.cpp
More file actions
38 lines (32 loc) · 1.06 KB
/
Copy pathdc_motor.cpp
File metadata and controls
38 lines (32 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "dc_motor.h"
#include <Arduino.h>
DCMotor::DCMotor(int forward_pin, int backward_pin, int power_pin,float min_speed, float max_speed)
: _forward_pin(forward_pin), _backward_pin(backward_pin), _power_pin(power_pin), _min_speed(min_speed), _max_speed(max_speed) {
pinMode(_forward_pin, OUTPUT);
pinMode(_backward_pin, OUTPUT);
pinMode(_power_pin, OUTPUT);
}
void DCMotor:: drive_motor(float value) {
float speed = constrain(fabs(value) * _max_speed, 0, _max_speed);
if (speed < _min_speed) {
_stop_motion();
} else if (value > 0) {
_forward_motion(speed);
} else {
_backward_motion(speed);
}
}
void DCMotor::_forward_motion(int speed) {
digitalWrite(_forward_pin, HIGH);
digitalWrite(_backward_pin, LOW);
analogWrite(_power_pin, speed);
}
void DCMotor::_backward_motion(int speed) {
digitalWrite(_forward_pin, LOW);
digitalWrite(_backward_pin, HIGH);
analogWrite(_power_pin, speed);
}
void DCMotor::_stop_motion() {
digitalWrite(_forward_pin, LOW);
digitalWrite(_backward_pin, LOW);
}