Quando é necessário que o projeto tenha um controle de data/hora, utilizamos o circuito RTC (Real-time clock).
O módulo DS3231 possui uma bateria externa para manter o relógio em atividade quando o circuito estiver desligado e um sensor de temperatura ambiente integrado.
A comunicação com o microcontrolador é através do protocolo I2C.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | /*--------------------------------------------------------- Programa : RTC DS3231 Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 19/02/2022 ---------------------------------------------------------*/ #include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231 DS3231 rtc; RTCDateTime dt; void setup () { //Inicializa a comunicação serial Serial.begin(115200); //Inicializa o módulo RTC DS3231 rtc.begin(); //Mensagem inicial Serial.println("RTC DS3231 - www.efeitonerd.com.br"); Serial.println("Para ajustar o RTC informe a data e hora no formato dd/MM/yyyy HH:mm:ss"); delay(1000); } void loop () { String strSerial = ""; //Recebe a string da serial para ajuste de data/hora while (Serial.available() > 0) { strSerial += Serial.readString(); delay(10); } if (strSerial.length() == 19) { setRTC(strSerial); } //Retorna os valores atuais do RTC para a variável dt dt = rtc.getDateTime(); //Exibe os valores atuais Serial.println("\nValores atuais do RTC:"); //Formato Data/Hora char str[20]; sprintf(str, "%02d/%02d/%04d %02d:%02d:%02d", dt.day, dt.month, dt.year, dt.hour, dt.minute, dt.second); Serial.print("\t- Data/hora: "); Serial.println(str); //Formato data extenso Serial.print("\t- Data extenso: "); Serial.print(getStrWeekday(dt.dayOfWeek)); Serial.print(", "); Serial.print(dt.day); Serial.print(" de "); Serial.print(getStrMonth(dt.month)); Serial.print(" de "); Serial.println(dt.year); //Temperatura Serial.print("\t- Temperatura: "); Serial.print(rtc.readTemperature()); Serial.println("º"); delay(3000); } void setRTC(String dateTime) { //Formato: dd/MM/yyyy HH:mm:ss (Ex.: 19/02/2022 07:30:00) int year = dateTime.substring(6, 10).toInt(); int month = dateTime.substring(3, 5).toInt(); int day = dateTime.substring(0, 2).toInt(); int hour = dateTime.substring(11, 13).toInt(); int minute = dateTime.substring(14, 16).toInt(); int second = dateTime.substring(17, 19).toInt(); Serial.println("\nAjustando data/hora..."); rtc.setDateTime(year, month, day, hour, minute, second); Serial.println("OK!"); } String getStrWeekday(int dayOfWeek) { switch (dayOfWeek) { case 1: return "Segunda-feira"; break; case 2: return "Terca-feira"; break; case 3: return "Quarta-feira"; break; case 4: return "Quinta-feira"; break; case 5: return "Sexta-feira"; break; case 6: return "Sabado"; break; case 7: return "Domingo"; break; default: return ""; } } String getStrMonth(int month) { switch (month) { case 1: return "Janeiro"; break; case 2: return "Fevereiro"; break; case 3: return "Marco"; break; case 4: return "Abril"; break; case 5: return "Maio"; break; case 6: return "Junho"; break; case 7: return "Julho"; break; case 8: return "Agosto"; break; case 9: return "Setembro"; break; case 10: return "Outubro"; break; case 11: return "Novembro"; break; case 12: return "Dezembro"; break; default: return ""; } } |
Qual a melhor versao do Arduino para iniciante,lembrando que eu tenho UNO . Eu ainda nem consegui fazer funcionar o Dsplay LquidCristal_12.h. Alguem pode explicar para mim como fazer
ResponderExcluirBom dia! Os modelos Uno e Nano são ótimos! Eles possuem os recursos necessários para o aprendizado!
ExcluirNotei que as entrada A4 e A5 é mais usada mas não consegui entender como fica assim : o Display liga no A4 e A5 ,mas por outras caisas pede essa mesma entrada por exemplo relogio RTC como resolver?
ResponderExcluirBom dia! As entradas A4 e A5 no Arduino Uno são as que possui a comunicação com protocolo I2C, que é o utilizado nesse módulo RTC. É possível utilizar mais de um periférico, através do endereço do protocolo. Dê umas pesquisada sobre comunicação I2C. Abraços!
Excluir