Hirdetés

Új hozzászólás Aktív témák

  • mprrpm

    tag

    válasz JozsBiker #8118 üzenetére

    Én ezt javaslom:

    #include <dcf77.h>

    #if defined(__AVR__)
    const uint8_t dcf77_analog_sample_pin = 5;
    const uint8_t dcf77_sample_pin = A5; // A5 == d19
    const uint8_t dcf77_inverted_samples = 1;
    const uint8_t dcf77_analog_samples = 1;
    // const uint8_t dcf77_pin_mode = INPUT; // disable internal pull up
    const uint8_t dcf77_pin_mode = INPUT_PULLUP; // enable internal pull up

    const uint8_t dcf77_monitor_led = 18; // A4 == d18

    uint8_t ledpin(const uint8_t led) {
    return led;
    }
    #else
    const uint8_t dcf77_sample_pin = 53;
    const uint8_t dcf77_inverted_samples = 0;

    // const uint8_t dcf77_pin_mode = INPUT; // disable internal pull up
    const uint8_t dcf77_pin_mode = INPUT_PULLUP; // enable internal pull up

    const uint8_t dcf77_monitor_led = 19;

    uint8_t ledpin(const uint8_t led) {
    return led<14? led: led+(54-14);
    }
    #endif

    uint8_t sample_input_pin() {
    const uint8_t sampled_data =
    #if defined(__AVR__)
    dcf77_inverted_samples ^ (dcf77_analog_samples? (analogRead(dcf77_analog_sample_pin) > 200)
    : digitalRead(dcf77_sample_pin));
    #else
    dcf77_inverted_samples ^ digitalRead(dcf77_sample_pin);
    #endif

    digitalWrite(ledpin(dcf77_monitor_led), sampled_data);
    return sampled_data;
    }

    void setup() {
    using namespace Clock;

    Serial.begin(9600);
    Serial.println();
    Serial.println(F("Simple DCF77 Clock V3.1.1"));
    Serial.println(F("(c) Udo Klein 2016"));
    Serial.println(F("www.blinkenlight.net"));
    Serial.println();
    Serial.print(F("Sample Pin: ")); Serial.println(dcf77_sample_pin);
    Serial.print(F("Sample Pin Mode: ")); Serial.println(dcf77_pin_mode);
    Serial.print(F("Inverted Mode: ")); Serial.println(dcf77_inverted_samples);
    #if defined(__AVR__)
    Serial.print(F("Analog Mode: ")); Serial.println(dcf77_analog_samples);
    #endif
    Serial.print(F("Monitor Pin: ")); Serial.println(ledpin(dcf77_monitor_led));
    Serial.println();
    Serial.println();
    Serial.println(F("Initializing..."));

    pinMode(ledpin(dcf77_monitor_led), OUTPUT);
    pinMode(dcf77_sample_pin, dcf77_pin_mode);

    DCF77_Clock::setup();
    DCF77_Clock::set_input_provider(sample_input_pin);

    // Wait till clock is synced, depending on the signal quality this may take
    // rather long. About 5 minutes with a good signal, 30 minutes or longer
    // with a bad signal
    for (uint8_t state = Clock::useless;
    state == Clock::useless || state == Clock::dirty;
    state = DCF77_Clock::get_clock_state()) {

    // wait for next sec
    Clock::time_t now;
    DCF77_Clock::get_current_time(now);

    // render one dot per second while initializing
    static uint8_t count = 0;
    Serial.print('.');
    ++count;
    if (count == 60) {
    count = 0;
    Serial.println();
    }
    }
    }

    void paddedPrint(BCD::bcd_t n) {
    Serial.print(n.digit.hi);
    Serial.print(n.digit.lo);
    }

    void loop() {
    Clock::time_t now;

    DCF77_Clock::get_current_time(now);
    if (now.month.val > 0) {
    switch (DCF77_Clock::get_clock_state()) {
    case Clock::useless: Serial.print(F("useless ")); break;
    case Clock::dirty: Serial.print(F("dirty: ")); break;
    case Clock::synced: Serial.print(F("synced: ")); break;
    case Clock::locked: Serial.print(F("locked: ")); break;
    }
    Serial.print(' ');

    Serial.print(F("20"));
    paddedPrint(now.year);
    Serial.print('-');
    paddedPrint(now.month);
    Serial.print('-');
    paddedPrint(now.day);
    Serial.print(' ');

    paddedPrint(now.hour);
    Serial.print(':');
    paddedPrint(now.minute);
    Serial.print(':');
    paddedPrint(now.second);

    Serial.print("+0");
    Serial.print(now.uses_summertime? '2': '1');
    Serial.println();
    }
    }
    Ez tökéletesen működik, és innen tudod leszedni hozzá a cuccokat meg egy kis infót.
    De ha ez nem tetszene akkor válogass ezek közül. (páran feldolgozták már ezt a témát)

Új hozzászólás Aktív témák