Construir un reloj de la red (NCLK) con Microduino-RTC (3 / 3 paso)

Paso 3: Parte de Software

Parte del software:
cargar el programa en su Microdino-Core + a través de Microduino-FT232R.

----------------------------------

#include "U8glib.h"

U8g(U8G_I2C_OPT_NONE) de U8GLIB_SSD1306_128X64;        HW SPI Com: CS = 10, A0 = 9 (Hardware pasadores son SCK = 13 y MOSI = 11)
---ajuste de tamaño de fuente, big|medium|small
#define setFont_L u8g.setFont(u8g_font_7x13)
#define setFont_M u8g.setFont(u8g_font_fixed_v0r)
#define setFont_S u8g.setFont(u8g_font_chikitar)
/*
Fuente:
u8g.SetFont(u8g_font_7x13)
u8g.SetFont(u8g_font_fixed_v0r);
u8g.SetFont(u8g_font_chikitar);
u8g.SetFont(u8g_font_osb21);
*/

#include < Wire.h >
#include < Rtc_Pcf8563.h >

Rtc Rtc_Pcf8563;
int time_nian, time_yue, time_ri, time_shi, time_fen, time_miao, time_zhou;

#include < EtherCard.h >

#define SECONDS_IN_DAY 86400
#define START_YEAR 1900
#define TIME_ZONE + 8
Static int days_in_month [] = {}
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

MIMAC de estática bytes [] = {}
0 x 00, 0x1A, 0x4B, 0x38, 0x0C, 0x5C};
byte Ethernet::buffer [700];

ntpServer de estática bytes [] = {}
193,204,114,232};
Static byte srcPort = 0;

timeStamp de uint32_t;

NET_TIME_reply Boolean;

#define NET_TIME_INTERVAL 1000
#define para TIME_OUT 10000
#define intervalo 100000
sin firmar largo lastTime = 0, TIME_cache = 0;

void setup () {}
Serial.Begin(57600);

volcdsetup ("carga de red", 0, 15);
Delay(1000);
Si (! ether.begin (sizeof Ethernet::buffer, MIMAC))
Serial.println ("fallado el acceso Ethernet controlador");
otra cosa
Serial.println ("controlador Ethernet inicializada");
Si (! ether.dhcpSetup())
{
Serial.println ("fallo al obtener configuración de DHCP");
volcdsetup ("DHCP Error", 0, 15);
Delay(1000);
}
otra cosa
{
Serial.println ("DHCP configuración hecha");
volcdsetup ("DHCP tiene éxito", 0, 15);
Delay(1000);
}
ether.printIp ("Dirección IP: \t", ether.myip);
ether.printIp ("Netmask:\t", ether.mymask);
ether.printIp ("puerta de enlace: \t", ether.gwip);

//-------------------------------------------------------
volcdsetup ("red tiempo de carga", 0, 15);
Delay(1000);
NET_TIME_reply = true;
vonettime();
if(NET_TIME_reply)
{
volcdsetup ("sincronización de tiempo. Error", 0, 15);
Delay(1000);
}
otra cosa
{
vosettime();
volcdsetup ("sincronización de tiempo. Tener éxito", 0, 15);
Delay(1000);
}

//-------------------------------------------------------
Serial.println();
}

void loop() {}
if(Millis() - lastTime > intervalo)
{
NET_TIME_reply = true;
vonettime();
if(!NET_TIME_reply)
{
vosettime();
}
lastTime = millis();
}

volcd();

}

void volcd()
{
u8g.firstPage();
{}
setFont_M;
u8g.setPrintPos (0, 9);
u8g.Print("Time:");
u8g.Print(RTC.formatDate());

u8g.setPrintPos (0, 20);
u8g.Print(RTC.formatTime());

//-----------------------------------------
u8g.setPrintPos (0, 34);
u8g.Print("Time:");
u8g.Print("20");
u8g.Print(RTC.getYear());
u8g.Print("/");
u8g.Print(RTC.getMonth());
u8g.Print("/");
u8g.Print(RTC.getDay());

u8g.setPrintPos (0, 45);
u8g.Print(RTC.getHour());
u8g.Print(":");
u8g.Print(RTC.getMinute());
u8g.Print(":");
u8g.Print(RTC.getSecond());

SEMANA de la cadena = "";
Switch(RTC.getWeekday())
{
caso 1:
SEMANA = "Lunes";
rotura;
caso 2:
SEMANA = "Martes";
rotura;
caso 3:
SEMANA = "Miércoles";
rotura;
caso 4:
SEMANA = "Jueves";
rotura;
caso 5:
SEMANA = "Viernes";
rotura;
caso 6:
SEMANA = "Sábado";
rotura;
caso 7:
SEMANA = 'Domingo';
rotura;
}
u8g.setPrintPos (60, 45);
u8g.Print(Week);

setFont_S;
u8g.drawFrame (0, 54,128,10);
u8g.setPrintPos (3, 62);
u8g.Print ("Microduino-RTC v1.0 201307");
}
mientras (u8g.nextPage());
}

