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

Relógio digital TM1637 com configuração de hora e funcionalidade de alarme

Componentes e suprimentos

Arduino Nano R3
× 1
TM1637 Display de 4 dígitos
× 1
Módulo DS1302 RTC
× 1
SparkFun LilyPad LED azul (5pcs)
× 1
Buzzer
× 1

Sobre este projeto


Este é um protótipo do mecanismo de configuração de hora e alarme que estou planejando usar em meus próximos projetos de relógio digital. Espero que seja útil. Se você pensar em alguma melhoria, por favor me avise. Eu ficaria mais do que feliz em examiná-los e potencialmente incorporá-los em meu código.

Você pode assistir a todo o tutorial em

Se você gosta deste conteúdo e quer me apoiar na criação de vídeos semelhantes, vá para minha página do Patreon

https://www.patreon.com/MariosIdeas

Ou

https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7PD67JWZ9S3EJ&source=url

Código

  • Exibindo a hora do módulo RTC mais configuração de hora e funcionalidade de configuração de alarme
Exibindo o tempo do módulo RTC mais configuração de tempo e funcionalidade de configuração de alarme Arduino
Este código está lendo a hora atual do módulo RTC. Em seguida, também permite atualizar a hora atual e também configurar a hora do alarme.
As ações de configuração são realizadas usando 3 botões.
 // Mario's Ideas // Relógio digital TM1637 com configuração e funcionalidade de alarme # include  #include  #include  //// Declaração do módulo RTC // PINS CLK, DAT, RSTvirtuabotixRTC myRTC (A1, A2, A3); // Variáveis ​​para armazenar valores anteriores lidos no módulo RTC em minutos; int horas; // Variáveis ​​para armazenar a hora em que o alarme deve disparar int Alarm_minutes =05; int Alarm_hours =18; uint8_t Blank [] ={0x0}; int POSITION =0; // Tabela para armazenar 4 dígitos, usados ​​em dígitos de procedimento de configuração de tempo e alarme [3]; intervalo int =0; #define Alarme 9 // Botão para ligar ou desligar o modo de alarme # define Buzer 13 # define Led 8 // Statusesboolean Alarm_set =false; boolean Alarm_in_progress =false; boolean Setup_on =false; // pinos de conexão de display de 4 dígitos (pinos digitais) #define CLK 4 # define DIO 5 // declaração de exibição de 4 dígitosTM1637Relógios de exibição (CLK, DIO); void setup () {attachInterrupt (digitalPinToInterrupt (2), Press_A_Button, RISING); attachInterrupt (digitalPinToInterrupt (3), Press_B_Button, RISING); pinMode (Alarme, INPUT); pinMode (Buzer, OUTPUT); pinMode (Led, OUTPUT); digitalWrite (Buzer, LOW); clock.setBrightness (0x0f); Serial.begin (9600);} void Press_A_Button () {if (intervalo> 3) {if (Setup_on ==false) {Setup_on =true; if (Alarm_set ==true) {digits [0] =(int) Alarm_hours / 10; dígitos [1] =Alarm_hours - ((int) Alarm_hours / 10) * 10; dígitos [2] =(int) Alarm_minutes / 10; dígitos [3] =Alarm_minutes - ((int) Alarm_minutes / 10) * 10; } else {dígitos [0] =(int) myRTC.hours / 10; dígitos [1] =myRTC.horas - ((int) myRTC.horas / 10) * 10; dígitos [2] =(int) myRTC.minutos / 10; dígitos [3] =myRTC.minutos - ((int) myRTC.minutos / 10) * 10; }} else {POSITION ++; if (POSIÇÃO ==4) {if (Alarm_set ==true) {Alarm_minutes =digits [3] + digits [2] * 10; Alarme_horas =dígitos [1] + dígitos [0] * 10; } else {myRTC.setDS1302Time (0, dígitos [3] + dígitos [2] * 10, dígitos [1] + dígitos [0] * 10, myRTC.dayofweek, myRTC.dayofmonth, myRTC.month, myRTC.ano); clock.showNumberDec (dígitos [0], falso, 1,0); clock.showNumberDec (dígitos [1], falso, 1,1); clock.showNumberDec (dígitos [2], falso, 1,2); clock.showNumberDec (dígitos [3], falso, 1,3); } POSIÇÃO =0; Setup_on =false; }}} intervalo =0;} void Press_B_Button () {if (intervalo> 3) {if (Setup_on) {digits [POSITION] =digits [POSITION] +1; if (POSIÇÃO ==0 e dígitos [POSIÇÃO] ==3) dígitos [POSIÇÃO] =0; if (POSITION! =0 e dígitos [POSITION] ==10) dígitos [POSITION] =0; intervalo =0; }} intervalo =0;} void loop () {if (digitalRead (Alarm) ==HIGH e Alarm_set ==false) {if (intervalo> 30) {digitalWrite (Led, HIGH); Alarm_set =true; atraso (300); }} else {if (digitalRead (Alarm) ==HIGH e Alarm_set ==true) {if (intervalo> 30) {Alarm_set =false; Alarm_in_progress =false; digitalWrite (Led, LOW); atraso (300); }}} myRTC.updateTime (); if (Setup_on ==true) {clock.showNumberDec (dígitos [0], falso, 1,0); clock.showNumberDec (dígitos [1], falso, 1,1); clock.showNumberDec (dígitos [2], falso, 1,2); clock.showNumberDec (dígitos [3], falso, 1,3); atraso (200); clock.setSegments (em branco, 1, POSIÇÃO); atraso (200); clock.showNumberDec (dígitos [0], falso, 1,0); clock.showNumberDec (dígitos [1], falso, 1,1); clock.showNumberDec (dígitos [2], falso, 1,2); clock.showNumberDec (dígitos [3], falso, 1,3); } else {if (myRTC.minutes ==Alarm_minutes and myRTC.hours ==Alarm_hours e Alarm_set ==true e Setup_on ==false) {Alarm_in_progress =true; } if (Alarm_in_progress) {digitalWrite (Buzer, HIGH); atraso (1000); digitalWrite (Buzer, LOW); atraso (1000); } if (myRTC.minutes! =minutes) {clock.showNumberDecEx ((int) myRTC.hours / 10 * 1000 + (myRTC.hours - ((int) myRTC.hours / 10) * 10) * 100 + (int) myRTC.minutes / 10 * 10 + myRTC.minutes - ((int) myRTC.minutes / 10) * 10, (0x80>> 1), true); minutos =meuRTC.minutos; horas =meuRTC.horas; }} if (intervalo <200) intervalo ++;} 

Esquemas


Processo de manufatura

  1. Tipos de sensores analógicos e digitais com aplicativos
  2. Alarme de água Raspberry pi 2 com t sapateiro mais
  3. Construindo robôs com Raspberry Pi e Python
  4. Explorando a transformação digital com Fiix e IDC
  5. Economizando tempo e dinheiro com o monitoramento de condição
  6. 8 maneiras de cortar custos de manutenção e aumentar a receita com software de manutenção
  7. Sensor Portenta e Termopar (com MAX6675)
  8. Acelerando a transformação digital com IoT Data, graças à Cisco e IBM
  9. Despertador simples com DS1302 RTC
  10. A funcionalidade e o avanço do rolamento