Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Software Defined Radio
r0tor
Commits
350793b0
Commit
350793b0
authored
Jul 15, 2019
by
markus
Browse files
Refactor Brake as semaphore
parent
a42e2a62
Changes
6
Hide whitespace changes
Inline
Side-by-side
shackremote_arduino/brake.cpp
0 → 100644
View file @
350793b0
#include "brake.h"
Brake
::
Brake
(
int
brake_pin
)
{
brake_counter_
=
0
;
brake_pin_
=
brake_pin
;
//Pin Settings
pinMode
(
brake_pin_
,
OUTPUT
);
//All Relais Off
digitalWrite
(
brake_pin_
,
HIGH
);
}
void
Brake
::
doBreak
()
{
if
(
brake_counter_
==
0
)
{
digitalWrite
(
brake_pin_
,
HIGH
);
}
else
{
digitalWrite
(
brake_pin_
,
LOW
);
}
}
void
Brake
::
release
()
{
brake_counter_
++
;
}
void
Brake
::
tighten
()
{
brake_counter_
--
;
}
shackremote_arduino/brake.h
0 → 100644
View file @
350793b0
#ifndef BRAKE_H
#define BRAKE_H
#include "settings.h"
#include "Arduino.h"
class
Brake
{
public:
Brake
(
int
brake_pin
);
void
doBreak
();
void
tighten
();
void
release
();
private:
int
brake_counter_
;
int
brake_pin_
;
};
#endif //BRAKE_H
shackremote_arduino/motor.cpp
View file @
350793b0
#include "motor.h"
Motor
::
Motor
(
double
max
,
double
min
,
int
down_pin
,
int
up_pin
,
int
br
e
ak
_pin
,
int
sensor_pin
,
double
degree
,
double
resolution
,
double
span
)
Motor
::
Motor
(
double
max
,
double
min
,
int
down_pin
,
int
up_pin
,
Brake
*
brak
e
,
int
sensor_pin
,
double
degree
,
double
resolution
,
double
span
)
{
max_
=
max
;
min_
=
min
;
span_
=
span
;
brake_
=
brake
;
degree_
=
degree
;
up_pin_
=
up_pin
;
down_pin_
=
down_pin
;
break_pin_
=
break_pin
;
sensor_pin_
=
sensor_pin
;
resolution_
=
resolution
;
//Pin Settings
pinMode
(
up_pin_
,
OUTPUT
);
pinMode
(
down_pin_
,
OUTPUT
);
pinMode
(
break_pin_
,
OUTPUT
);
//All Relais Off
digitalWrite
(
up_pin_
,
HIGH
);
digitalWrite
(
down_pin_
,
HIGH
);
digitalWrite
(
break_pin_
,
HIGH
);
should_rotate_
=
false
;
brake_tightened_
=
true
;
}
void
Motor
::
doMotor
()
...
...
@@ -45,7 +44,7 @@ void Motor::doMotor()
Motor
::
motorError
Motor
::
rotateUp
()
{
releaseBr
e
ak
();
releaseBrak
e
();
digitalWrite
(
down_pin_
,
HIGH
);
digitalWrite
(
up_pin_
,
LOW
);
return
Motor
::
ROT_OK
;
...
...
@@ -53,26 +52,32 @@ Motor::motorError Motor::rotateUp()
Motor
::
motorError
Motor
::
rotateDown
()
{
releaseBr
e
ak
();
releaseBrak
e
();
digitalWrite
(
up_pin_
,
HIGH
);
digitalWrite
(
down_pin_
,
LOW
);
return
Motor
::
ROT_OK
;
}
void
Motor
::
releaseBr
e
ak
()
void
Motor
::
releaseBrak
e
()
{
digitalWrite
(
break_pin_
,
LOW
);
if
(
brake_tightened_
)
{
brake_
->
release
();
brake_tightened_
=
false
;
}
}
void
Motor
::
tightenBr
e
ak
()
void
Motor
::
tightenBrak
e
()
{
digitalWrite
(
break_pin_
,
HIGH
);
if
(
brake_tightened_
==
false
)
{
brake_
->
tighten
();
brake_tightened_
=
true
;
}
}
void
Motor
::
stop
()
{
should_rotate_
=
false
;
tightenBr
e
ak
();
tightenBrak
e
();
digitalWrite
(
down_pin_
,
HIGH
);
digitalWrite
(
up_pin_
,
HIGH
);
}
...
...
shackremote_arduino/motor.h
View file @
350793b0
...
...
@@ -2,6 +2,7 @@
#define MOTOR_H
#include "Arduino.h"
#include "brake.h"
class
Motor
{
...
...
@@ -11,12 +12,12 @@ public:
ROT_VAL_OUT_OF_RANGE
,
ROT_BREAK_NOT_RELEASED
,
ROT_ALREADY_IN_SPAN
};
Motor
(
double
max
,
double
min
,
int
down_pin
,
int
up_pin
,
int
br
e
ak
_pin
,
int
sensor_pin
,
double
degree
,
double
resolution
,
double
span
);
Motor
(
double
max
,
double
min
,
int
down_pin
,
int
up_pin
,
Brake
*
brak
e
,
int
sensor_pin
,
double
degree
,
double
resolution
,
double
span
);
void
doMotor
();
double
getPosition
()
const
;
void
releaseBr
e
ak
();
void
tightenBr
e
ak
();
void
releaseBrak
e
();
void
tightenBrak
e
();
void
stop
();
motorError
setPosition
(
double
);
...
...
@@ -27,11 +28,11 @@ private:
motorError
readMotSensor
();
double
readADC
(
int
);
Brake
*
brake_
;
double
max_
;
double
min_
;
int
down_pin_
;
int
up_pin_
;
int
break_pin_
;
int
sensor_pin_
;
double
position_
;
double
destination_
;
...
...
@@ -39,6 +40,7 @@ private:
double
resolution_
;
double
span_
;
byte
should_rotate_
;
byte
brake_tightened_
;
};
#endif //MOTOR_H
shackremote_arduino/rotor.cpp
View file @
350793b0
...
...
@@ -2,34 +2,36 @@
Rotor
::
Rotor
()
{
azimuth_
=
new
Motor
(
AZIM_MAX
,
AZIM_MIN
,
AZIM_RE_CW
,
AZIM_RE_CCW
,
AZIM_RE_BREAK
,
AZIM_POT
,
AZIM_DEG
,
AZIM_RES
,
AZIM_SPAN
);
elevation_
=
new
Motor
(
ELEV_MAX
,
ELEV_MIN
,
ELEV_RE_DWN
,
ELEV_RE_UP
,
ELEV_RE_BREAK
,
ELEV_POT
,
ELEV_DEG
,
ELEV_RES
,
ELEV_SPAN
);
brake_
=
new
Brake
(
AZIM_RE_BREAK
);
azimuth_
=
new
Motor
(
AZIM_MAX
,
AZIM_MIN
,
AZIM_RE_CW
,
AZIM_RE_CCW
,
brake_
,
AZIM_POT
,
AZIM_DEG
,
AZIM_RES
,
AZIM_SPAN
);
elevation_
=
new
Motor
(
ELEV_MAX
,
ELEV_MIN
,
ELEV_RE_DWN
,
ELEV_RE_UP
,
brake_
,
ELEV_POT
,
ELEV_DEG
,
ELEV_RES
,
ELEV_SPAN
);
}
void
Rotor
::
doRotor
()
{
azimuth_
->
doMotor
();
elevation_
->
doMotor
();
brake_
->
doBreak
();
}
void
Rotor
::
releaseBr
e
akAzimuth
()
void
Rotor
::
releaseBrak
e
Azimuth
()
{
azimuth_
->
releaseBr
e
ak
();
azimuth_
->
releaseBrak
e
();
}
void
Rotor
::
releaseBr
e
akElevation
()
void
Rotor
::
releaseBrak
e
Elevation
()
{
elevation_
->
releaseBr
e
ak
();
elevation_
->
releaseBrak
e
();
}
void
Rotor
::
tightenBr
e
akAzimuth
()
void
Rotor
::
tightenBrak
e
Azimuth
()
{
azimuth_
->
tightenBr
e
ak
();
azimuth_
->
tightenBrak
e
();
}
void
Rotor
::
tightenBr
e
akElevation
()
void
Rotor
::
tightenBrak
e
Elevation
()
{
elevation_
->
tightenBr
e
ak
();
elevation_
->
tightenBrak
e
();
}
void
Rotor
::
stopAzimuth
()
...
...
shackremote_arduino/rotor.h
View file @
350793b0
...
...
@@ -10,6 +10,7 @@
#include "settings.h"
#include "motor.h"
#include "brake.h"
class
Rotor
{
...
...
@@ -20,10 +21,10 @@ public:
double
getAzimuth
()
const
;
double
getElevation
()
const
;
void
releaseBr
e
akAzimuth
();
void
releaseBr
e
akElevation
();
void
tightenBr
e
akAzimuth
();
void
tightenBr
e
akElevation
();
void
releaseBrak
e
Azimuth
();
void
releaseBrak
e
Elevation
();
void
tightenBrak
e
Azimuth
();
void
tightenBrak
e
Elevation
();
void
stopAzimuth
();
void
stopElevation
();
...
...
@@ -37,6 +38,7 @@ public:
private:
Motor
*
azimuth_
;
Motor
*
elevation_
;
Brake
*
brake_
;
};
#endif //ROTOR_H
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment