Relógio digital TM1637 com configuração de hora e funcionalidade de alarme
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 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
- Tipos de sensores analógicos e digitais com aplicativos
- Alarme de água Raspberry pi 2 com t sapateiro mais
- Construindo robôs com Raspberry Pi e Python
- Explorando a transformação digital com Fiix e IDC
- Economizando tempo e dinheiro com o monitoramento de condição
- 8 maneiras de cortar custos de manutenção e aumentar a receita com software de manutenção
- Sensor Portenta e Termopar (com MAX6675)
- Acelerando a transformação digital com IoT Data, graças à Cisco e IBM
- Despertador simples com DS1302 RTC
- A funcionalidade e o avanço do rolamento