Skip to content

Commit 643feea

Browse files
Create SinclairEnduranceTimer
1 parent 67f3719 commit 643feea

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
#include <EEPROM.h>
2+
#include <avr/eeprom.h>
3+
4+
struct timeEvent_t
5+
{
6+
byte init;
7+
byte event;
8+
unsigned long time;
9+
}
10+
TimeEvent;
11+
12+
int eventaddress = 0;
13+
14+
bool ison = false;
15+
int val = 1024;
16+
17+
void halt()
18+
{
19+
Serial.println(F("halting"));
20+
21+
do
22+
{
23+
24+
} while (true);
25+
}
26+
27+
void clearEEPROM()
28+
{
29+
int i;
30+
31+
Serial.println(F("clearing EEPROM"));
32+
33+
for (i = 0; i < 1024; i++)
34+
{
35+
EEPROM.write(i, 255);
36+
}
37+
38+
eventaddress = 0;
39+
40+
Serial.println(F("done"));
41+
42+
// uncomment to halt program and allow to start recording records on a clear eeprom
43+
halt(); //comment to start recording logs after clearing eeprom
44+
}
45+
46+
47+
void readEvents()
48+
{
49+
int evaddress = eventaddress;
50+
int nextevent = 0;
51+
52+
Serial.println(F("reading stored logs"));
53+
54+
do
55+
{
56+
eeprom_read_block((void*)&TimeEvent, (void*)evaddress, sizeof(timeEvent_t));
57+
58+
if (TimeEvent.init == 42)
59+
{
60+
Serial.print(F("event found at: "));
61+
Serial.println(evaddress);
62+
nextevent = evaddress + sizeof(timeEvent_t);
63+
if (TimeEvent.event == 0) {
64+
Serial.print(F("off at "));
65+
}
66+
if (TimeEvent.event == 1) {
67+
Serial.print(F("on at "));
68+
}
69+
Serial.println(TimeEvent.time);
70+
evaddress += sizeof(timeEvent_t);
71+
}
72+
else
73+
{
74+
evaddress++;
75+
}
76+
} while (evaddress < 1000);
77+
78+
eventaddress = nextevent;
79+
80+
Serial.println(F("done"));
81+
}
82+
83+
84+
void writeEvent()
85+
{
86+
eeprom_write_block((void*)&TimeEvent, (void*)eventaddress, sizeof(timeEvent_t));
87+
Serial.print(F("written at: "));
88+
Serial.println(eventaddress);
89+
eventaddress += sizeof(timeEvent_t);
90+
}
91+
92+
93+
void setup() {
94+
Serial.begin(9600);
95+
96+
Serial.print(F("time event structure is: "));
97+
Serial.print(sizeof(timeEvent_t));
98+
Serial.println(F(" bytes long"));
99+
100+
readEvents();
101+
102+
//clearEEPROM(); // comment to preserve prior execution logs
103+
104+
Serial.println(F("ready to record events"));
105+
}
106+
107+
108+
void loop() {
109+
int sensorValue;
110+
111+
// read the value from the sensor:
112+
sensorValue = analogRead(A0);
113+
114+
val = (val * 4.0 + sensorValue ) / 5.0;
115+
116+
/*
117+
Serial.print(sensorValue);
118+
Serial.print(" ");
119+
Serial.println(val);
120+
*/
121+
122+
if ((val < 950) && (ison == false))
123+
{
124+
TimeEvent.init = 42;
125+
TimeEvent.event = 1;
126+
TimeEvent.time = millis();
127+
writeEvent();
128+
129+
ison = true;
130+
Serial.print(F("on at "));
131+
Serial.println(TimeEvent.time);
132+
}
133+
134+
if ((val > 1000) && (ison == true))
135+
{
136+
TimeEvent.init = 42;
137+
TimeEvent.event = 0;
138+
TimeEvent.time = millis();
139+
writeEvent();
140+
141+
ison = false;
142+
Serial.print(F("off at "));
143+
Serial.println(TimeEvent.time);
144+
}
145+
146+
}
147+

0 commit comments

Comments
 (0)