Reloj LED Arduino RTC
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 15 | ||||
| × | 15 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 190 | ||||
| × | 10 | ||||
| × | 12 | ||||
| × | 4 | ||||
| × | 1 |
Herramientas y máquinas necesarias
| ||||
| ||||
|
Acerca de este proyecto
Primero debe descargar las siguientes bibliotecas (el enlace se encuentra al final de esta página) 1. Wire.h
2. RTClib.h Lista de piezas
Mira el video
Este es el módulo de reloj RTC
Este es el circuito Arduino
Conexiones de cableado de RTC
Conmutadores RTC
Identificar ánodo y cátodo
Diagrama de circuito (ÁNODO COMÚN)
SI USTED UTILIZA LED DE CÁTODO COMÚN, HAGA LOS CAMBIOS COMO SIGUIENTE
FUENTE DE ALIMENTACIÓN
Código
- CÓDIGOS de reloj LED
CÓDIGOS de reloj LED Arduino
Descargue este código y cárguelo en el proyecto/ * Pantalla de 4 dígitos y 7 segmentos:http://www.sparkfun.com/products/9483 Hoja de datos:http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment / YSD-439AR6B-35.pdf * /// conexión modificada por niq_ro de http://nicuflorica.blogspot.com// conjunto de datos:http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4 -563XSA.pdf // Código modificado por BMIAK Basnayaka // http://www.setnfix.comint digit1 =11; int dígito2 =10; int dígito3 =9; int dígito4 =6; int dígito5 =5; int digit6 =3; // Mapeo de pines de Arduino al ATmega DIP28 si lo necesita // http://www.arduino.cc/en/Hacking/PinMappingint segA =0; // Mostrar pin 11int segB =1; // Mostrar pin 7int segC =2; // Mostrar pin 4int segD =4; // Mostrar pin 2int segE =7; // Mostrar pin 1int segF =8; // Mostrar pin 10int segG =12; // Mostrar pin 5int segDP =13; // Mostrar pin 3 # incluye#include "RTClib.h" RTC_DS1307 RTC; // Funciones de fecha y hora usando un DS1307 RTC conectado a través de I2C y Wire lib // boceto original de http://learn.adafruit .com / ds1307-real-time-clock-breakout-board-kit /// agregar parte con SQW =1Hz de http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the- i2c-bus /// agregar parte con ajuste manual http://www.bristolwatch.com/arduino/arduino_ds1307.htmbyte SW0 =A0; byte SW1 =A2; byte SW2 =A1; byte SWT =A3; int Adhr =0; int Admnt =0; int D =0; int Z =0; // uso para hexa en conversión zecimallong zh, uh, ore; long zm, um, miniti; void setup () {//Serial.begin(57600); Wire.begin (); RTC.begin (); // RTC.; Wire.write (0x07); // mover el puntero a la dirección SQW // Wire.write (0x00); // apaga el pin SQW Wire.write (0x10); // envía 0x10 (hexadecimal) 00010000 (binario) al registro de control - activa la onda cuadrada a 1Hz // Wire.write (0x13); // envía 0x13 (hexadecimal) 00010011 (binario) 32kHzWire.endTransmission (); pinMode (segA, SALIDA); pinMode (segB, SALIDA); pinMode (segC, SALIDA); pinMode (segD, SALIDA); pinMode (segE, SALIDA); pinMode (segF, SALIDA); pinMode (segG, SALIDA); pinMode (segDP, SALIDA); pinMode (dígito1, SALIDA); pinMode (dígito2, SALIDA); pinMode (dígito3, SALIDA); pinMode (dígito4, SALIDA); pinMode (dígito5, SALIDA); pinMode (digit6, OUTPUT); // Serial.begin (9600); pinMode (SW0, INPUT); // NO. pulsador switchpinMode (SW1, INPUT); // NO. pulsador switchpinMode (SW2, INPUT); // NO. pulsador switchpinMode (SWT, INPUT); // NO. pulsador switchdigitalWrite (SW0, HIGH); // pull-ups ondigitalWrite (SW1, HIGH); digitalWrite (SW2, HIGH); digitalWrite (segDP, LOW);} void loop () {DateTime now =RTC.now (); HR larga =ahora.hora () * 1000; timp largo =(HR * 10) + ahora.minuto () * 100 + ahora.segundo (); Adhr =ahora.hora (); Admnt =ahora.minuto (); int DIM =0; if (timp> =250000) timp =timp-240000; // ---------------------- -------------------------------- // 12/24 horas haciendo shitching // --------- --------------------------------------------- si (timp <130000 ) {digitalWrite (segDP, LOW);} if (digitalRead (SWT) ==0) {retraso (300); if (D ==0) {D =1; delay (200);} else {D =0;}} if (D ==0) {if (timp> =130000) {timp =timp-120000; digitalWrite ( segDP, HIGH);}} if (timp> =130000) {digitalWrite (segDP, LOW);} if ((D ==1) &(timp <130000)) digitalWrite (segDP, LOW); // --- -------------------------------------------------- - // int timp =(ahora.minuto (), DEC); // displayNumber (12); // este es el número para mostrar (int i =100; i> 0; i--) {if (timp> =100000) displayNumber01 (timp); else displayNumber02 (timp); } for (int i =100; i> 0; i--) {if (timp> =100000) displayNumber03 (timp); else displayNumber04 (timp); } for (int i =100; i> 0; i--) {if (timp> =100000) displayNumber05 (timp); else displayNumber06 (timp); } if (digitalRead (SW0) ==0) {retraso (100); Z =1; fijar tiempo(); } // mantén pulsado el interruptor para establecer la hora} void set_time () {byte minutes1 =0; byte horas1 =0; byte minutos =0; byte horas =0; horas =Adhr; minutos =Admnt; if ((horas &0x0f)> 9) horas =horas + 6; si (horas> 0x24) horas =1; // La medianoche 12.00 se mostrará como 12:00 (con el LED PM encendido) o 24:00 // si (horas> 0x24) horas =1; // Media noche 12.00 se mostrará como 0:00 si ((minutos &0x0f)> 9) minutos =minutos + 6; if (minutos> 0x59) minutos =0; while (! (Z ==0)) {// se debe soltar el interruptor de ajuste de tiempo para salir int TST =digitalRead (SW2); while (TST ==0) // establecer horas {horas ++; // convertir hexa en zecimal:zh =horas / 16; uh =horas - 16 * zh; ore =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; if ((horas &0x0f)> 9) horas =horas + 6; si (horas> 0x24) horas =1; // La medianoche 12.00 se mostrará como 12:00 (con el LED PM encendido) o 24:00 // si (horas> 0x24) horas =1; // Media noche 12.00 se mostrará como 0:00 si (horas <=9) retraso (1); para (int i =400; i> 0; i--) {displayNumber01 (ore * 10000 + miniti * 100); } TST =digitalRead (SW2); } while (! (digitalRead (SW1))) // establecer minutos {minutos ++; // convertir hexa en zecimal:zh =horas / 16; uh =horas - 16 * zh; ore =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; para (int i =400; i> 0; i--) {displayNumber01 (ore * 10000 + miniti * 100); } si ((minutos &0x0f)> 9) minutos =minutos + 6; if (minutos> 0x59) minutos =0; si (minutos> =9) retraso (1); } Wire.beginTransmission (0x68); // activar DS1307 Wire.write (0); // dónde empezar Wire.write (0x00); // segundos Wire.write (minutos); // minutos Wire.write (0x80 | horas); // horas (24 horas) Wire.write (0x06); // Día 01-07 Wire.write (0x01); // Fecha 0-31 Wire.write (0x05); // mes 0-12 Wire.write (0x09); // Año 00-99 Wire.write (0x10); // El control 0x10 produce una onda cuadrada de 1 HZ en el pin 7. Wire.endTransmission (); // convertir hexa en zecimal:zh =horas / 16; uh =horas - 16 * zh; ore =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; para (int i =400; i> 0; i--) {displayNumber01 (ore * 10000 + miniti * 100); } retraso (100); //Serial.print(digitalRead(SW0));if (digitalRead (SW0) ==0) Z =0; retraso (300); } // Serial.print (SW2);} void displayNumber01 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int dígito =6; dígito> 0; dígito--) {// Encienda un dígito para una breve cantidad de tiempo interruptor (dígito) {caso 1:digitalWrite (dígito1, DIGIT_ON); descanso; caso 2:digitalWrite (digit2, DIGIT_ON); // escritura digital (segDP, BAJA); descanso; caso 3:digitalWrite (digit3, DIGIT_ON); descanso; caso 4:digitalWrite (digit4, DIGIT_ON); descanso; caso 5:digitalWrite (digit5, DIGIT_ON); descanso; caso 6:digitalWrite (digit6, DIGIT_ON); descanso; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Apaga todos los segmentos lightNumber (10); // Apagar todos los dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (dígito2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (dígito4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber02 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int dígito =6; dígito> 0; dígito--) {// Activar un dígito por un breve período de tiempo, cambie (dígito) {caso 1:lightNumber (10); descanso; caso 2:digitalWrite (digit2, DIGIT_ON); // escritura digital (segDP, BAJA); descanso; caso 3:digitalWrite (digit3, DIGIT_ON); descanso; caso 4:digitalWrite (digit4, DIGIT_ON); descanso; caso 5:digitalWrite (digit5, DIGIT_ON); descanso; caso 6:digitalWrite (digit6, DIGIT_ON); descanso; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Apaga todos los segmentos lightNumber (10); // Apagar todos los dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (dígito2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (dígito4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber03 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int dígito =6; dígito> 0; dígito--) {// Activar un dígito para un breve período de tiempo, interruptor (dígito) {caso 1:digitalWrite (dígito1, DIGIT_ON); descanso; caso 2:digitalWrite (digit2, DIGIT_ON); descanso; caso 3:digitalWrite (digit3, DIGIT_ON); descanso; caso 4:digitalWrite (digit4, DIGIT_ON); descanso; caso 5:digitalWrite (digit5, DIGIT_ON); descanso; caso 6:digitalWrite (digit6, DIGIT_ON); descanso; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Apaga todos los segmentos lightNumber (10); // Apagar todos los dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (dígito2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (dígito4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber04 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int dígito =6; dígito> 0; dígito--) {// Activar un dígito por un breve período de tiempo, cambie (dígito) {caso 1:lightNumber (10); descanso; caso 2:digitalWrite (digit2, DIGIT_ON); descanso; caso 3:digitalWrite (digit3, DIGIT_ON); descanso; caso 4:digitalWrite (digit4, DIGIT_ON); descanso; caso 5:digitalWrite (digit5, DIGIT_ON); descanso; caso 6:digitalWrite (digit6, DIGIT_ON); descanso; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Apaga todos los segmentos lightNumber (10); // Apagar todos los dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (dígito2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (dígito4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber05 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int dígito =6; dígito> 0; dígito--) {// Activar un dígito para un breve período de tiempo, interruptor (dígito) {caso 1:digitalWrite (dígito1, DIGIT_ON); descanso; caso 2:digitalWrite (digit2, DIGIT_ON); descanso; caso 3:digitalWrite (digit3, DIGIT_ON); descanso; caso 4:digitalWrite (digit4, DIGIT_ON); descanso; caso 5:digitalWrite (digit5, DIGIT_ON); descanso; caso 6:digitalWrite (digit6, DIGIT_ON); descanso; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Apaga todos los segmentos lightNumber (10); // Apagar todos los dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (dígito2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (dígito4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} void displayNumber06 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int dígito =6; dígito> 0; dígito--) {// Activar un dígito por un breve período de tiempo cambiar (dígito) {caso 1:// digitalWrite (dígito1, DIGIT_ON); descanso; caso 2:digitalWrite (digit2, DIGIT_ON); descanso; caso 3:digitalWrite (digit3, DIGIT_ON); descanso; caso 4:digitalWrite (digit4, DIGIT_ON); descanso; caso 5:digitalWrite (digit5, DIGIT_ON); descanso; caso 6:digitalWrite (digit6, DIGIT_ON); descanso; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Apaga todos los segmentos lightNumber (10); // Apagar todos los dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (dígito2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (dígito4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} // Dado un número, enciende esos segmentos // Si número ==10, apague numbervoid lightNumber (int numberToDisplay) {// Common Anode ********* **************** # define SEGMENT_ON HIGH # define SEGMENT_OFF LOW / * Cátodo común ***************** #define SEGMENT_ON LOW # define SEGMENT_OFF HIGH * / switch (numberToDisplay) {caso 0:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_ON); escritura digital (segE, SEGMENT_ON); escritura digital (segF, SEGMENT_ON); escritura digital (segG, SEGMENT_OFF); descanso; caso 1:digitalWrite (segA, SEGMENT_OFF); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_OFF); escritura digital (segE, SEGMENT_OFF); escritura digital (segF, SEGMENT_OFF); escritura digital (segG, SEGMENT_OFF); descanso; caso 2:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_OFF); escritura digital (segD, SEGMENT_ON); escritura digital (segE, SEGMENT_ON); escritura digital (segF, SEGMENT_OFF); escritura digital (segG, SEGMENT_ON); descanso; caso 3:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_ON); escritura digital (segE, SEGMENT_OFF); escritura digital (segF, SEGMENT_OFF); escritura digital (segG, SEGMENT_ON); descanso; caso 4:digitalWrite (segA, SEGMENT_OFF); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_OFF); escritura digital (segE, SEGMENT_OFF); escritura digital (segF, SEGMENT_ON); escritura digital (segG, SEGMENT_ON); descanso; caso 5:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_OFF); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_ON); escritura digital (segE, SEGMENT_OFF); escritura digital (segF, SEGMENT_ON); escritura digital (segG, SEGMENT_ON); descanso; caso 6:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_OFF); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_ON); escritura digital (segE, SEGMENT_ON); escritura digital (segF, SEGMENT_ON); escritura digital (segG, SEGMENT_ON); descanso; caso 7:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_OFF); escritura digital (segE, SEGMENT_OFF); escritura digital (segF, SEGMENT_OFF); escritura digital (segG, SEGMENT_OFF); descanso; caso 8:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_ON); escritura digital (segE, SEGMENT_ON); escritura digital (segF, SEGMENT_ON); escritura digital (segG, SEGMENT_ON); descanso; caso 9:digitalWrite (segA, SEGMENT_ON); escritura digital (segB, SEGMENT_ON); escritura digital (segC, SEGMENT_ON); escritura digital (segD, SEGMENT_ON); escritura digital (segE, SEGMENT_OFF); escritura digital (segF, SEGMENT_ON); escritura digital (segG, SEGMENT_ON); descanso; // todos los segmentos están en ON case 10:digitalWrite (segA, SEGMENT_OFF); escritura digital (segB, SEGMENT_OFF); escritura digital (segC, SEGMENT_OFF); escritura digital (segD, SEGMENT_OFF); escritura digital (segE, SEGMENT_OFF); escritura digital (segF, SEGMENT_OFF); escritura digital (segG, SEGMENT_OFF); descanso; } // Fin de la codificación, BUDHUSARANAI, Mucha suerte. }
Esquemas
Este es el cableado de SSD con LEDProceso de manufactura
- Reloj de visión pov de Arduino
- Reloj de palabras simple (Arduino)
- DIY Osciloscopio Arduino simple de 20 kHz en Nokia 5110 LCD
- Reloj maestro
- Persianas inteligentes
- Reloj Word en italiano
- ¡Arduino con Bluetooth para controlar un LED!
- Arduino Cuadrúpedo
- Reloj de matriz de 7 segmentos
- Medidor de kWh Sigfox
- Una entrada analógica aislada para Arduino