Echtzeituhr mit Display am Nano V3 - AZ-Delivery

En la entrada de blog de hoy combinamos 3 productos: nuestro popular AZ-Delivery Nano V3Un DS3231 Reloj en tiempo real, y un Pantalla LED de 7 segmentos de cuatro dígitos.

Estos forman una buena base para proyectos donde el tiempo juega un papel - no importa si alguien quiere realizar un reloj cuco basado en Arduino, un control de acceso controlado por tiempo, o un reloj de sello con etiquetas RFID.

En el proyecto de hoy, el Arduino obtiene el tiempo del reloj en tiempo real y lo genera en la pantalla. Cada uno de los módulos requiere sólo 4 conexiones.

Cableamos los componentes de la siguiente manera:

AZ-Delivery Nano V3

DS3231

A5

Scl

A4

Sda

3V3

Vcc

Gnd

Gnd

 

AZ-Delivery Nano V3

Pantalla de 4 dígitos y 7 segmentos

D2

Clk

D3

Dio

+5V

Vcc

Gnd

Gnd

 

 

Ver esquema

 

Para la programación utilizamos la misma biblioteca que en nuestro eBook para la pantalla de 4 dígitos y 7 segmentos: TM1637Display.h.

Conectamos el reloj en tiempo real a través del autobús I2C. El reloj es 0x68.

Necesitamos la función bcdToDec para convertir el código binario que obtenemos del reloj en tiempo real en números decimales.

 

#include <Arduino.H>

#include <TM1637Pantalla.H>
#include <Alambre.H>
#define RTC_I2C_ADDRESS 0x68 I2C Address del RTC DS3231
 
#define Clk 2 Pin Arduino D2 como CLK (RTC) 
#define Dio 3 Ardiono Pin D3 como DIO (RTC)
 
TM1637Pantalla Monitor(Clk, Dio); // 

uint8_t bcdToDec( uint8_t Val )
{    devolución (uint8_t) ((Val / 16 * 10) + (Val % 16));
}

Int Romper = 500;
 
Int Hora,Minuto,Segundo;     Vacío Configuración(){   Alambre.Comenzar();   Serial.Comenzar(9600);   Monitor.setBrightness(0x0a);     }
 
Vacío Bucle(){    Alambre.beginTransmisión(RTC_I2C_ADDRESS); Establecimiento de la conexión a la dirección 0x68    Alambre.Escribir(0);    Alambre.endTransmission();    Alambre.solicitudDe(RTC_I2C_ADDRESS, 7);      Segundo = bcdToDec(Alambre.Leer() & 0x7f);    Minuto = bcdToDec(Alambre.Leer());     Hora = bcdToDec(Alambre.Leer() & 0x3f);           Serial.Impresión(Hora);      Serial.Impresión(":");      Serial.Impresión(Minuto);      Serial.Impresión(":");      Serial.println(Segundo);               Monitor.showNumberDec(Hora, Verdad, 2, 0);      Monitor.showNumberDec(Minuto, Verdad, 2, 2);    Retraso(Romper);

}

Después de cargar el código, podemos comprobar en el monitor serie del IDE de Arduino si el tiempo se genera cada medio segundo.

Si todo está conectado correctamente, la hora actual aparecerá en la pantalla de 7 segmentos.

 

Construcción terminada

 

De esta manera, hemos creado la base para otros proyectos. ¿Qué tal una pantalla más grande? ¿Sensores para temperatura y presión de aire para una estación meteorológica? ¿O un MP3-Shield que da un "cuco" cada hora?

 

Esperamos que nuestra entrada de blog de hoy te haya inspirado y esperamos tus comentarios. ¡Hasta el próximo post de AZ-Delivery, tu experto en microelectrónica!


 

Für arduinoProjekte für anfänger

2 comentarios

udo

udo

hallo,

durch diesen code stürzt ständig meine arduino ide ab.

truefirewolf

truefirewolf

Hallo,

zunächst hatte ich mich gefreut mit so wenigen Bauteilen und kurzem Code eine Digitaluhr zu bauen.

Bei genauerer Betrachtung stellt man allerdings fest, dass man die Uhrzeit so nicht einstellen kann, das gibt die Software nicht her.

Es wäre ein außerordentlicher Zufall, wenn die Uhrzeit beim Einschalten genau stimmen würde. Man benötigt ein anderes Programm wie z.B. von der Seite: http://shelvin.de/die-uhrzeit-des-rtc3231-vom-arduino-einstellen/

Betreiben kann man die so eingestellte Uhr dann mit dem oben angegeben Programm. Da die Batterie Jahre halten soll, muss o.g. Prozedur eben auch nur bei Batteriewechsel durchgeführt werden.

truefirewolf

Deja un comentario

Todos los comentarios son moderados antes de ser publicados