|
|
|
@ -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");
|
|
|
|
|