Cliente de tiempo de Internet Arduino (6 / 10 paso)

Paso 6: Añadir la pantalla LCD

Si usted está utilizando la pantalla LCD Serial, conéctelo ahora. Hay una librería adicional que necesita, la biblioteca LCD I2C. Puede encontrar en http://arduinotronics.blogspot.com/2014/02/sainsmart-i2c-lcd.html

LCD Arduino UNO

A5 SCL
SDA A4
VCC + 5v
GND Gnd

El código NTP anterior con las incorporaciones de LCD están a continuación:

ejemplo de código se originó en el http://www.openreefs.com/ntpServer
modificado por Steve Spence, http://arduinotronics.blogspot.com

#include < SPI.h >
#include < Ethernet.h >
#include < EthernetUdp.h >
#include < Time.h >
#include < Wire.h >
#include < LCD.h >
#include < LiquidCrystal_I2C.h >

Configuración de LCD

#define I2C_ADDR 0x3F / / <<---añadir tu dirección aquí.  Búsqueda de analizador de I2C
#define BACKLIGHT_PIN 3
#define En_pin 2
#define y 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

Lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin) de LiquidCrystal_I2C;

/ * *** Ethernet Tarjeta configuración *** * /
Seleccione su dirección de Mac de la tarjeta de Ethernet
mac de bytes [] = {0x90, 0xA2, 0xDA, 0 x 00, 0x23, 0x36};

/ * *** Configuración del servidor NTP *** * /
/ * servidor NTP us.pool.ntp.org
(Configurado en el servidor de tiempo de la opción) * /
Dirección IP timeServer (216, 23, 247, 62);

/ * Seleccione el desplazamiento (en segundos) a su hora local
Este ejemplo es GMT - 4 * /
const timeZoneOffset largo =-14400 L;

/ * Se sincroniza al servidor NTP cada 15 segundos para la prueba,
a 1 hora o más razonable * /
unsigned int ntpSyncTime = 3600;

/ * MODIFICAR ESTAS VARIABLES BAJO SU PROPIO RIESGO * /
local puerto para paquetes UDP
unsigned int PuertoLocal = 8888;
Marca de tiempo NTP es en los primeros 48 bytes del mensaje
const int NTP_PACKET_SIZE = 48;
Buffer para paquetes entrantes y salientes
byte packetBuffer [NTP_PACKET_SIZE];
Una instancia de la UDP nos permite enviar y recibir paquetes sobre UDP
EthernetUDP Udp;
Realiza un seguimiento de cómo hace mucho tiempo actualizamos el servidor NTP
ntpLastUpdate largo sin signo = 0;
Revise el último reloj (no en producción)
time_t prevDisplay = 0;

void setup() {}
LCD.Begin (16.2);

lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);

Serial.Begin(9600);

Escudo de Ethernet y configuración NTP
int i = 0;
int DHCP = 0;
DHCP = Ethernet.begin(mac);
Intentar obtener la configuración de dhcp 30 veces antes de abandonar
mientras que (DHCP == 0 & & i < 30) {}
Delay(1000);
DHCP = Ethernet.begin(mac);
i ++;
}
if (!. DHCP) {}
Serial.println ("DHCP error");
for(;;); //Infinite lazo porque DHCP no
}
Serial.println ("DHCP el éxito");

Tratar de conseguir la fecha y hora
trys int = 0;
while(!getTimeAndDate() & & trys < 10) {}
trys ++;
}
}

No altera esta función, es utilizado por el sistema
int getTimeAndDate() {}
int bandera = 0;
UDP.Begin(localPort);
sendNTPpacket(timeServer);
Delay(1000);
Si (Udp.parsePacket()) {}
UDP.Read(packetBuffer,NTP_PACKET_SIZE);  Lea el paquete en el buffer
highWord largo sin firmar, lowWord, época;
highWord = palabra (packetBuffer [40], packetBuffer[41]);
lowWord = palabra (packetBuffer [42], packetBuffer[43]);
época = highWord << 16 | lowWord;
época = época - 2208988800 + timeZoneOffset;
bandera = 1;
setTime(epoch);
ntpLastUpdate = now();
}
regresar de bandera;
}

