X-Git-Url: https://code.citadel.org/?p=the_perfect_clock.git;a=blobdiff_plain;f=the_perfect_clock.ino;fp=the_perfect_clock.ino;h=590a1c7fa51ed51306605a47d52fadeda59ef130;hp=318d641e1cbcaf392fa3527a34085d6862b81cbb;hb=6e022cdc576d7b302584867bfc8f0d4fa90181e2;hpb=e764d8566466269f88e201f3b48686a076971389 diff --git a/the_perfect_clock.ino b/the_perfect_clock.ino index 318d641..590a1c7 100644 --- a/the_perfect_clock.ino +++ b/the_perfect_clock.ino @@ -87,6 +87,27 @@ void setup() { // 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); @@ -101,11 +122,11 @@ void loop() { } } } - } + } 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