Reloj Arduino [SOLUCIONADO]

Aupa!!

Muy buenas queria preguntar si hay alguna manera de implementar dos relojes con la placa Arduino UNO simultaneamente. He programado un reloj con la libreria "Time.h" en el que pongo la hora del meridiano de greenwich, y me gustaria introducirle la hora del lugar donde se encuentra mi Arduino, ¿hay alguna manera de hacerlo?

Muchas gracias.

Hola, la hora que le programas a Arduino se borrará en el momento que desaparece la alimentación, a no ser que tenga acceso a un reloj RCT, o a algún otro sistema de actualizar la hora (desde el PC, desde Internet o por GPS...) La hora del lugar se puede calcular simplemente sumando o restando la diferencia.

No lo he hecho, pero me imagino que si manipulas los datos los datos de un RTC puedes tener todas las horas que quieras.

 getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

hour_1 = hour + 1
hour_2 = hour +2

print hour_1, minute, sec
print hour_2, minute, sec

Gracias por vuestras respuestas, he tratado de hacerlo de la manera mas simple, calculando la diferencia entre las dos pero me salen cosas muy raras cuando lo muestra por el serial. Aqui os dejo el codigo y lo que me sale por el serial, haber si alguien sabe porque me sale eso…

while (elev_anterior >= elevacion_solar - 0.2)//Bucle que detecta cuando la elevacion_solar empieza a disminuir.
{
elev_anterior = elevacion_solar;//sustituye el valor de elevacion por uno mas alto.
elevacion_solar=elev_solar_med();//Metemos el valor medido por el potenciometro de la elevacion solar.
dif_hora=hora-12;//calcula la dif horaria en el momento de maxima elevacion para iniciar el reloj de la hora local.
dif_min=minuto;//calcula la dif en minutos de nuestro reloj.
}
}
if (dif_hora < 0)//Si la dif horaria es menor de 0 calcula la hora para que el reloj no sea negativo.
{
hora_loc=24 + dif_hora;
}
else hora_loc=hora-dif_hora;//Cuando la hora no es menor de 12.
Serial.print(“La hora local es:”);
Serial.print(hora_loc);// muestra la hora local.
Serial.print(":");
min_loc=minuto-dif_min;
if (min_loc < 0)//Si la dif de minutos es negativa calcula los minutos para que no sean negativos.
{
min_loc=60 + min_loc;
}
Serial.print(min_loc);//muestra los minutos locales.
Serial.print(":");
Serial.println(segundo);
delay(1000);

Y lo que muestra el Serial:

La elevacion solar es 32.10
32.10
La elevacion solar es 76.00
32.10
La hora local es:12:0:0
18:30:13 12 1 2012
La elevacion solar es 76.00
La hora local es:-86:0:13
18:30:14 12 1 2012
La elevacion solar es 75.90
La hora local es:-86:0:14
18:30:15 12 1 2012
La elevacion solar es 75.90
La hora local es:-86:0:15
18:30:16 12 1 2012
La elevacion solar es 75.90
La hora local es:-86:0:16
18:30:17 12 1 2012
La elevacion solar es 76.00
La hora local es:-86:0:17
18:30:18 12 1 2012
La elevacion solar es 75.90
La hora local es:-86:0:18

Me voy a mirar un poco lo del RTC que parece que tiene mas posibilidades.

Yopero te ha comentado que igual es más sencillo si usas el del meridiano de ... como referencia para saber la hora en otros lugares del planeta simplemente hay que sumar horas o restar horas, por ejemplo en españa es una hora más que en inglaterra +1 y así sucesimante.

yOPERO: No lo he hecho, pero me imagino que si manipulas los datos los datos de un RTC puedes tener todas las horas que quieras.

 getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

hour_1 = hour + 1 hour_2 = hour +2

print hour_1, minute, sec print hour_2, minute, sec

No lo puedo aplicar porque la hora solar local no coincide exactamente con la hora local, se desfasa algunos minutos. Entonces, tengo que desfasar no solo la hora sino también los minutos. Pero lo difícil es que no se los minutos que tengo que desfasarlo porque dependerá de la distancia a la que se encuentre el meridiano local y eso lo calculo con la posición solar...

En resumen, no es solo sumar y restar horas y minutos, sino que tengo que hacer que dependan de la posición real del Sol.

Por cierto, el código que puse en el post anterior no esta bien porque los minutos no van acordes con la hora, ya que no lo he tenido en cuenta.

Ya he solucionado el problema, tenia las variables de dif_min y dif_hora metidos dentro del loop y, por tanto, no me guardaba el valor de la variable para la siguiente pasada.

Grácias de todas maneras por vuestras respuestas. Siempre son de gran ayuda.

Un saludo.

rumme: No lo puedo aplicar porque la hora solar local no coincide exactamente con la hora local, se desfasa algunos minutos. //////////// En resumen, no es solo sumar y restar horas y minutos, sino que tengo que hacer que dependan de la posición real del Sol.

Si hubiésemos sabido estas cosas quizás te hubiésemos ayudado mejor.Es muy importante el concepto teórico antes de atacar al código.

Suerte en tu proyecto!!!