Reloj de tiempo real DS 1302

Con el tiempo alguien va comenzar a presentar sus programas con los links de las librerias y asi nos ahorraremos dolores de cabeza.

Este código funciona con esta librería

el ejemplo parecido al tuyo corresponde a la misma librería.
las funciones rtc.getDOWStr no existe asi que bajé la librería sugerida por Arduino y no tuve problemas.
Adjunto sketch y proteus.

// Example sketch for interfacing with the DS1302 timekeeping chip.
//
// Copyright (c) 2009, Matt Sparks
// All rights reserved.
//
// http://quadpoint.org/projects/arduino-ds1302
#include <stdio.h>
#include <DS1302.h>

namespace {
    // Set the appropriate digital I/O pin connections. These are the pin
    // assignments for the Arduino as well for as the DS1302 chip. See the DS1302
    // datasheet:
    //
    // http://datasheets.maximintegrated.com/en/ds/DS1302.pdf
    const int kCePin = 5; // Chip Enable
    const int kIoPin = 6; // Input/Output
    const int kSclkPin = 7; // Serial Clock
    // Create a DS1302 object.
    DS1302 rtc(kCePin, kIoPin, kSclkPin);
    String dayAsString(const Time::Day day) {
        switch (day) {
          case Time::kSunday: return "Domingo";
          case Time::kMonday: return "Lunes";
          case Time::kTuesday: return "Martes";
          case Time::kWednesday: return "Miercoles";
          case Time::kThursday: return "Jueves";
          case Time::kFriday: return "Viernes";
          case Time::kSaturday: return "Sabado";
        }
        return "(dia desconocido)";
    }
    void printTime() {
      // Get the current time and date from the chip.
      Time t = rtc.time();
      // Name the day of the week.
      const String day = dayAsString(t.day);
      // Format the time and date and insert into the temporary buffer.
      char buf[50];
      snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
      day.c_str(),
      t.yr, t.mon, t.date,
      t.hr, t.min, t.sec);
      // Print the formatted string to serial so we can see the time.
      Serial.println(buf);
      }
} // namespace

void setup() {
  Serial.begin(9600);
  // Initialize a new chip by turning off write protection and clearing the
  // clock halt flag. These methods needn't always be called. See the DS1302
  // datasheet for details.
  rtc.writeProtect(false);
  rtc.halt(false);
  // Make a new time object to set the date and time.
  // Sunday, September 22, 2013 at 01:38:50.
  Time t(2013, 9, 22, 1, 38, 50, Time::kSunday);
  // Set the time and date on the chip.
  rtc.time(t);
}
// Loop and print the time every second.
void loop() {
  printTime();
  delay(1000);
}

Arduino 328.pdsprj (21.4 KB)

DS1302_forum.ino (958 Bytes)