Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Arduino RTC LED Clock

Componentes e suprimentos

Arduino UNO
× 1
Relógio em tempo real (RTC)
× 1
Resistor 1k ohm
× 15
Resistor de furo passante, 120 ohm
× 15
Regulador linear (7805)
× 1
Capacitor 22 pF
× 1
Cristal 16 MHz
× 1
Capacitor 10 µF
× 1
Bateria de célula tipo moeda CR2032
× 1
Suporte de bateria, Lithium CR2032
× 1
LED de 5 mm:Verde
× 190
Bipolar - Transistor RF, NPN
× 10
Transistor de uso geral PNP
× 12
Interruptor tátil, acionado pela parte superior
× 4
Fonte de alimentação Digilent 60W PCIe 12V 5A
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Arame de solda, sem chumbo
Multímetro digital Digilent Mastech MS8217 Autorange

Sobre este projeto


Primeiro, você deve baixar as seguintes bibliotecas (o link é fornecido no final desta página) 1. Wire.h

2. RTClib.h Lista de peças





Assista ao vídeo




Este é o módulo de relógio RTC

Este é o circuito Arduino





Conexões de fiação RTC





Chaves RTC


Identificar ânodo e cátodo

Diagrama de Circuito (ANODO COMUM)








SE VOCÊ USAR CATODO COMUM LED, FAÇA AS ALTERAÇÕES CONFORME A SEGUIR









FONTE DE ALIMENTAÇÃO

















Código

  • CÓDIGOS de relógio LED