void vosettime()
{
rtc.initClock();  establecer un tiempo para comenzar con.
rtc.setDate (time_ri, time_zhou, time_yue, 0, time_nian 100%);  día, semana, mes, siglo (1 = 1900, 0 = 2000), year(0-99)
rtc.setTime (time_shi, time_fen, time_miao); HR, min, seg.

}

void volcdsetup (char * zi, unsigned int x, int sin signo y)
{
u8g.firstPage();
{}
setFont_L;
u8g.setPrintPos (x, y);
u8g.Print(Zi);
}
mientras (u8g.nextPage());
}

void vonettime()
{
tiempo de espera de uint32_t = millis();    //
mientras que (NET_TIME_reply == true & & millis() - tiempo de espera < para TIME_OUT) / /
{
ether.packetLoop(ether.packetReceive());
if(Millis() - TIME_cache > NET_TIME_INTERVAL) / /
{
ether.ntpRequest (ntpServer, srcPort);
TIME_cache = millis();
NET_TIME_reply = true;   标记发送
}

Si (NET_TIME_reply & & ether.ntpProcessAnswer (& timeStamp, srcPort)) / /
{
printDate (timeStamp + 3600 * TIME_ZONE);    //
TIME_cache = millis();
NET_TIME_reply = false;    //
}
}
}

void printDate (uint32_t timeStamp) {}

semana larga sin signo = (((timeStamp/3600/24)+1)%7);

Serial.Print ("fecha y hora actual:");
Serial.println(timestamp);

unsigned int año = START_YEAR;
{while(1)}
uint32_t segundos;
if(isLeapYear(Year)) segundos = SECONDS_IN_DAY * 366;
más segundos = SECONDS_IN_DAY * 365;
Si (fecha y hora > = segundos) {}
timeStamp = segundos;
año ++;
}
rotura del otro;
}

unsigned int mes = 0;
{while(1)}
segundos de uint32_t = SECONDS_IN_DAY * days_in_month [mes];
if(isLeapYear(Year) & & mes == 1) segundos = SECONDS_IN_DAY * 29;
Si (fecha y hora > = segundos) {}
timeStamp = segundos;
mes ++;
}
rotura del otro;
}
mes ++;

unsigned int dia = 1;
{while(1)}
Si (fecha y hora > = SECONDS_IN_DAY) {}
fecha y hora-= SECONDS_IN_DAY;
día ++;
}
rotura del otro;
}

unsigned int hora = hora / 3600;
unsigned int minutos = (fecha y hora - hora (uint32_t) * 3600) / 60;
unsigned int segundo = (fecha y hora - hora (uint32_t) * 3600) - minutos * 60;

Serial.Print ("semana:");
Serial.println(Week);

if(Day < 10) Serial.print("0");
Serial.Print(Day);
Serial.Print("/");

if(month < 10) Serial.print("0");
Serial.Print(month);
Serial.Print("/");

Serial.println(Year);

if(hour < 10) Serial.print("0");
Serial.Print(hour);
Serial.Print(":");

if(minute < 10) Serial.print("0");
Serial.Print(minute);
Serial.Print(":");

if(Second < 10) Serial.print("0");
Serial.println(Second);

Serial.println();

time_nian = año;
time_yue = mes;
time_ri = día;
time_shi = hora;
time_fen = minutos;
time_miao = segundo;
time_zhou = semana;
}

{} Boolean isLeapYear (unsigned int año)

volver (año % 4 == 0 & & (año % 100! = 0 || año % 400 == 0));
}
---------------------------

Artículos Relacionados

Un controlador de tira en red LED con Arduino y Android

Un controlador de tira en red LED con Arduino y Android

soy fascinante efecto de luces desde niño y una vez encontrado en Ebay un LED multicolor barato tira he empecé a buscar cómo, buscando un Ethernet permitió control que hace que las tiras de un conjunto de objetos en red, teniendo la oportunidad de co
Cómo construir un reloj que proyecta la hora en la pared

Cómo construir un reloj que proyecta la hora en la pared

este Instructable muestra cómo construir un reloj proyector. Este dispositivo le permite a tiempo del proyecto en la pared. Basado en un pequeño despertador LCD (no demasiado pequeños, por el contrario, no podrá proyectarla y para trabajar en él), es
Un reloj de engranajes de madera con un mecanismo único

