|
|
|
@ -11,6 +11,8 @@ |
|
|
|
|
|
|
|
|
|
#include "accel.h" |
|
|
|
|
|
|
|
|
|
TaskHandle_t clickTaskHandle; |
|
|
|
|
|
|
|
|
|
#define B_VOLT 0 |
|
|
|
|
#define B_VOLT_D 1 |
|
|
|
|
#define B_TEMP 2 |
|
|
|
@ -22,6 +24,11 @@ uint8_t boardData[6] = {0, 0, 0, 0, 0, 0}; |
|
|
|
|
|
|
|
|
|
bool connected = false; |
|
|
|
|
|
|
|
|
|
uint8_t clickCounter = 0; |
|
|
|
|
bool lastTriggerState = false; |
|
|
|
|
long lastClick = 0; |
|
|
|
|
#define clickDiff 250 |
|
|
|
|
|
|
|
|
|
// Defining variables for OLED display
|
|
|
|
|
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2 (U8G2_R2, /* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16); |
|
|
|
|
char displayBuffer[20]; |
|
|
|
@ -35,6 +42,9 @@ unsigned long lastDataRotation; |
|
|
|
|
bool changeSettings = false; |
|
|
|
|
bool changeSelectedSetting = false; |
|
|
|
|
|
|
|
|
|
bool beginnerMode = false; |
|
|
|
|
bool steeringMode = false; |
|
|
|
|
|
|
|
|
|
bool settingsLoopFlag = false; |
|
|
|
|
bool settingsChangeFlag = false; |
|
|
|
|
bool settingsChangeValueFlag = false; |
|
|
|
@ -278,10 +288,15 @@ bool inRange(int val, int minimum, int maximum) { |
|
|
|
|
|
|
|
|
|
// Return true if trigger is activated, false otherwice
|
|
|
|
|
bool triggerActive() { |
|
|
|
|
if (digitalRead(triggerPin) == LOW) |
|
|
|
|
return true; |
|
|
|
|
else |
|
|
|
|
return false; |
|
|
|
|
if (digitalRead(triggerPin) == LOW) { |
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(0.1)); |
|
|
|
|
if (digitalRead(triggerPin) == LOW) return true; |
|
|
|
|
} else { |
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(0.1)); |
|
|
|
|
if (digitalRead(triggerPin) == HIGH) return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; // biased to false
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void calculateThrottlePosition() { |
|
|
|
@ -352,6 +367,36 @@ int getStrength(int points){ |
|
|
|
|
return averageRSSI; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void checkClicks(void * parameter) { |
|
|
|
|
for (;;) { |
|
|
|
|
//Serial.print("Trig: "); Serial.print(triggerActive()); Serial.print(" LAST: "); Serial.println(lastTriggerState);
|
|
|
|
|
if(millis()-lastClick > clickDiff && clickCounter!=0) { |
|
|
|
|
Serial.println("reset"); |
|
|
|
|
clickCounter = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(!triggerActive() && lastTriggerState) { |
|
|
|
|
Serial.println("CLICK##################### "); |
|
|
|
|
int timeSinceLastClick = millis()-lastClick; |
|
|
|
|
lastClick = millis(); |
|
|
|
|
|
|
|
|
|
if(timeSinceLastClick < clickDiff) clickCounter++; |
|
|
|
|
else clickCounter = 1; |
|
|
|
|
if(clickCounter == 3) { |
|
|
|
|
Serial.println("YEAH TRIPPLE"); |
|
|
|
|
steeringMode = !steeringMode; |
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(2000)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
lastClick = millis(); |
|
|
|
|
lastTriggerState = false; |
|
|
|
|
} else if(triggerActive()) { |
|
|
|
|
lastTriggerState = true; |
|
|
|
|
} |
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(20)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//############ End Hardware Helpers
|
|
|
|
|
|
|
|
|
|
//############ Drawing Functions
|
|
|
|
@ -550,6 +595,7 @@ void drawSettingsMenu() { |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void controlSettingsMenu() { |
|
|
|
|
/*
|
|
|
|
|
if (triggerActive()) { |
|
|
|
@ -668,6 +714,15 @@ void setup() { |
|
|
|
|
// setup other pins
|
|
|
|
|
pinMode(triggerPin, INPUT_PULLUP); |
|
|
|
|
|
|
|
|
|
xTaskCreatePinnedToCore( |
|
|
|
|
checkClicks, |
|
|
|
|
"click task", |
|
|
|
|
1000, |
|
|
|
|
NULL, |
|
|
|
|
1, |
|
|
|
|
&clickTaskHandle, |
|
|
|
|
0); |
|
|
|
|
|
|
|
|
|
initAccel(); |
|
|
|
|
|
|
|
|
|
Serial.println("ESPNowSkate Sender"); |
|
|
|
|