// Note: only write to the display when the readout needs to be updated.
// Speaking I2C on every loop iteration jams the WWVB receiver.
void loop() {
+ int signal;
+ static int total_samples = 0;
+ static int high_samples = 0;
+
+ if (total_samples >= 1000) {
+ if (high_samples > 500) {
+ signal = HIGH;
+ }
+ else {
+ signal = LOW;
+ }
+ total_samples = 0;
+ high_samples = 0;
+ }
+ else {
+ total_samples += 1;
+ if (digitalRead(wwvb) == HIGH) {
+ ++high_samples;
+ }
+ }
+
unsigned long m = millis();
if (m != previous_millis) {
millisecond += (m - previous_millis);
}
}
}
- }
+ }
previous_millis = m;
int pulse_length;
- int signal = digitalRead(wwvb); // is the input high or low right now?
+ //int signal = digitalRead(wwvb); // is the input high or low right now?
if (signal) {
analogWrite(timecodeled, 10); // it's too bright on my board so we dim it; change to digitalWrite() if not needed