CÓDIGOS de relógio LED Arduino
Baixe este código e faça upload para o projeto
 / * display de 4 dígitos e 7 segmentos:http://www.sparkfun.com/products/9483 Datasheet:http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment / YSD-439AR6B-35.pdf * /// conexão modificada por niq_ro de http://nicuflorica.blogspot.com// dataseet:http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4 -563XSA.pdf // Código modificado por BMIAK Basnayaka // http://www.setnfix.comint digit1 =11; dígito interno 2 =10; dígito interno 3 =9; dígito interno 4 =6; dígito interno 5 =5; dígito interno 6 =3; // Pin mapeamento do Arduino para o ATmega DIP28 se você precisar // http://www.arduino.cc/en/Hacking/PinMappingint segA =0; // Exibir pino 11int segB =1; // Exibir pino 7int segC =2; // Exibir pino 4int segD =4; // Exibir pino 2int segE =7; // Exibir pino 1int segF =8; // Exibir pino 10int segG =12; // Exibir pino 5int segDP =13; // Display pin 3 # include  #include "RTClib.h" RTC_DS1307 RTC; // Funções de data e hora usando um DS1307 RTC conectado via I2C e Wire lib // esboço original de http://learn.adafruit .com / ds1307-real-time-clock-breakout-board-kit /// adicionar parte com SQW =1 Hz de http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the- i2c-bus /// adicionar parte com 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; // use para hexa na conversão zecimal ao longo de zh, uh, ore; long zm, um, miniti; void setup () {//Serial.begin(57600); Wire.begin (); RTC.begin (); // RTC.adjust (DateTime (F (__ DATE__), F (__ TIME __))); // se você precisar definir o relógio ... apenas remova // da linha acima deste // código de parte para piscar LEDWire.beginTransmission (0x68); Wire.write (0x07); // move o ponteiro para o endereço SQW // Wire.write (0x00); // desliga o pino SQW Wire.write (0x10); // envia 0x10 (hex) 00010000 (binário) para o registro de controle - ativa a onda quadrada em 1 Hz // Wire.write (0x13); // envia 0x13 (hex) 00010011 (binário) 32kHzWire.endTransmission (); pinMode (segA, OUTPUT); pinMode (segB, OUTPUT); pinMode (segC, OUTPUT); pinMode (segD, OUTPUT); pinMode (segE, OUTPUT); pinMode (segF, OUTPUT); pinMode (segG, OUTPUT); pinMode (segDP, OUTPUT); pinMode (digit1, OUTPUT); pinMode (digit2, OUTPUT); pinMode (digit3, OUTPUT); pinMode (digit4, OUTPUT); pinMode (digit5, OUTPUT); pinMode (digit6, OUTPUT); // Serial.begin (9600); pinMode (SW0, INPUT); // NÃO. botão switchpinMode (SW1, INPUT); // NÃO. botão switchpinMode (SW2, INPUT); // NÃO. botão switchpinMode (SWT, INPUT); // NÃO. botão switchdigitalWrite (SW0, HIGH); // pull-ups ondigitalWrite (SW1, HIGH); digitalWrite (SW2, HIGH); digitalWrite (segDP, LOW);} void loop () {DateTime now =RTC.now (); HR longo =agora.horas () * 1000; long timp =(HR * 10) + now.minute () * 100 + now.second (); Adhr =agora.horas (); Admnt =now.minute (); int DIM =0; if (timp>
 =250000) timp =timp-240000; // ---------------------- -------------------------------- // 12/24 horas shitching // --------- --------------------------------------------- if (timp <130000 ) {digitalWrite (segDP, LOW);} if (digitalRead (SWT) ==0) {atraso (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 =(now.minute (), DEC); // displayNumber (12); // este é o número a ser exibido para (int i =100; i> 0; i--) {if (timp>
 =100000) displayNumber01 (timp); senão displayNumber02 (timp); } para (int i =100; i> 0; i--) {if (timp>
 =100000) displayNumber03 (timp); senão displayNumber04 (timp); } para (int i =100; i> 0; i--) {if (timp>
 =100000) displayNumber05 (timp); senão displayNumber06 (timp); } if (digitalRead (SW0) ==0) {delay (100); Z =1; definir tempo(); } // segure a chave para definir o tempo} void set_time () {byte minutes1 =0; byte horas1 =0; byte minutos =0; horas de byte =0; horas =Adhr; minutos =Admnt; if ((horas &0x0f)> 9) horas =horas + 6; se (horas> 0x24) horas =1; // Meio da noite 12h00 será mostrado como 12h00 (com PM LED ligado) ou 24h00 // if (horas> 0x24) horas =1; // Meio da noite 12h00 será exibido como 0h se ((minutos &0x0f)> 9) minutos =minutos + 6; se (minutos> 0x59) minutos =0; while (! (Z ==0)) {// definir o interruptor de tempo deve ser liberado para sair int TST =digitalRead (SW2); while (TST ==0) // definir horas {horas ++; // convertendo hexa em zecimal:zh =hours / 16; uh =horas - 16 * zh; minério =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; if ((horas &0x0f)> 9) horas =horas + 6; se (horas> 0x24) horas =1; // Meio da noite 12h00 será mostrado como 12h00 (com PM LED ligado) ou 24h00 // if (horas> 0x24) horas =1; // Meio da noite 12h00 será exibido como 0h se (horas <=9) atraso (1); para (int i =400; i> 0; i--) {displayNumber01 (minério * 10000 + miniti * 100); } TST =leitura digital (SW2); } while (! (digitalRead (SW1))) // definir minutos {minutos ++; // convertendo hexa em zecimal:zh =hours / 16; uh =horas - 16 * zh; minério =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; para (int i =400; i> 0; i--) {displayNumber01 (minério * 10000 + miniti * 100); } if ((minutos &0x0f)> 9) minutos =minutos + 6; se (minutos> 0x59) minutos =0; se (minutos> =9) atraso (1); } Wire.beginTransmission (0x68); // ativa DS1307 Wire.write (0); // onde começar Wire.write (0x00); // segundos Wire.write (minutos); // minutos Wire.write (0x80 | horas); // horas (24 horas) Wire.write (0x06); // Dia 01-07 Wire.write (0x01); // Data 0-31 Wire.write (0x05); // mês 0-12 Wire.write (0x09); // Ano 00-99 Wire.write (0x10); // O controle 0x10 produz uma onda quadrada de 1 HZ no pino 7. Wire.endTransmission (); // convertendo hexa em zecimal:zh =hours / 16; uh =horas - 16 * zh; minério =10 * zh + uh; zm =minutos / 16; um =minutos - 16 * zm; miniti =10 * zm + um; para (int i =400; i> 0; i--) {displayNumber01 (minério * 10000 + miniti * 100); } atraso (100); //Serial.print(digitalRead(SW0));if (digitalRead (SW0) ==0) Z =0; atraso (300); } // Serial.print (SW2);} void displayNumber01 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25 # define DIGIT_ON HIGH # define DIGIT_OFF LOW para (int digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto intervalo de tempo (dígito) {caso 1:digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); // digitalWrite (segDP, LOW); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, 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 digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {case 1:lightNumber (10); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); // digitalWrite (segDP, LOW); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, 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 digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {caso 1:digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, 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 digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {case 1:lightNumber (10); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, 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 digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo (dígito) {caso 1:digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, 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 digit =6; dígito> 0; dígito--) {// Ligue um dígito para um curto período de tempo switch (dígito) {case 1:// digitalWrite (digit1, DIGIT_ON); pausa; caso 2:digitalWrite (digit2, DIGIT_ON); pausa; caso 3:digitalWrite (digit3, DIGIT_ON); pausa; caso 4:digitalWrite (digit4, DIGIT_ON); pausa; caso 5:digitalWrite (digit5, DIGIT_ON); pausa; caso 6:digitalWrite (digit6, DIGIT_ON); pausa; } lightNumber (toDisplay% 10); toDisplay / =10; delayMicroseconds (DISPLAY_BRIGHTNESS); // Desativa todos os segmentos lightNumber (10); // Desativa todos os dígitos digitalWrite (digit1, DIGIT_OFF); digitalWrite (digit2, DIGIT_OFF); digitalWrite (digit3, DIGIT_OFF); digitalWrite (digit4, DIGIT_OFF); digitalWrite (digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} // Dado um número, liga esses segmentos // Se número ==10, então desligue numbervoid lightNumber (int numberToDisplay) {// Common Anode ********* ***************** # define SEGMENT_ON HIGH # define SEGMENT_OFF LOW / * Cátodo comum ***************** #define SEGMENT_ON LOW # definir SEGMENT_OFF HIGH * / switch (numberToDisplay) {case 0:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_OFF); pausa; caso 1:digitalWrite (segA, SEGMENT_OFF); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_OFF); pausa; caso 2:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_OFF); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_ON); pausa; caso 3:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_ON); pausa; caso 4:digitalWrite (segA, SEGMENT_OFF); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 5:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_OFF); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 6:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_OFF); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 7:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_OFF); pausa; caso 8:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_ON); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; caso 9:digitalWrite (segA, SEGMENT_ON); digitalWrite (segB, SEGMENT_ON); digitalWrite (segC, SEGMENT_ON); digitalWrite (segD, SEGMENT_ON); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_ON); digitalWrite (segG, SEGMENT_ON); pausa; // todos os segmentos estão ON caso 10:digitalWrite (segA, SEGMENT_OFF); digitalWrite (segB, SEGMENT_OFF); digitalWrite (segC, SEGMENT_OFF); digitalWrite (segD, SEGMENT_OFF); digitalWrite (segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite (segG, SEGMENT_OFF); pausa; } // Fim da codificação, BUDHUSARANAI, Boa sorte. } 

Esquemas

Esta é a fiação do SSD com LED

Processo de manufatura

  1. Relógio de visão pov do Arduino
  2. Simple Word Clock (Arduino)
  3. DIY Simple 20 kHz Arduino Oscilloscope no Nokia 5110 LCD
  4. Relógio mestre
  5. Smart Blinds
  6. Word Clock italiano
  7. Arduino com Bluetooth para controlar um LED!
  8. Arduino Quadruped
  9. Relógio de matriz de 7 segmentos
  10. Uma entrada analógica isolada para Arduino