diff --git a/platformio.ini b/platformio.ini
index 5ba9adb..8c4cb0c 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -14,19 +14,7 @@ board = lolin32_lite
framework = arduino
monitor_speed = 115200
lib_deps =
- ottowinter/ESPAsyncWebServer-esphome@^2.1.0
- esphome/AsyncTCP-esphome@^1.2.2
- SPIFFS
- bblanchon/ArduinoJson@^6.19.4
- khoih-prog/ESPAsync_WiFiManager@^1.12.2
rodan/ds3231@^1.0
- ;fmalpartida/LiquidCrystal@^1.5.0
- https://github.com/cyberp/AT24Cx.git
https://github.com/JChristensen/JC_Button.git
-
- ;arduino-libraries/LiquidCrystal@^1.0.7
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library.git
- ;https://github.com/mathertel/LiquidCrystal_PCF8574.git
- ;LiquidCrystal_PCF8574
-
-
+ https://github.com/cyberp/AT24Cx.git
diff --git a/src/index.h b/src/index.h
index dcab25b..658bf88 100644
--- a/src/index.h
+++ b/src/index.h
@@ -56,6 +56,8 @@ const char HTML_startrally1[] PROGMEM = R"rawliteral(
document.getElementById("odo2").innerHTML = data.curDist2;
document.getElementById("time1").innerHTML = data.time1;
document.getElementById("time2").innerHTML = data.time2;
+ document.getElementById("tdiff1").innerHTML = data.TDiff;
+ document.getElementById("tdiff2").innerHTML = data.TDiff;
// }
};
@@ -123,7 +125,8 @@ const char HTML_startrally1[] PROGMEM = R"rawliteral(
OD 1->
123.4567 km
-
DIRECT
+
DIRECT
+
TDiff:
00:00:00
@@ -148,7 +151,8 @@ const char HTML_startrally1[] PROGMEM = R"rawliteral(
OD 2->123.456 km
-
DIRECT
+
DIRECT
+
TDiff:
00:00:00
diff --git a/src/main.cpp b/src/main.cpp
index 83492db..825d81d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -16,11 +16,11 @@
#include
#include
-// #else
-// #include
-// #include
-// #include
-// #include
+#else
+ #include
+ #include
+ #include
+ #include
#endif
#include
// #include
@@ -93,11 +93,11 @@ bool gGotRequestConstHTML[REQUESTCOUNT];
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
-// #include
+#include
#include
#include
// #include
-#include
+#include //don't forget to change the AT24CX.h -> #define AT24CX_ID 0x57 and comment the B1010000. and also comment Wire.begin on AT24CX.cpp
//#define BUFF_MAX 128
@@ -153,14 +153,14 @@ const int lcdRows = 4;
#define LED_BUILTIN 22 // LED built in pada ESP32 Lolin32 Lite
// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
-LiquidCrystal_I2C lcd(0x28, lcdColumns, lcdRows); // marcoschwartz. ujungnya jelek ->remark
-LiquidCrystal_I2C lcd2(I2C_ADDR, lcdColumns, lcdRows); // marcoschwartz. ujungnya jelek ->remark
+// LiquidCrystal_I2C lcd(0x28, lcdColumns, lcdRows); // marcoschwartz. ujungnya jelek ->remark
+LiquidCrystal_I2C lcd(I2C_ADDR, lcdColumns, lcdRows); // marcoschwartz. ujungnya jelek ->remark
// LiquidCrystal_PCF8574 lcd(0.27);
/*-----( Declare objects )-----*/
//LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
// LiquidCrystal_I2C lcd(I2C_ADDR);
-AT24CX mem;
+AT24CX mem; //don't forget to change the AT24CX.h -> #define AT24CX_ID 0x57 and comment the B1010000. and also comment Wire.begin on AT24CX.cpp
boolean cursorON=true;
boolean blinkON=true;
//************************************ END LCD DISPLAY *******************************************
@@ -171,6 +171,7 @@ unsigned int recv_size = 0;
unsigned long prevsettime, intervalsettime = 250;
unsigned long prevtempint, tempinterval=60000;
unsigned long prevtemprally, tempintervalrally=333;
+unsigned long prevCalculatingRallyMillis, calculatingRallyMillis=333;
unsigned long prevcalibrationtime, calibrationtimeinterval = 200;
unsigned long updatecounttime=0;
float temperature;
@@ -309,6 +310,8 @@ byte prevTrip=0;
//
//
+
+
void notFound(AsyncWebServerRequest *request) {
request->send(404);
}
@@ -1138,7 +1141,51 @@ String runningtimeforESP32(byte x1,byte y1)
// Serial.print("runningtimeforesp:");Serial.println(runningTIME);
return runningTIME;
}
-
+String runningtimeforESP32test1(byte x1,byte y1)
+{
+ // String runningTIME;
+ char runningTIME[9]="00:00:00";
+ // lcd.setCursor(x1,y1); //Go to second line of the LCD Screen
+ if(t.hour<10)
+ {
+ // lcd.print("0");
+ runningTIME[0]='0';
+ runningTIME[1]=t.hour;
+ } else {
+ // lcd.print(t.hour);
+ // lcd.print(":");
+ runningTIME[0]=t.hour/10;
+ runningTIME[1]=t.hour%10;
+ }
+ runningTIME[2]=':';
+ if(t.min<10)
+ {
+ // lcd.print("0");
+ // runningTIME+="0";
+ runningTIME[3]='0';
+ runningTIME[4]=t.min;
+ } else {
+ // lcd.print(t.min);
+ // lcd.print(":");
+ runningTIME[3]=t.min/10;
+ runningTIME[4]=t.min%10;
+ }
+ runningTIME[5]=':';
+ if(t.sec<10)
+ {
+ runningTIME[6]='0';
+ runningTIME[7]=t.sec;
+ } else {
+ // lcd.print(t.sec);
+ runningTIME[6]=t.sec/10;
+ runningTIME[7]=t.sec%10;
+ }
+ runningTIME[8]='\0';
+ // Serial.print("t.hour:");Serial.println(t.hour);
+ // Serial.print("runningtimeforesp:");Serial.println(runningTIME);
+ Serial.print("runningtimeforesp:");Serial.println(runningTIME);
+ return String(runningTIME);
+}
void settimeMenu()
{
lcd.setCursor(0,0);
@@ -1158,8 +1205,8 @@ void calibrationMenu()
{
MENU = CALIBRATION;
lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Calibration Back");
+ // lcd.setCursor(0,0);
+ // lcd.print("Calibration Back");
lcd.setCursor(0,1);
lcd.print("Set Distance(Km): ");
lcd.print(calibrationDistance);
@@ -1337,7 +1384,7 @@ void redrawcalibrationMenu()
lcd.print(cur_distance_str);
// }
}
-
+String gcurTime;
void redrawcalibrationMenuForESP32()
{
DynamicJsonDocument getCalib(512);
@@ -1353,8 +1400,9 @@ void redrawcalibrationMenuForESP32()
getCalib["counter"]=VSSCount; /////
getCalib["curTrip"]=String(Trip[curTrip].sub); /////
getCalib["curTripSpeed"]=String(Trip[curTrip].speed); /////
- String curTime = runningtimeforESP32(6,0);
- getCalib["curTime"]=curTime;
+ // String curTime = runningtimeforESP32(6,0);
+ gcurTime = runningtimeforESP32(6,0);
+ getCalib["curTime"]=gcurTime;
getCalib["caldist"]=calibrationDistance;
getCalib["calman"]= Calibration;
@@ -1374,30 +1422,38 @@ void redrawcalibrationMenuForESP32()
}
-// char digitClock(int v){
-// if (v < 10)
-// return '0' + v;
-// else
-// return 'A' + (v-10);
+// // char digitClock(int v){
+// // if (v < 10)
+// // return '0' + v;
+// // else
+// // return 'A' + (v-10);
+// // }
+// void digitClock(int v){
+// // lcd.setCursor(x,y);
+// if (v < 10){
+// lcd.print("0");
+// lcd.print(v);
+// // return '0' + v;
+// }
+// else lcd.print(v);
// }
-void digitClock(int v){
- // lcd.setCursor(x,y);
- if (v < 10){
- lcd.print("0");
- lcd.print(v);
- // return '0' + v;
- }
- else lcd.print(v);
-}
-void digitClock(int v, byte x, byte y){
- lcd.setCursor(x,y);
- if (v < 10){
- lcd.print("0");
- lcd.print(v);
- // return '0' + v;
- }
- else lcd.print(v);
-}
+// void digitClock(int v, byte x, byte y){
+// lcd.setCursor(x,y);
+// if (v < 10){
+// lcd.print("0");
+// lcd.print(v);
+// // return '0' + v;
+// }
+// else lcd.print(v);
+// }
+
+ char cur_speed_str[6];
+ char cur_distance1_str[7];
+ char cur_distance2_str[7];
+ char cur_time1_str[12];
+ char cur_time2_str[12];
+
+ // String gcurTime; // dah di declare di atas
void redrawrallyMenu()
{
@@ -1449,48 +1505,47 @@ void redrawrallyMenu()
runningtime(6,0);
// lcd.setCursor(11,2);
- char cur_speed_str[9];
+ // char cur_speed_str[6];
int speedtemp=(int)speed1;
int speedtemp2=(int)((speed1 - (int)speed1)*10);
- sprintf(cur_speed_str, "%3d.%01dKm/h", speedtemp , speedtemp2 );
+ sprintf(cur_speed_str, "%3d.%01d", speedtemp , speedtemp2 );
// Serial.print(count1); Serial.print(";");Serial.print(Calibration); Serial.print(";");Serial.print(speed1); Serial.print(";");Serial.println(cur_speed_str);
// Serial.print(distance1); Serial.print(";");Serial.print(startdistance); Serial.print(";");Serial.print(startspeed); Serial.println(";");
// lcd.print(cur_speed_str);
- char cur_distance1_str[8];
- char cur_distance2_str[8];
+ // char cur_distance1_str[7];
+ // char cur_distance2_str[7];
// lcd.setCursor(0,1);
-// Serial.print(";redrawRM 2;");
+
if (distance1<100) {
- sprintf(cur_distance1_str, "%02d.%03dKm", (int)distance1, (int)((distance1 - (int)distance1)*1000));
+ sprintf(cur_distance1_str, "%02d.%03d", (int)distance1, (int)((distance1 - (int)distance1)*1000));
}
else if (distance1<1000) {
- sprintf(cur_distance1_str, "%02d.%02dKm", (int)distance1, (int)((distance1 - (int)distance1)*100));
+ sprintf(cur_distance1_str, "%02d.%02d", (int)distance1, (int)((distance1 - (int)distance1)*100));
}
else {
- sprintf(cur_distance1_str, "%03d.%01dKm", (int)distance1, (int)((distance1 - (int)distance1)*10));
+ sprintf(cur_distance1_str, "%03d.%01d", (int)distance1, (int)((distance1 - (int)distance1)*10));
}
// lcd.print(cur_distance1_str);
// lcd.setCursor(0,3);
if (distance2<100) {
- sprintf(cur_distance2_str, "%02d.%03dKm", (int)distance2, (int)((distance2 - (int)distance2)*1000));
+ sprintf(cur_distance2_str, "%02d.%03d", (int)distance2, (int)((distance2 - (int)distance2)*1000));
}
else if (distance2<1000) {
- sprintf(cur_distance2_str, "%02d.%02dKm", (int)distance2, (int)((distance2 - (int)distance2)*100));
+ sprintf(cur_distance2_str, "%02d.%02d", (int)distance2, (int)((distance2 - (int)distance2)*100));
}
else {
- sprintf(cur_distance2_str, "%03d.%01dKm", (int)distance2, (int)((distance2 - (int)distance2)*10));
+ sprintf(cur_distance2_str, "%03d.%01d", (int)distance2, (int)((distance2 - (int)distance2)*10));
}
// lcd.print(cur_distance2_str);
-
// Serial.print(";redrawRM 3;");
float distancetime1 = distance1 * 60 / constanta;
float distancetime2 = distance2 * 60 / constanta;
//Calculating all about TIME,TDiff(including passing 23:59:59)
// lcd.setCursor(9,1);
- uint8_t secs1, mins1, hours1;
+ int secs1, mins1, hours1;
secs1 = (distancetime1-(int)distancetime1)*60;
mins1 = (int)distancetime1 % 60;
@@ -1499,7 +1554,8 @@ void redrawrallyMenu()
unsigned long totsecs1 = secs1 + (mins1*60) + ((long)hours1*3600);
unsigned long totstarttractsecs = starttractsec + (starttractmin*60) + ((long)starttracthour*3600);
unsigned long tottime1 = totsecs1 + totstarttractsecs;
- boolean negatifsign = false;
+ boolean negatifsign1 = false;
+ boolean negatifsign2 = false;
// Serial.print(";redrawRM 4;");
//Serial.print((long)starttracthour*3600); Serial.print(";"); Serial.print(starttractmin*60); Serial.println(";");
//Serial.print(totsecs1); Serial.print(";"); Serial.print(totstarttractsecs); Serial.print(";");
@@ -1509,59 +1565,54 @@ void redrawrallyMenu()
if (!showTIME) {
if (tottime1 >= totcurrentsecs) { //positif means we are too fast, slow down please.
// Serial.println("pos");
- negatifsign = false;
+ negatifsign1 = false;
tottime1 = tottime1 - totcurrentsecs;
}
else { //negatif means we need to hurry, its late
// Serial.println("neg");
- negatifsign = true;
+ negatifsign1 = true;
tottime1 = totcurrentsecs - tottime1;
}
}
- //Serial.print(negatifsign);Serial.print(";"); Serial.println(tottime1);
+ //Serial.print(negatifsign1);Serial.print(";"); Serial.println(tottime1);
hours1 = ((int)(tottime1 / 3600))%24;
mins1 = (int)((tottime1 % 3600)/60);
secs1 = (tottime1 % 60);
- char cur_time1_str[12];
+ // char cur_time1_str[12];
if (showTIME) {
- // lcd.setCursor(9,1);
- // lcd.print(dircount[dircount1]);
- // lcd.print(" ");
- // digitClock(hours1);
- // lcd.print(":");
- // digitClock(mins1);
- // lcd.print(":");
- // digitClock(secs1);
-
- sprintf(cur_time1_str, "%s %02d:%02d:%02d", dircount[dircount1], hours1, mins1, secs1);
+ // sprintf(cur_time1_str, "%s %02d:%02d:%02d", dircount[dircount1], hours1, mins1, secs1);
+ sprintf(cur_time1_str, " %02d:%02d:%02d", hours1, mins1, secs1);
}
else {
- if (hours1 < 10) sprintf(cur_time1_str, "%s %s%01d:%02d:%02d", dircount[dircount1], (negatifsign?"-":" "), hours1, mins1, secs1);
- else sprintf(cur_time1_str, "%s%s%02d:%02d:%02d", dircount[dircount1], (negatifsign?"-":" "), hours1, mins1, secs1);
+ // if (hours1 < 10) sprintf(cur_time1_str, "%s %s%01d:%02d:%02d", dircount[dircount1], (negatifsign1?"-":" "), hours1, mins1, secs1);
+ if (hours1 < 10) sprintf(cur_time1_str, " %s%01d:%02d:%02d", (negatifsign1?"-":" "), hours1, mins1, secs1);
+ // else sprintf(cur_time1_str, "%s%s%02d:%02d:%02d", dircount[dircount1], (negatifsign1?"-":" "), hours1, mins1, secs1);
+ else sprintf(cur_time1_str, "%s%02d:%02d:%02d", (negatifsign1?"-":" "), hours1, mins1, secs1);
}
+ // lcd.setCursor(9,1);
// lcd.print(cur_time1_str);
+ // Serial.println(cur_time1_str);
+ // Serial.print((hours1));Serial.print(":");Serial.print((mins1));Serial.print(":");Serial.println((secs1));
// Serial.print(";redrawRM 5;");
// Print Second TIME
// lcd.setCursor(9,3);
- uint8_t secs2, mins2, hours2;
-
+ int secs2, mins2, hours2;
secs2 = (distancetime2-(int)distancetime2)*60;
mins2 = (int)distancetime2 % 60;
hours2 = (int)distancetime2 / 60;
unsigned long totsecs2 = secs2 + (mins2*60) + ((long)hours2*3600);
unsigned long tottime2 = totsecs2 + totstarttractsecs;
-//Serial.println(tottime2);
if (!showTIME) {
if (tottime2 >= totcurrentsecs) { //positif means we are too fast, slow down please.
- negatifsign = false;
+ negatifsign2 = false;
tottime2 = tottime2 - totcurrentsecs;
}
else { //negatif means we need to hurry, its late
- negatifsign = true;
+ negatifsign2 = true;
tottime2 = totcurrentsecs - tottime2 ;
}
}
@@ -1569,66 +1620,51 @@ void redrawrallyMenu()
hours2 = ((int)(tottime2 / 3600))%24;
mins2 = (int)((tottime2 % 3600)/60);
secs2 = (tottime2 % 60);
- char cur_time2_str[11];
+ // char cur_time2_str[12];
if (showTIME) {
- lcd.setCursor(9,3);
- lcd.print(dircount[dircount2]);
- lcd.print(" ");
- digitClock(hours2);
- lcd.print(":");
- digitClock(mins2);
- lcd.print(":");
- digitClock(secs2);
-
- // sprintf(cur_time2_str, "%s %02d:%02d:%02d", dircount[dircount2], hours2, mins2, secs2);
+ sprintf(cur_time2_str, " %02d:%02d:%02d", hours2, mins2, secs2);
}
else {
- if (hours2<10) sprintf(cur_time2_str, "%s %s%01d:%02d:%02d", dircount[dircount2], (negatifsign?"-":" "), hours2, mins2, secs2);
- else sprintf(cur_time2_str, "%s%s%02d:%02d:%02d", dircount[dircount2], (negatifsign?"-":" "), hours2, mins2, secs2);
+ if (hours2<10) sprintf(cur_time2_str, " %s%01d:%02d:%02d", (negatifsign2?"-":" "), hours2, mins2, secs2);
+ else sprintf(cur_time2_str, "%s%02d:%02d:%02d", (negatifsign2?"-":" "), hours2, mins2, secs2);
}
- // lcd.setCursor(4,0);
- // lcd.print(Trip[curTrip].sub);
- // lcd.setCursor(0,2);
- // lcd.print(Trip[curTrip].speed);
- // lcd.print("Km/H");
+ lcd.setCursor(4,0);
+ lcd.print(Trip[curTrip].sub);
+ lcd.setCursor(0,2);
+ lcd.print(Trip[curTrip].speed);
+ lcd.print("Km/H");
- // lcd.setCursor(11,2);
+ lcd.setCursor(11,2);
+ lcd.print(cur_speed_str);
+ lcd.print("Km/H");
- // lcd.print(cur_speed_str);
+ lcd.setCursor(0,1);
- // lcd.setCursor(0,1);
-
- // lcd.print(cur_distance1_str);
+ lcd.print(cur_distance1_str);
+ lcd.print("Km");
+ lcd.setCursor(9,1);
+ lcd.print(dircount[dircount1]);
+ lcd.print(cur_time1_str);
- // lcd.setCursor(0,3);
-
- // lcd.print(cur_distance2_str);
-
- // lcd.setCursor(9,1);
- // lcd.print(dircount[dircount1]);
- // // lcd.print(cur_time1_str);
- // digitClock(hours1,12,1);
- // lcd.print(":");
- // // lcd.print(digitClock(mins1));
- // digitClock(mins1);
- // lcd.print(":");
- // // lcd.print(digitClock(secs1));
- // digitClock(secs1);
- // // Serial.print(digitClock(hours1));Serial.print(":");Serial.print(digitClock(mins1));Serial.print(":");Serial.println(digitClock(secs1));
-
- // // lcd.setCursor(9,3);
+ lcd.setCursor(0,3);
- // // lcd.print(cur_time2_str);
+ lcd.print(cur_distance2_str);
+ lcd.print("Km");
+ lcd.setCursor(9,3);
+ lcd.print(dircount[dircount2]);
+ lcd.print(cur_time2_str);
+
+// Serial.print("x=");Serial.print(x);Serial.print("y=");Serial.print(y);Serial.println("");
lcd.setCursor(x,y);
// Serial.println("END redrawRM");
}
-void calculationRally() //calculation only ESP32
+void calculationRally_BACKUP() //calculation only ESP32
{
DynamicJsonDocument getRally(1024);
deserializeJson(getRally, getRallyJson);
@@ -1669,7 +1705,7 @@ void calculationRally() //calculation only ESP32
// lcd.print("Km/H");
getRally["Trip"]=String(Trip[curTrip].sub); /////
getRally["TSpeed"]=String(Trip[curTrip].speed); /////
- char sTime[9];
+ char sTime[9]; //global can move to the sprintf to change change constanta
sprintf(sTime, "%02u:%02u:%02u", Trip[curTrip].startHour, Trip[curTrip].startMin, Trip[curTrip].startSec);
getRally["TsTime"]=sTime; /////
getRally["TTime"]=String(Trip[curTrip].subTime); /////
@@ -1677,45 +1713,46 @@ void calculationRally() //calculation only ESP32
// Serial.print(Trip[curTrip].sub);Serial.print(Trip[curTrip].speed);Serial.print(";");Serial.println(Trip[curTrip].startHour);
- String curTime = runningtimeforESP32(6,0);
- getRally["Time"]=curTime;
+ gcurTime = runningtimeforESP32(6,0);
+ // String curTime = runningtimeforESP32(6,0);
+ // char curTime []= runningtimeforESP32(6,0);
+ getRally["Time"]=gcurTime;
// lcd.setCursor(11,2);
- char cur_speed_str[7];
+ // char cur_speed_str[6];
sprintf(cur_speed_str, "%3d.%01d", (int)speed1, (int)((speed1 - (int)speed1)*10));
// lcd.print(cur_speed_str);
getRally["curSpeed"]=cur_speed_str; /////
- // char cur_distance1_str[8];
- // char cur_distance2_str[8];
- char cur_distance1_plain[7];
- char cur_distance2_plain[7];
+
+ // char cur_distance1_plain[7];
+ // char cur_distance2_plain[7];
// lcd.setCursor(0,1);
if (distance1<100) {
- sprintf(cur_distance1_plain, "%02d.%03d", (int)distance1, (int)((distance1 - (int)distance1)*1000));
+ sprintf(cur_distance1_str, "%02d.%03d", (int)distance1, (int)((distance1 - (int)distance1)*1000));
}
else if (distance1<1000) {
- sprintf(cur_distance1_plain, "%02d.%02d", (int)distance1, (int)((distance1 - (int)distance1)*100));
+ sprintf(cur_distance1_str, "%02d.%02d", (int)distance1, (int)((distance1 - (int)distance1)*100));
}
else {
- sprintf(cur_distance1_plain, "%03d.%01d", (int)distance1, (int)((distance1 - (int)distance1)*10));
+ sprintf(cur_distance1_str, "%03d.%01d", (int)distance1, (int)((distance1 - (int)distance1)*10));
}
// lcd.print(cur_distance1_str);
- getRally["curDist1"]=String(cur_distance1_plain);
+ getRally["curDist1"]=String(cur_distance1_str);
// lcd.setCursor(0,3);
if (distance2<100) {
- sprintf(cur_distance2_plain, "%02d.%03d", (int)distance2, (int)((distance2 - (int)distance2)*1000));
+ sprintf(cur_distance2_str, "%02d.%03d", (int)distance2, (int)((distance2 - (int)distance2)*1000));
}
else if (distance2<1000) {
- sprintf(cur_distance2_plain, "%02d.%02d", (int)distance2, (int)((distance2 - (int)distance2)*100));
+ sprintf(cur_distance2_str, "%02d.%02d", (int)distance2, (int)((distance2 - (int)distance2)*100));
}
else {
- sprintf(cur_distance2_plain, "%03d.%01d", (int)distance2, (int)((distance2 - (int)distance2)*10));
+ sprintf(cur_distance2_str, "%03d.%01d", (int)distance2, (int)((distance2 - (int)distance2)*10));
}
// lcd.print(cur_distance2_str);
- getRally["curDist2"]=cur_distance2_plain;
+ getRally["curDist2"]=cur_distance2_str;
float distancetime1 = distance1 * 60 / constanta;
float distancetime2 = distance2 * 60 / constanta;
@@ -1754,17 +1791,17 @@ void calculationRally() //calculation only ESP32
secs1 = (tottime1 % 60);
// char cur_time1_str[12];
- char cur_time1_plain[10];
+ // char cur_time1_plain[10];
if (showTIME) {
- sprintf(cur_time1_plain, "%02d:%02d:%02d", hours1, mins1, secs1);
+ sprintf(cur_time1_str, " %02d:%02d:%02d", hours1, mins1, secs1);
}
else {
- if (hours1<10) sprintf(cur_time1_plain, "%s%01d:%02d:%02d", (negatifsign?"-":" "), hours1, mins1, secs1);
- else sprintf(cur_time1_plain, "%s%02d:%02d:%02d", (negatifsign?"-":" "), hours1, mins1, secs1);
+ if (hours1<10) sprintf(cur_time1_str, " %s%01d:%02d:%02d", (negatifsign?"-":" "), hours1, mins1, secs1);
+ else sprintf(cur_time1_str, "%s%02d:%02d:%02d", (negatifsign?"-":" "), hours1, mins1, secs1);
}
// lcd.print(cur_time1_str);
- getRally["time1"]=cur_time1_plain;
+ getRally["time1"]=cur_time1_str;
getRally["dir1"]=dircount[dircount1];
// Print Second TIME
@@ -1795,26 +1832,19 @@ void calculationRally() //calculation only ESP32
hours2 = ((int)(tottime2 / 3600))%24;
mins2 = (int)((tottime2 % 3600)/60);
secs2 = (tottime2 % 60);
- char cur_time2_str[12];
- char cur_time2_plain[9];
- if (showTIME) {
- sprintf(cur_time2_str, "%s %02d:%02d:%02d", dircount[dircount2], hours2, mins2, secs2);
- }
- else {
- if (hours2<10) sprintf(cur_time2_str, "%s %s%01d:%02d:%02d", dircount[dircount2], (negatifsign?"-":" "), hours2, mins2, secs2);
- else sprintf(cur_time2_str, "%s%s%02d:%02d:%02d", dircount[dircount2], (negatifsign?"-":" "), hours2, mins2, secs2);
- }
+ // char cur_time2_str[12];
+ // char cur_time2_plain[9];
if (showTIME) {
- sprintf(cur_time2_plain, "%02d:%02d:%02d", hours2, mins2, secs2);
+ sprintf(cur_time2_str, " %02d:%02d:%02d", hours2, mins2, secs2);
}
else {
- if (hours2<10) sprintf(cur_time2_plain, "%s%01d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
- else sprintf(cur_time2_plain, "%s%02d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
+ if (hours2<10) sprintf(cur_time2_str, " %s%01d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
+ else sprintf(cur_time2_str, "%s%02d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
}
// lcd.print(cur_time2_str);
- getRally["time2"]=cur_time2_plain;
+ getRally["time2"]=cur_time2_str;
getRally["dir2"]=dircount[dircount2];
// lcd.setCursor(x,y);
@@ -1824,6 +1854,206 @@ void calculationRally() //calculation only ESP32
// Serial.println("ENDCRal");
} ///// calculation only for esp32
+
+void calculationRally() //calculation only ESP32
+{
+ DS3231_get(&t); //Get time
+ // Serial.println("startCRal");
+ updateCount();
+
+ distance1 = (float)count1/((float)Calibration); // * 1);
+ distance2 = (float)count2/((float)Calibration);
+ float speed1=0;
+
+ if ((distance1 - startdistance) > 0) {
+ speed1 = (distance1-startdistance)/(millis()-startspeed)*3600000;
+ }
+
+ startdistance = distance1;
+ startspeed = millis(); //startspeed is only one no startspeed2
+
+ if ((millis()-startsavemillis)>0) {
+
+ if (distance1 != prevdistance1) {
+ mem.writeFloat(832,distance1);
+ prevdistance1 = distance1;
+ }
+ if (distance2 != prevdistance2) {
+ mem.writeFloat(864,distance2);
+ prevdistance2 = distance2;
+ }
+ saveCount();
+ startsavemillis=millis()+2500;
+ }
+ // Serial.print(Trip[curTrip].sub);Serial.print(Trip[curTrip].speed);Serial.print(";");Serial.println(Trip[curTrip].startHour);
+
+ gcurTime = runningtimeforESP32(6,0);
+
+ sprintf(cur_speed_str, "%3d.%01d", (int)speed1, (int)((speed1 - (int)speed1)*10));
+
+ if (distance1<100) {
+ sprintf(cur_distance1_str, "%02d.%03d", (int)distance1, (int)((distance1 - (int)distance1)*1000));
+ }
+ else if (distance1<1000) {
+ sprintf(cur_distance1_str, "%02d.%02d", (int)distance1, (int)((distance1 - (int)distance1)*100));
+ }
+ else {
+ sprintf(cur_distance1_str, "%03d.%01d", (int)distance1, (int)((distance1 - (int)distance1)*10));
+ }
+
+ if (distance2<100) {
+ sprintf(cur_distance2_str, "%02d.%03d", (int)distance2, (int)((distance2 - (int)distance2)*1000));
+ }
+ else if (distance2<1000) {
+ sprintf(cur_distance2_str, "%02d.%02d", (int)distance2, (int)((distance2 - (int)distance2)*100));
+ }
+ else {
+ sprintf(cur_distance2_str, "%03d.%01d", (int)distance2, (int)((distance2 - (int)distance2)*10));
+ }
+
+ float distancetime1 = distance1 * 60 / constanta;
+ float distancetime2 = distance2 * 60 / constanta;
+
+//Calculating all about TIME,TDiff(including passing 23:59:59)
+ int secs1, mins1, hours1;
+
+ secs1 = (distancetime1-(int)distancetime1)*60;
+ mins1 = (int)distancetime1 % 60;
+ hours1 = (int)distancetime1 / 60;
+ unsigned long totcurrentsecs = t.sec + (t.min*60) + ((long)t.hour*3600);
+ unsigned long totsecs1 = secs1 + (mins1*60) + ((long)hours1*3600);
+ unsigned long totstarttractsecs = starttractsec + (starttractmin*60) + ((long)starttracthour*3600);
+ unsigned long tottime1 = totsecs1 + totstarttractsecs;
+ boolean negatifsign = false;
+
+ if (totcurrentsecs=0) { //positif means we are too fast, slow down please.
+ if (tottime1 >= totcurrentsecs) { //positif means we are too fast, slow down please.
+ // Serial.println("pos");
+ negatifsign = false;
+ tottime1 = tottime1 - totcurrentsecs;
+ }
+ else { //negatif means we need to hurry, its late
+ // Serial.println("neg");
+ negatifsign = true;
+ tottime1 = totcurrentsecs - tottime1;
+ }
+ }
+ //Serial.print(negatifsign);Serial.print(";"); Serial.println(tottime1);
+ hours1 = ((int)(tottime1 / 3600))%24;
+ mins1 = (int)((tottime1 % 3600)/60);
+ secs1 = (tottime1 % 60);
+
+ if (showTIME) {
+ sprintf(cur_time1_str, " %02d:%02d:%02d", hours1, mins1, secs1);
+ }
+ else {
+ if (hours1<10) sprintf(cur_time1_str, " %s%01d:%02d:%02d", (negatifsign?"-":" "), hours1, mins1, secs1);
+ else sprintf(cur_time1_str, "%s%02d:%02d:%02d", (negatifsign?"-":" "), hours1, mins1, secs1);
+ }
+
+// Print Second TIME
+ int secs2, mins2, hours2;
+
+ secs2 = (distancetime2-(int)distancetime2)*60;
+ mins2 = (int)distancetime2 % 60;
+ hours2 = (int)distancetime2 / 60;
+
+ unsigned long totsecs2 = secs2 + (mins2*60) + ((long)hours2*3600);
+ unsigned long tottime2 = totsecs2 + totstarttractsecs;
+
+ if (!showTIME) {
+ if (tottime2 >= totcurrentsecs) { //positif means we are too fast, slow down please.
+ negatifsign = false;
+ tottime2 = tottime2 - totcurrentsecs;
+ }
+ else { //negatif means we need to hurry, its late
+ negatifsign = true;
+ tottime2 = totcurrentsecs - tottime2 ;
+ }
+ }
+
+ hours2 = ((int)(tottime2 / 3600))%24;
+ mins2 = (int)((tottime2 % 3600)/60);
+ secs2 = (tottime2 % 60);
+
+ if (showTIME) {
+ sprintf(cur_time2_str, " %02d:%02d:%02d", hours2, mins2, secs2);
+ }
+ else {
+ if (hours2<10) sprintf(cur_time2_str, " %s%01d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
+ else sprintf(cur_time2_str, "%s%02d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
+ }
+ // Serial.println("ENDCRal");
+} ///// calculation only for esp32
+
+void fillRallyJsonWithData() {
+ DynamicJsonDocument getRally(1024);
+ deserializeJson(getRally, getRallyJson);
+ getRally["Trip"]=String(Trip[curTrip].sub); /////
+ getRally["TSpeed"]=String(Trip[curTrip].speed); /////
+ char sTime[9]; //global can move to the sprintf to change change constanta
+ sprintf(sTime, "%02u:%02u:%02u", Trip[curTrip].startHour, Trip[curTrip].startMin, Trip[curTrip].startSec);
+ getRally["TsTime"]=sTime; /////
+ getRally["TTime"]=String(Trip[curTrip].subTime); /////
+ getRally["TDist"]=String(Trip[curTrip].distance); /////
+ getRally["Time"]=gcurTime;
+ getRally["curSpeed"]=cur_speed_str; /////
+ getRally["curDist1"]=String(cur_distance1_str);
+ getRally["curDist2"]=cur_distance2_str;
+ getRally["time1"]=cur_time1_str;
+ getRally["dir1"]=dircount[dircount1];
+
+ getRally["time2"]=cur_time2_str;
+ getRally["dir2"]=dircount[dircount2];
+
+ getRally["counter"]=VSSCount;
+ if (showTIME) getRally["TDiff"]="Time"; //add 1 space
+ else getRally["TDiff"]="TDiff";
+ getRallyJson="";
+ serializeJson(getRally, getRallyJson);
+}
+
+void fillRallyLCDScreen(){
+ lcd.setCursor(6,0);
+ lcd.print(gcurTime);
+ if (showTIME) lcd.print(" Time "); //add 1 space
+ else lcd.print(" TDiff");
+ lcd.setCursor(4,0);
+ lcd.print(Trip[curTrip].sub);
+ lcd.setCursor(0,2);
+ lcd.print(Trip[curTrip].speed);
+ lcd.print("Km/H");
+
+ lcd.setCursor(11,2);
+ lcd.print(cur_speed_str);
+ lcd.print("Km/H");
+
+ lcd.setCursor(0,1);
+
+ lcd.print(cur_distance1_str);
+ lcd.print("Km");
+
+ lcd.setCursor(9,1);
+ lcd.print(dircount[dircount1]);
+ lcd.print(cur_time1_str);
+
+
+ lcd.setCursor(0,3);
+
+ lcd.print(cur_distance2_str);
+ lcd.print("Km");
+
+ lcd.setCursor(9,3);
+ lcd.print(dircount[dircount2]);
+ lcd.print(cur_time2_str);
+
+// Serial.print("x=");Serial.print(x);Serial.print("y=");Serial.print(y);Serial.println("");
+
+ lcd.setCursor(x,y);
+}
void set_cursor_pos(int new_pos)
{
/*
@@ -2150,12 +2380,14 @@ void setup() {
Serial.println("Starting Rally");
//#endif
// pinMode(ledPin, OUTPUT);
- uint32_t freqhx=100000;
+ uint32_t freqhz=400000;
// Wire.begin(15, 13, freqhx); //for lolin32lite sda=15; scl=13
pinMode(simulatorPWMPin,OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(interruptPin, INPUT); //Pull down using resistor to ground
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);
+
+
// attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);
// attachInterrupt(interruptPin, isr, FALLING);
// Wire.begin(I2C_SDA, I2C_SCL); //for lolin32lite sda=15; scl=13
@@ -2174,7 +2406,7 @@ void setup() {
btnESC.begin();
//DS3231_init(DS3231_INTCN);
- //memset(recv, 0, BUFF_MAX);
+ // //memset(recv, 0, BUFF_MAX);
#ifdef DEBUG
Serial.println("GET time");
#endif
@@ -2215,24 +2447,27 @@ Trip[9].startSec = 58;
-
+Wire.begin(I2C_SDA, I2C_SCL, freqhz); //for lolin32lite sda=15; scl=13
//**************************LCD Setup********************************
delay(100);
// lcd.begin (20,4); // initialize the lcd
// lcd.init();
lcd.begin();
- lcd2.begin();
+ // lcd2.begin();
+ // Wire.begin(I2C_SDA, I2C_SCL); //for lolin32lite sda=15; scl=13
// Switch on the backlight
/// lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
- lcd.backlight();
- lcd2.backlight();
+ // lcd.backlight();
+ // lcd2.backlight();
/// lcd.setBacklight(LED_ON);
- lcd2.print("hello rally");
- delay(3000);
+
+ // lcd2.print("hello rally20");
+
+
//***************************END LCD Setup********************************
- getCalibJson.reserve(512);
+getCalibJson.reserve(512);
getRallyJson.reserve(512);
#ifdef DEBUG
Serial.println("Setting time");
@@ -2260,14 +2495,14 @@ DS3231_init(DS3231_CONTROL_INTCN);
//printmemLong(0,20); //startaddress, size
Serial.print("count1=");Serial.print(count1);Serial.print(";count2=");Serial.print(count2);Serial.print("countdiff=");Serial.println(count1count2diff);
-//TESTING MEM AT24cx EEPROM check the address in the library #define ..... 0x57
- // Serial.println("Write 42 to address 12");
- // mem.write(12, 42);
- // Serial.println("Read byte from address 12 ...");
- // byte b = mem.read(12);
- // Serial.print("... read: ");
- // Serial.println(b, DEC);
- // Serial.println();
+// // TESTING MEM AT24cx EEPROM check the address in the library #define ..... 0x57
+// Serial.println("Write 42 to address 12");
+// mem.write(12, 42);
+// Serial.println("Read byte from address 12 ...");
+// byte b = mem.read(12);
+// Serial.print("... read: ");
+// Serial.println(b, DEC);
+// Serial.println();
//count1Seq = 4294967290;
/*
@@ -3592,7 +3827,10 @@ void loop() //loop from VSS RALLY V2
//rallyMenu();
if (!rallyEdit) {
iscalculatingRally=true;
- redrawrallyMenu(); //Distance is edited?
+ // redrawrallyMenu(); //Distance is edited?
+ // calculationRally();
+ Serial.println(millis()-testLoadTime);
+ fillRallyLCDScreen();
iscalculatingRally=false;
}
Serial.println(millis()-testLoadTime);
@@ -3600,7 +3838,9 @@ void loop() //loop from VSS RALLY V2
//prevtemprally+=tempintervalrally;
}
}
-
+ if ((MENU==RALLY || globalClientCalib) && ((now1 - prevCalculatingRallyMillis)>=calculatingRallyMillis)){
+ calculationRally();
+ }
if (MENU==SETTIME) {
//if ((long)(now1 - prevtempint) >=0 ){
if ((now1 - prevtempint) >=tempinterval ){
@@ -3708,26 +3948,21 @@ void loop() //loop from VSS RALLY V2
if ((millis()-broadcastwebsocket) > 333 && !isloadingConst && globalClientRally) {
broadcastwebsocket = millis();
iscalculatingRally=true;
- calculationRally();
+ // calculationRally();
+ Serial.print("calculationRallyTime=");Serial.println(millis()-broadcastwebsocket);
+ fillRallyJsonWithData();
iscalculatingRally=false;
// Serial.println(getRallyJson);
- // Serial.println(millis()-broadcastwebsocket);
ws.textAll(getRallyJson);
- // char pingPong[] = "{\"ping\":1}";
- // ws.textAll(pingPong);
+ Serial.print("calculationRallyToTTime=");Serial.println(millis()-broadcastwebsocket);
}
if ((millis()-broadcastwebsocketcalib) > 499 && !isloadingConst && globalClientCalib) {
broadcastwebsocketcalib = millis();
- //calculationRally();
redrawcalibrationMenuForESP32();
// Serial.println(getCalibJson);
wscal.textAll(getCalibJson);
-
-
- // Serial.print("VSSCount="); Serial.println(VSSCount);
- // Serial.print(ledstate); Serial.print(";");Serial.println(simstate);
}
if(!isloadingConst){
for (int i=(REQUESTCOUNT-1); i>=0; i--){
@@ -3743,7 +3978,6 @@ void loop() //loop from VSS RALLY V2
gGotRequest[i]=false;
Serial.print("REMOVE:");Serial.println(i);
}
-
}
}
VSSCount=millis(); //VSSCount Simulator