Paso 1: código de
Copia y esta en el IDE de Arduino y quema a la Junta. Para esto estoy usando un ACEDuino que tiene un ATMega 328 P.
Para configurar la fecha y hora es todo hecho el monitor serie, que es más fácil que he encontrado.///////////////////////////////////////////
Setter de datos y tiempo RTC / /
// //
Este programa permite al usuario / /
para establecer la fecha y hora de un RTC / /
usando el I2C. //
// //
// Codes by: //
eGizmo Mechatronix Central / /
Taft, Manila, Filipinas / /
http://www.egizmo.com / /
15 de abril de 2013 / /
///////////////////////////////////////////#include < Wire.h >
const int DS1307 = 0x68; Dirección del DS1307 ver hojas de datos
const char * días [] =
{"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sabado"};
const char * meses [] =
{"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
Inicializa todos los valores:
bytes segundo = 0;
minutos de byte = 0;
hora de byte = 0;
día de la semana byte = 0;
byte monthday = 0;
mes de byte = 0;
año de byte = 0;void setup() {}
Wire.Begin();
Serial.Begin(9600);
Delay(2000); Este retraso permite el MCU leer la fecha y hora actuales.
Serial.Print ("la fecha y hora actual es:");
printTime();
Serial.println ("por favor cambio a nueva línea terminando la configuración de la parte inferior derecha del Monitor Serial");
Serial.println ("¿quieres la fecha y hora ahora? S/N");
mientras (!. Delay(10) de serial.Available());
Si (Serial.read() == 'y' || Serial.Read() == 'Y')
Este conjunto de funciones permite al usuario cambiar la fecha y hora
{
Serial.Read();
setTime();
Serial.Print ("ahora es la fecha y hora actual:");
printTime();
}
Serial.println ("gracias.");
}Función continua para convertir bytes a decimales y viceversa
void loop() {}
}
byte decToBcd(byte val) {}
regresar ((val/10 * 16) + (val % 10));
}
byte bcdToDec(byte val) {}
regresar ((val/16 * 10) + (val % 16));
}Este sistema de códigos es que permite la entrada de datos
{} void setTime()
Serial.Print ("Escriba el año en curso, 00-99. - ");
año = readByte();
Serial.println(Year);
Serial.Print ("introduce el mes en curso, 1-12. - ");
mes = readByte();
Serial.println(months[month-1]);
Serial.Print ("introduce el día actual del mes, 1-31. - ");
MonthDay = readByte();
Serial.println(MonthDay);
Serial.println ("introduce el día de la semana, 1-7.");
Serial.Print ("1 el sol | 2 Mon | 3 el martes | Weds 4 | 5 Jue | 6 el viernes | Sat 7 - ");
día de la semana = readByte();
Serial.println(Days[Weekday-1]);
Serial.Print ("por favor, introduzca la hora actual en formato 24 h, 0-23. - ");
hora = readByte();
Serial.println(hour);
Serial.Print ("Introduzca el 0-59 minutos, actual. - ");
minutos = readByte();
Serial.println(minute);
segundo = 0;
Serial.println ("los datos introducidos.");
Los siguientes códigos transmite los datos a la RTC
Wire.beginTransmission(DS1307);
Wire.Write(byte(0));
Wire.Write(decToBcd(Second));
Wire.Write(decToBcd(minute));
Wire.Write(decToBcd(hour));
Wire.Write(decToBcd(Weekday));
Wire.Write(decToBcd(MonthDay));
Wire.Write(decToBcd(month));
Wire.Write(decToBcd(Year));
Wire.Write(byte(0));
Wire.endTransmission();
Extremos de la transmisión de datos
}
byte readByte() {}
mientras (!. Delay(10) de serial.Available());
lectura de byte = 0;
byte incomingByte = Serial.read();
mientras que (incomingByte! = '\n') {}
Si (incomingByte > = '0' & & incomingByte < = '9')
lectura = lectura * 10 + (incomingByte - '0');
otra cosa;
incomingByte = Serial.read();
}
Serial.Flush();
volver a leer;
}
void printTime() {}
buffer de Char [3];
const char * AMPM = 0;
readTime();
Serial.Print(Days[Weekday-1]);
Serial.Print("");
Serial.Print(months[month-1]);
Serial.Print("");
Serial.Print(MonthDay);
Serial.Print (", 20");
Serial.Print(Year);
Serial.Print("");
Si (horas > 12) {}
hora-= 12;
AMPM = "PM";
}
otro AMPM = "AM";
Serial.Print(hour);
Serial.Print(":");
sprintf (buffer, "% 02d", minuto);
Serial.Print(buffer);
Serial.println(AMPM);
}
void readTime() {}
Wire.beginTransmission(DS1307);
Wire.Write(byte(0));
Wire.endTransmission();
Wire.requestFrom (DS1307, 7);
segundo = bcdToDec(Wire.read());
minutos = bcdToDec(Wire.read());
hora = bcdToDec(Wire.read());
día de la semana = bcdToDec(Wire.read());
MonthDay = bcdToDec(Wire.read());
mes = bcdToDec(Wire.read());
año = bcdToDec(Wire.read());
}