Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Reloj LED Arduino RTC

Componentes y suministros

Arduino UNO
× 1
Reloj en tiempo real (RTC)
× 1
Resistencia 1k ohm
× 15
Resistencia de orificio pasante, 120 ohm
× 15
Regulador lineal (7805)
× 1
Condensador 22 pF
× 1
Cristal de 16 MHz
× 1
Condensador 10 µF
× 1
Batería tipo botón CR2032
× 1
Soporte de batería, litio CR2032
× 1
LED de 5 mm:verde
× 190
Bipolar - Transistor RF, NPN
× 10
Transistor de uso general PNP
× 12
Interruptor táctil, accionado por la parte superior
× 4
Fuente de alimentación Digilent 60W PCIe 12V 5A
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Alambre de soldadura, sin plomo
Multímetro digital Digilent Mastech MS8217 Autorange

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 LED

Proceso de manufactura

  1. Reloj de visión pov de Arduino
  2. Reloj de palabras simple (Arduino)
  3. DIY Osciloscopio Arduino simple de 20 kHz en Nokia 5110 LCD
  4. Reloj maestro
  5. Persianas inteligentes
  6. Reloj Word en italiano
  7. ¡Arduino con Bluetooth para controlar un LED!
  8. Arduino Cuadrúpedo
  9. Reloj de matriz de 7 segmentos
  10. Medidor de kWh Sigfox
  11. Una entrada analógica aislada para Arduino