Changes
Page history
Update Overview
authored
Mar 29, 2022
by
Reid Schneyer
Hide whitespace changes
Inline
Side-by-side
Test-Stand/Overview.md
View page @
5f6fd0b9
...
...
@@ -18,6 +18,9 @@ See here: https://git.ece.iastate.edu/danc/MicroCART/-/wikis/Test-Stand/Electron
const
int
DATA_PIN
=
A7
;
const
int
BUTTON_PIN
=
2
;
int
buttonState
=
0
;
const
boolean
NO_HANDSHAKE
=
false
;
const
int
SEND_CODE
=
65
;
int
incomingByte
=
0
;
int
val
=
0
;
const
double
TEN_BIT_SCALAR
=
0.3516
;
// 360/1024
...
...
@@ -41,6 +44,13 @@ boolean buttonActive = false;
boolean
longPressActive
=
false
;
boolean
isInPositionMode
=
true
;
void
serialFlush
()
{
while
(
Serial
.
available
()
>
0
)
{
char
t
=
Serial
.
read
();
}
}
void
setup
()
{
// put your setup code here, to run once:
Serial
.
begin
(
9600
);
...
...
@@ -54,20 +64,20 @@ void setup() {
void
loop
()
{
currTime
=
millis
();
currReading
=
analogRead
(
DATA_PIN
);
if
(
digitalRead
(
BUTTON_PIN
)
==
HIGH
){
if
(
buttonActive
==
false
){
// Button was not pressed last cycle
if
(
digitalRead
(
BUTTON_PIN
)
==
HIGH
)
{
if
(
buttonActive
==
false
)
{
// Button was not pressed last cycle
buttonActive
=
true
;
buttonTimer
=
millis
();
}
if
(((
millis
()
-
buttonTimer
)
>
LONG_PRESS_MILLIS
)
&&
(
longPressActive
==
false
)){
// Detected a long press, swap modes
if
(((
millis
()
-
buttonTimer
)
>
LONG_PRESS_MILLIS
)
&&
(
longPressActive
==
false
))
{
// Detected a long press, swap modes
longPressActive
=
true
;
isInPositionMode
=
!
isInPositionMode
;
isInPositionMode
=
!
isInPositionMode
;
}
}
}
else
{
if
(
buttonActive
==
true
){
// Button was being pressed last cycle
if
(
longPressActive
==
true
){
// Button was being long pressed last cycle, user has released the long press
if
(
buttonActive
==
true
)
{
// Button was being pressed last cycle
if
(
longPressActive
==
true
)
{
// Button was being long pressed last cycle, user has released the long press
longPressActive
=
false
;
}
else
{
// Short press occured, grab current position regardless of mode
...
...
@@ -75,28 +85,38 @@ void loop() {
}
buttonActive
=
false
;
}
}
}
// LED on if we're in position mode, off if we're in rate mode
digitalWrite
(
LED_BUILTIN
,
isInPositionMode
);
if
(
isInPositionMode
==
true
){
if
(
isInPositionMode
==
true
)
{
double
absoluteDegrees
=
TEN_BIT_SCALAR
*
(
double
)
currReading
;
double
relativeDegrees
=
TEN_BIT_SCALAR
*
(
double
)
homePosition
;
double
displayPosition
=
absoluteDegrees
-
relativeDegrees
;
displayPosition
+=
(
displayPosition
<
0
)
?
(
360
)
:
(
0
);
Serial
.
println
(
displayPosition
);
displayPosition
+=
(
displayPosition
<
0
)
?
(
360
)
:
(
0
);
if
(
NO_HANDSHAKE
)
{
Serial
.
println
(
displayPosition
);
}
else
if
(
Serial
.
available
()
>
0
&&
Serial
.
read
()
==
SEND_CODE
)
{
Serial
.
println
(
"DEBUG"
);
Serial
.
println
(
displayPosition
);
}
}
else
{
// We're in rate mode
else
{
// We're in rate mode
deltaTime
=
currTime
-
lastTime
;
deltaReading
=
currReading
-
lastReading
;
rate
=
1000
*
((
TEN_BIT_SCALAR
*
deltaReading
)
/
(
deltaTime
));
Serial
.
println
(
rate
);
}
delay
(
100
);
}
// Reset vars for next cycle
lastTime
=
currTime
;
lastReading
=
currReading
;
}
```
\ No newline at end of file