8000 Optimisation of plotting · astrosander/arduino-speedometer@cc785b2 · GitHub
[go: up one dir, main page]

Skip to content

Commit cc785b2

Browse files
committed
Optimisation of plotting
1 parent b772475 commit cc785b2

File tree

4 files changed

+50
-37
lines changed

4 files changed

+50
-37
lines changed

firmware/Speedometr/DrawDisplay.ino

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
void DrawDisplay(){
22
float dist = num*len;
3-
3+
// for (byte i = 0; i < 15; i++) Secondly[i] = Secondly[i + 1];
4+
// Secondly[15] = vel*100;
45
if(mode == 0){
56
long AllWay = dist;
67
String distance = "";
@@ -41,6 +42,6 @@ void DrawDisplay(){
4142
}
4243
else if(mode == 4) drawPlot1(0, 1, 16, 2, (int*)Secondly);
4344
else if(mode == 5) drawPlot1(0, 1, 16, 2, (int*)FiveMin);
44-
else if(mode == 6) drawPlot1(0, 1, 16, 2, (int*)FifteenMin);
45-
else if(mode == 7) drawPlot1(0, 1, 16, 2, (int*)Hour);
45+
// else if(mode == 6) drawPlot1(0, 1, 16, 2, (int*)FifteenMin);
46+
// else if(mode == 7) drawPlot1(0, 1, 16, 2, (int*)Hour);
4647
}

firmware/Speedometr/DrawPlot.ino

+8-8
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ void plotTick(){
77
for (byte i = 0; i < 15; i++) FiveMin[i] = FiveMin[i + 1];
88
FiveMin[15] = vel*100;
99
}
10-
if(FifteenMinPlot.isReady()){
11-
for (byte i = 0; i < 15; i++) FifteenMin[i] = FifteenMin[i + 1];
12-
FifteenMin[15] = vel*100;
13-
}
14-
if(HourPlot.isReady()){
15-
for (byte i = 0; i < 15; i++) Hour[i] = Hour[i + 1];
16-
Hour[15] = vel*100;
17-
}
10+
// if(FifteenMinPlot.isReady()){
11+
// for (byte i = 0; i < 15; i++) FifteenMin[i] = FifteenMin[i + 1];
12+
// FifteenMin[15] = vel*100;
13+
// }
14+
// if(HourPlot.isReady()){
15+
// for (byte i = 0; i < 15; i++) Hour[i] = Hour[i + 1];
16+
// Hour[15] = vel*100;
17+
// }
1818
}
1919

2020

firmware/Speedometr/EERPROM.ino

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ void EEPROMInit(){
1111
}
1212

1313
void BackUP(){
14+
// for (byte i = 0; i < 15; i++) FiveMin[i] = FiveMin[i + 1];
15+
// FiveMin[15] = vel*100;
1416
data.num = num;
1517
data.numC = numC;
1618
data.TimeDur = TimeDur + millis();

firmware/Speedometr/Speedometr.ino

+36-26
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ GTimer_ms myTimer(1000);
1010
GTimer_ms BackUp(10000);
1111
GTimer_ms SecondlyPlot(1000);
1212
GTimer_ms FiveMinPlot((long)1*3750);
13-
GTimer_ms FifteenMinPlot((long)5*3750);
14-
GTimer_ms HourPlot((long)15*3750);
13+
//GTimer_ms FifteenMinPlot((long)5*3750);
14+
//GTimer_ms HourPlot((long)15*3750);
1515

1616
int Secondly[16], FiveMin[16], FifteenMin[16], Hour[16];
1717
int mean;
@@ -47,51 +47,61 @@ void setup() 8000
4747

4848
DrawDisplay();
4949
}
50-
const byte NumMode = 8;
50+
const byte NumMode = 6;
5151
long lastDelta=0;
52+
bool f = 0;
53+
5254
void loop()
5355
{
5456
enc.tick();
5557
// if(enc.clicks == 2) {mode = (mode + NumMode - 2) % NumMode;return;}
56-
if(enc.clicks == 2) mode = 0;
57-
if(enc.clicks == 6) {BackReset();resetFunc();}
58-
if (enc.click()) {
59-
lcd.clear();
60-
mode = (mode + 1) % NumMode;
61-
// if(mode == 4){lcd.setCursor(0,0); lcd.print("secondly Plot"); delay(500);}
62-
// else if(mode == 5){lcd.setCursor(0,0); lcd.print("1 minute Plot"); delay(500);}
63-
// else if(mode == 6){lcd.setCursor(0,0); lcd.print("5 minute Plot"); delay(500);}
64-
// else if(mode == 7){lcd.setCursor(0,0); lcd.print("15 minute Plot"); delay(500);}
65-
// lcd.clear();
66-
67-
}
68-
69-
if (enc.held()) SpeedFormat = !SpeedFormat;
7058

7159
int val = abs(mean-analogRead(A0));
7260

7361
if(val > 2){
7462
int delta = millis() - lastturn;
75-
if(delta < 80) return;
76-
63+
lastturn = millis();
64+
if(f) return;
65+
f = 1;
66+
if(delta < 70) return;
67+
7768
float PrevVel = vel;
7869
vel = len / (delta) * 1000;
79-
80-
if(lastDelta > 2000 && vel > 15){
81-
vel = PrevVel;
82-
return;
83-
}
70+
//
71+
Serial.print(vel);
72+
Serial.print(" ");
73+
Serial.println(delta);
8474

8575
MaxSpeed = max(MaxSpeed, vel);
8676
MaxAcceleration = max(MaxAcceleration, (vel - PrevVel) / delta * 1000);
8777
num++;
8878

8979
if(delta < 2000)numC++;
9080

91-
lastturn = millis();
81+
82+
}
83+
else
84+
{
85+
if(millis() - lastturn > 4000) vel = 0;
86+
f=0;
9287
}
93-
else if(millis() - lastturn > 10000) vel = 0;
9488

89+
if(enc.clicks == 2) mode = 0;
90+
if(enc.clicks == 5) MaxSpeed=0;
91+
if(enc.clicks == 10) {BackReset();resetFunc();}
92+
if (enc.click()) {
93+
lcd.clear();
94+
mode = (mode + 1) % NumMode;
95+
// if(mode == 4){lcd.setCursor(0,0); lcd.print("secondly Plot"); delay(500);}
96+
// else if(mode == 5){lcd.setCursor(0,0); lcd.print("1 minute Plot"); delay(500);}
97+
// else if(mode == 6){lcd.setCursor(0,0); lcd.print("5 minute Plot"); delay(500);}
98+
// else if(mode == 7){lcd.setCursor(0,0); lcd.print("15 minute Plot"); delay(500);}
99+
// lcd.clear();
100+
//
101+
}
102+
103+
if (enc.held()) SpeedFormat = !SpeedFormat;
104+
95105
if (myTimer.isReady()) DrawDisplay();
96106
if (BackUp.isReady()) BackUP();
97107

0 commit comments

Comments
 (0)
0