No altera esta función, es utilizado por el sistema
sendNTPpacket largo sin signo (dirección IP y dirección)
{
memset (packetBuffer, 0, NTP_PACKET_SIZE);
packetBuffer [0] = 0b11100011;
packetBuffer [1] = 0;
packetBuffer [2] = 6;
packetBuffer [3] = 0xEC;
packetBuffer [12] = 49;
packetBuffer [13] = 0x4E;
packetBuffer [14] = 49;
packetBuffer [15] = 52;
Udp.beginPacket (dirección, 123);
UDP.Write(packetBuffer,NTP_PACKET_SIZE);
Udp.endPacket();
}

Reloj de la hora y fecha (básico)
void clockDisplay() {}
Serial.Print(hour());
printDigits(minute());
printDigits(second());
Serial.Print("");
Serial.Print(Day());
Serial.Print("");
Serial.Print(month());
Serial.Print("");
Serial.Print(Year());
Serial.println();

lcd.setCursor (0,0);
Si (hour() < 10) {}
LCD.Print("0"); }
Si {} (hour() > 12)
LCD.Print("0");
LCD.Print(hour()-12); } else {}
LCD.Print(hour()); }
LCD.Print(":");
Si (minute() < 10) {}
LCD.Print("0"); }
LCD.Print(minute());
LCD.Print(":");
Si (second() < 10) {}
LCD.Print("0"); }
LCD.Print(Second());
Si {} (hour() > 12)
LCD.Print ("PM"); }
Else {}
LCD.Print ("AM"); }

lcd.setCursor (0,1);
Si (localtime < 10) {}
LCD.Print("0"); }
LCD.Print(month());
LCD.Print("/");
Si (day() < 10) {}
LCD.Print("0"); }
LCD.Print(Day());
LCD.Print("/");
LCD.Print(Year());
}

Función de utilidad para la visualización del reloj: impresiones anteriores a colon y lleva 0
void printDigits (int dígitos) {}
Serial.Print(":");
if(digits < 10)
Serial.Print('0');
Serial.Print(digits);
}

Esto es donde sucede toda la magia...
void loop() {}
Actualizar tan a menudo como la hora de que ajustar en la parte superior el tiempo via servidor NTP
Si (ahora ()-ntpLastUpdate > ntpSyncTime) {}
trys int = 0;
while(!getTimeAndDate() & & trys < 10) {}
trys ++;
}
if(trys<10) {}
Serial.println ("ntp server update success");
}
Else {}
Serial.println ("ntp server update error");
}
}

Mostrar la hora si ha cambiado por más de un segundo.
Si (now()! = prevDisplay) {}
prevDisplay = now();
clockDisplay();
}
}

Artículos Relacionados

Conducir a una página web en tiempo real usando Arduino, SensorMonkey y Processing.js

Conducir a una página web en tiempo real usando Arduino, SensorMonkey y Processing.js

visualización remota de datos en tiempo real.Este tutorial describe detalladamente cómo utilizar el servicio gratuito de SensorMonkey para datos de los sensores en tiempo real push desde un Arduino a una página web para la visualización con Processin
Domótica inteligente con Android + Ethernet Internet + Arduino

Domótica inteligente con Android + Ethernet Internet + Arduino

Domótica se convierte cada vez más popular y asequible y fascina a la gente. Internet ofrece tales posibilidades como nunca antes. Impresiona a tus amigos mostrando el Smartphone que puede activar/desactivar la lámpara en sus millas Apartamento lejos
El Gizmo de Internet Arduino

El Gizmo de Internet Arduino

el Arduino Internet Gizmo es un dispositivo USB, Arduino y RFID para navegación web.  El cacharrito funciona mediante la colocación de una etiqueta RFID en la parte superior el gizmo.  El gizmo lee la etiqueta de RFID y envía el número de etiqueta ví
Reloj de tiempo Real de Arduino con alarma y sensores ambientales

Reloj de tiempo Real de Arduino con alarma y sensores ambientales

