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