Paso 4: Comprobación y ajuste del módulo
Una vez que haya terminado de ensamblar el módulo. Conecte el módulo a la Arduino, para que las clavijas se insertan correctamente en el Arduino. El programa para el módulo de la prueba se da abajo. El código actualiza constantemente el tiempo a través del puerto serial.
Para ejecutar el módulo tenemos dos bibliotecas tenemos dos bibliotecas en el software de Arduino. Los pasos siguientes configurar el software de Arduino con las bibliotecas necesitada y el código.
Importación de las bibliotecas:
- Descargar la biblioteca "RealTimeClockDS1307" y guárdelo en el escritorio.
- Abra el Arduino y vaya a Sketch = > Biblioteca de importación = > Agregar biblioteca.
- Continuación, seleccione la biblioteca guarda en el escritorio y haga clic en Agregar.
- Ahora pega el código de ejemplo siguiente y haga clic en compilar. Si compila correctamente siga los pasos restantes.
- Si no importar la segunda biblioteca de "alambre" y repita el mismo procedimiento y compilar el código y va a trabajar.
Código de trabajo:
El código es escrito por "David H. Brown" lo uso simplemente para darle una introducción para el DS1307. De todos modos el Arduino se comunica con el módulo RTC y actualiza la hora cada segundo a través del Monitor de la serie. El creador nos ha dado una opción para ajustar la hora cuando envía el comando "?". Aparece el siguiente menú.
Este código nos ayudará a ajustar la hora así como comprobar si la batería del módulo fuente funciona correctamente. En el siguiente tutorial le mostrará cómo instalar una pantalla LCD y mostrar el tiempo desde el módulo RTC. Aquí está el código para probar el módulo y un archivo adjunto de la misma.
#include < Wire.h > #include < RealTimeClockDS1307.h > //RealTimeClock RTC; //=new RealTimeClock(); #define Display_Clock_Every_N_Seconds 10 / / n.secs para mostrar la fecha y hora #define Display_ShortHelp_Every_N_Seconds 60 / / n.secs para Mostrar sugerencia ayuda //#define TEST_Squarewave //#define TEST_StopStart //#define TEST_1224Switch int cuenta = 0; formato de Char [] = "00-00-00 00:00:00 x"; void setup() {/ / Wire.begin(); Serial.Begin(9600); pinMode (A3, salida); pin 16 (pin analógico 2) como salida *** digitalWrite (A3, alta); pin 16 (pin analógico 2) para bajas *** pinMode (A2, salida); PIN 17 (pin analógico 3) como salida *** digitalWrite (A2, LOW); PIN 17 (pin analógico 3) establecido en alto *** / / *** configuración del Pin analógico para módulo RTC ***} void loop() {if(Serial.available()) {processCommand();} RTC.readClock(); cuenta ++; Si (recuento % Display_Clock_Every_N_Seconds == 0) {Serial.print(count); Serial.Print(":"); RTC.getFormatted(formatted); Serial.Print(formatted); Serial.println(); ¿} Si (recuento % Display_ShortHelp_Every_N_Seconds == 0) {Serial.println ("envío? para una lista de comandos. ");} #ifdef TEST_Squarewave si (% recuento 10 == 0) {switch (cuenta/10% 6) {caso 0: Serial.print ("Squarewave desactivado (baja impedancia):"); RTC.sqwDisable(0); RTC.readData(7)) de serial.println((int); rotura; caso 1: Serial.print ("Squarewave deshabilitado (alta impedancia):"); RTC.sqwDisable(1); RTC.readData(7)) de serial.println((int); rotura; caso 2: Serial.println ("Squarewave habilitado en 1 Hz"); RTC.sqwEnable(RTC.SQW_1Hz); rotura; caso 3: Serial.println ("Squarewave permitido a 4,096 kHz"); RTC.sqwEnable(RTC.SQW_4kHz); rotura; caso 4: Serial.println ("Squarewave habilitado a 8.192 kHz"); RTC.sqwEnable(RTC.SQW_8kHz); rotura; caso 5: Serial.println ("Squarewave permitido a 32,768 kHz"); RTC.sqwEnable(RTC.SQW_32kHz); rotura; por defecto: Serial.println ("Squarewave prueba no definido"); //switch}} #endif #ifdef TEST_StopStart si (% recuento 10 == 0) {if (! RTC.isStopped()) {if(RTC.getSeconds() < 45) {Serial.println ("reloj de parada durante 10 segundos"); RTC.stop(); //if} tenemos bastante tiempo} else {RTC.setSeconds(RTC.getSeconds()+11); RTC.start(); Serial.println ("adición de 11 segundos y reiniciar el reloj); //if}} en un múltiplo de 10 cuenta #endif #ifdef TEST_1224Switch si (% recuento 10 == 0) {si (recuento % 20 == 0) {Serial.println ("cambiar a tiempo de 12 horas"); RTC.switchTo12h(); RTC.setClock(); } else {Serial.println ("cambiar a 24 horas"); RTC.switchTo24h(); RTC.setClock(); {}} #endif} void processCommand() {si ()! Serial.Available()) {return;} char comando = Serial.read(); int en in2; Switch(Command) {'H' del caso: caso 'h': in=SerialReadPosInt(); RTC.setHours(in); RTC.setClock(); Serial.Print ("ajuste de horas"); Serial.println(in); rotura; caso 'I': caso 'i': in=SerialReadPosInt(); RTC.setMinutes(in); RTC.setClock(); Serial.Print ("ajuste de minutos"); Serial.println(in); rotura; de caso ': case': in=SerialReadPosInt(); RTC.setSeconds(in); RTC.setClock(); Serial.Print ("ajuste a segundos"); Serial.println(in); rotura; 'Y' del caso: caso 'y': in=SerialReadPosInt(); RTC.setYear(in); RTC.setClock(); Serial.Print ("ajuste año"); Serial.println(in); rotura; caso soy ': caso estoy ': in=SerialReadPosInt(); RTC.setMonth(in); RTC.setClock(); Serial.Print ("mes a"); Serial.println(in); rotura; caso sería ': caso sería ': in=SerialReadPosInt(); RTC.setDate(in); RTC.setClock(); Serial.Print ("ajuste de la fecha a"); Serial.println(in); rotura; caso 'W': Serial.print ("día de la semana es"); RTC.getDayOfWeek()) de serial.println((int); rotura; caso 'w': in=SerialReadPosInt(); RTC.setDayOfWeek(in); RTC.setClock(); Serial.Print ("día del ajuste de la semana a"); Serial.println(in); rotura; caso ' t ': caso ' t ': if(RTC.is12hour()) {RTC.switchTo24h(); Serial.println ("conmutación a 24 horas."); } else {RTC.switchTo12h(); Serial.println ("conmutación a 12 horas."); } RTC.setClock(); rotura; 'A' del caso: caso 'a': if(RTC.is12hour()) {RTC.setAM(); RTC.setClock(); Serial.println ("Set AM."); } else {Serial.println ("(Set horas sólo en modo de 24 horas.)");} break; 'P' del caso: caso 'p': if(RTC.is12hour()) {RTC.setPM(); RTC.setClock(); Serial.println ("Set PM."); } else {Serial.println ("(Set horas sólo en modo de 24 horas.)");} break; caso 'q': RTC.sqwEnable(RTC.SQW_1Hz); Serial.println ("onda cuadrada de salida a 1Hz"); rotura; caso 'Q': RTC.sqwDisable(0); Serial.println ("cuadrado de salida onda desactivado (baja)"); rotura; caso 'z': RTC.start(); Serial.println ("oscilador de reloj iniciado."); rotura; caso 'Z': RTC.stop(); Serial.println ("reloj oscilador detenido."); rotura; caso ' >': in=SerialReadPosInt(); in2=SerialReadPosInt(); RTC.writeData (en, in2); Serial.Print ("grabar registro"); Serial.Print(in); Serial.Print ("el valor"); Serial.println(in2); rotura; caso ' <': in=SerialReadPosInt(); in2=RTC.readData(in); Serial.Print ("leer registro"); Serial.Print(in); Serial.Print ("el valor"); Serial.println(in2); rotura; por defecto: Serial.println ("comando desconocido. Prueba estos: "); Serial.println ("h ## - establecer horas [gama 1..12 o 0..24]"); Serial.println ("i ## - minutos [gama 0..59]"); Serial.println ("s ## - set segundos [gama 0..59]"); Serial.println ("d ## - fecha [gama 1..31]"); Serial.println ("m ## - set mes [gama 1..12]"); Serial.println ("y ## - año set [gama 0..99]"); Serial.println ("w ## - conjunto arbitrario día de la semana [gama 1..7]"); Serial.println ("t - modo de 24 horas alternar"); Serial.println ("un - set p AM - PM set"); Serial.println(); Serial.println ("z - start clock Z - parada de reloj"); Serial.println ("q - SQW/OUT = 1Hz Q - parada SQW/OUT"); Serial.println(); Serial.println ("> ##, ###-escribir al registro ## el valor ###"); Serial.println ("< ##-leer el valor de registro ##"); } //switch en comando} //read en caracteres numéricos hasta algo mas //or no hay más datos están disponibles en serie. int SerialReadPosInt() {int i = 0; boolean hecho = false; while(Serial.available() & &! hecho) {char c = Serial.read(); si (c > = '0' & & c < = '9') {me = i * 10 + (c-'0');} otro {= true;}} volver i;}