Reloj de Arduino, con respaldo de batería (reloj en tiempo real), tiempo, fecha, alarma, temperatura, humedad, presión, LCD, salida, entrada de teclado, dormir modo, blanco de iluminación (4 X) LED LCD con control de intensidadPaso 1: Lista de piezas
Reloj en tiempo Real de Arduino DS3231 con color TFT

Reloj en tiempo Real de Arduino DS3231 con color TFT

Construcción de un reloj de tiempo real con un pantalla TFT a color es muy fácil utilizando Arduino. La pantalla muestra la hora, la fecha, la temperatura del currect a lo largo de la temperatura MAX y MIN que ha medido. Vamos a construirlo!Paso 1: O
Internet Arduino controlado ranura en T XY mesa

Internet Arduino controlado ranura en T XY mesa

esto es ridículamente fácil (en términos de uso de la herramienta de poder - vea abajo) manera de hacer una precisión inferior tabla XY.  Con la amplia disponibilidad de la T-ranura extrusiones en Amazon y Ebay y utilizando simples mejoras para el ho
Ploteo de datos en tiempo real de Arduino usando Python (matplotlib)

Ploteo de datos en tiempo real de Arduino usando Python (matplotlib)

Arduino es fantástico como un intermediario entre tu ordenador y un circuito electrónico crudo. Usando la interfaz serial, puede recuperar información de los sensores conectados a su Arduino. (También puede enviar información a través de la interfaz
Registro de temperatura en tiempo real con Arduino, NodeJS y Plotly!

Registro de temperatura en tiempo real con Arduino, NodeJS y Plotly!

La motivación para este proyecto surgió después de leer sobre el deseo de Zuckerberg para crear una casa inteligente para uno de sus proyectos de 2016. Siendo yo había intrigado, quería tratar de implementar una aplicación de registro de temperatura
Monitor de tiempo simple utilizando Arduino + Ubuntu

Monitor de tiempo simple utilizando Arduino + Ubuntu

Bueno, hace un año, empecé a pensar en cómo el tiempo de seguimiento. Utilizando la forma simple, precisa como como es necesario y posible acceder desde cualquier lugar mediante internet. La propuesta es medir la temperatura (celsius), humedad (%) y
Registrador de eventos de tiempo basados en Arduino

Registrador de eventos de tiempo basados en Arduino

Código fuente de ejemplo para un Arduino basado en registrador de datos de tiempo transcurrido el evento.  Muestra interrupciones, registro asincrónico y contacto de rebotan.  Destinados a un interruptor de posición de rueda, registra tiempo en el qu
Servidor de tiempo Web de Arduino

Servidor de tiempo Web de Arduino

Objetivo de este instructable para conseguir saber usar shield Ethernet para diversas aplicaciones, se trata de una de las aplicaciones, en esto podemos medir temperatura, humedad, intensidad de la luz, presión.Muestra el estado actual y registros de
Guía simple para el ajuste de hora en un reloj DS3231/DS3107/DS1337 en tiempo Real con Arduino UNO

Guía simple para el ajuste de hora en un reloj DS3231/DS3107/DS1337 en tiempo Real con Arduino UNO

El DS3231 es un altamente exacto, ampliamente utilizado Real Time Clock (RTC), como sus contrapartes ligeramente menos precisas, DS3107 y DS1337. Antes de que puede ser útil, sin embargo, debe ajustarse la hora correcta. Este Instructable es estricta
Lectura de entradas analógicas en tiempo Real utilizando Arduino y trazar usando LabVIEW

Lectura de entradas analógicas en tiempo Real utilizando Arduino y trazar usando LabVIEW

Cuando estaba haciendo mis proyectos uno de la parte fue lectura de datos analógicos y lo trazado. Desde entonces he no encontrado ningún artículo o instructable con material confiable hacerlo pensé en escribir los pasos que finalmente utilicé para r
Reloj en tiempo real de Arduino usando el Ds1302

Reloj en tiempo real de Arduino usando el Ds1302

Esta semana he decidido que quiero construir un reloj. Quiero un reloj quesiempre el momento adecuado para que eso necesito un componente que puede hacer que algunas investigaciones y encontré el ds1302.Paso 1: Ver el videoHice un video en YouTube do