Un reloj de engranajes de madera con un mecanismo único

Sincronicidad es un reloj de pared de péndulo único engranaje de madera expuesta, con una combinación de la vieja y nueva tecnología.Muchos relojes de engranaje de madera son conducidos por pesos. Estos relojes necesitan ser herida periódicamente, ta
Restablecer su reloj circadiano "reloj de cuerpo biológico" con Arduino

Restablecer su reloj circadiano "reloj de cuerpo biológico" con Arduino

Inspiración para restablecer su reloj biológico del cuerpo y mejorar tu higiene salud y sueño con ArduinoUn reloj circadiano no es un reloj que mira para decir la hora. Es más bien un guardián del tiempo y un oscilador dentro de nuestros organismos d
Cómo construir un reloj de cadena

Cómo construir un reloj de cadena

enseñará este Instructable tienes que construir lo que llamo un reloj de cadena.  Se trata de un reloj donde todos los números que muestran el tiempo de suspensión de las cadenas.  Las cadenas giran para cambiar el tiempo.Este reloj es algo que he es
Construir un datalogger para la red inalámbrica de sensores

Construir un datalogger para la red inalámbrica de sensores

necesitábamos un datalogger que proporciona una marca de tiempo, y que sería pasados 2 semanas en el bosque. Utilizando una computadora portátil requiere un generador o batería descomunal. Este Instructable muestra cómo hacer un datalogger de un escu
Reloj del anillo del LED con Arduino

Reloj del anillo del LED con Arduino

Ver reloj de Fibonacci de pchretien la semana pasada, decidí compartir mi proyecto de reloj anillo de LED.Como se puede ver el tiempo está representada en dos anillos de WS2812 LED.En el aro exterior 24 LEDs, muestra las horas de 0 a 24. Los colores
Construir un reloj de campana-pulso real para tu PC y un reloj de pulso de extintor de incendios.

Construir un reloj de campana-pulso real para tu PC y un reloj de pulso de extintor de incendios.

Una campana de bronce, un pequeño relé unas cuantas cosas más y una campana real pueden golpear las horas en su escritorio.Aunque este proyecto se ejecuta en Windows y Mac OS X también, I idecided para instalar Ubuntu Linux en un PC que encontré en l
Un reloj de 15 LED RGB con Arduino base

Un reloj de 15 LED RGB con Arduino base

El reloj RGB utiliza el modelo de composición de color RGB usado en todas las pantallas color. Este modelo utiliza tres colores 'básicos', es decir, rojos, verdes y azules, para construir cualquier otro 'compuesto' color del espectro. Con reloj RGB,
Cómo construir tu propio cajón caja tambor con lazo ajustable

Cómo construir tu propio cajón caja tambor con lazo ajustable

en este instructable mostrará usted cómo construir su propio tambor de caja de cajón. Hicimos 2 tambores de Cajon para debajo de 50$, así que alrededor de 25$ un pedazo. Yo se entrar en este instructable en el concurso de instrumentos musicales, así
Construir el soporte de la limonada perfecta con sus hijos

Construir el soporte de la limonada perfecta con sus hijos

¿Quién no ama un puesto de limonada en un caluroso día de verano?Soportes de limonada son más que una manera de enseñar a sus hijos sobre el dinero. Alemonade soporte es divertida manera de aprender algunos conceptos básicos sobre construcción. Y si
Construir un escáner 3d escritorio DIY con resolución infinita.

Construir un escáner 3d escritorio DIY con resolución infinita.

Si ya tienes una cámara de este proyecto costará menos de $50 para completar. Si te gusta comprar en AliExpress probablemente usted puede construir para alrededor de $30. Si usted desea apoyar su intermediario local, más de la energía también, pero l
Reloj Podómetro de Arduino, con la temperatura, altitud y brújula!

Reloj Podómetro de Arduino, con la temperatura, altitud y brújula!

ACTUALIZACIÓN: Revisa mi otros dos proyectos >>SweeperBot - Robot Roomba-como con BluetoothReloj alarma con infrarrojos y altavoces BluetoothHola gente! Últimos días he estado obsesionado con la idea de hacer mi propio ver desde partes de arduino, p
Cómo construir obstáculos evitando Robot para principiantes con Arduino Tutorial

Cómo construir obstáculos evitando Robot para principiantes con Arduino Tutorial

Este Tutorial es para cualquier persona para empezar con arduino. Vamos construir un obstáculo evitando el robot que utiliza un sensor de ultrasonidos HC SR-04 para detectar objetos y 2 servos de continua (360 grados) conectados a una fuente de bater