Paso 7: Conecte un Chronodot.
Me pareció muy fácil de programar. Sólo utilicé el programa de prueba en la parte inferior de la página de documentación como base.
Para conectar el chronodot, hice un par de cables para conectar a los pines 5v, gnd, scl y sda en el chronodot. Me enganchado a los conectores de alimentación y tierra en el chronodot a los conectores de 5V y gnd de Arduino. El pin SDA se conecta al pin analógico 4 y el pin SCL va al pin analógico 5. Aquí es un recurso para conectar la Chronodot: http://www.codingcolor.com/microcontrollers/an-arduino-lcd-clock-using-a-chronodot-rtc/
Luego ya hackeado el código de test chronodot en mi programa y se fue!
Aquí está el código, o usted puede descargar a continuación.
/*
* gearclock_Chronodot.pde
*
* Brian Wagner
* LVL1 - Hackerspace de Louisville
* www.lvl1.org
* 10/09/11
* 18/09/11 volvió a trabajar para utilizar time_t
* 19/09/11 agrega Chronodot
*/
#include < Stepper.h >
#include < Wire.h >
#define 20 pasos / / el paso a paso tiene 20 pasos por revolución
int ledPin = 13; LED conectado al pin digital 13
int LastMinute;
int ThisMinute;
int LastSecond;
int ThisSecond;
para el 21-02485-03 paso a paso, los colores en orden son amarillo, rojo, negro, azul
Horas de paso a paso (pasos, 4, 5, 6, 7);
Minutos de paso a paso (pasos, 8, 9, 10, 11);
int MinuteCount;
void setup()
{
pinMode (ledPin, salida);
Serial.Begin(9600);
Wire.Begin();
claro /EOSC de bits
A veces necesarias para que el reloj
sigue funcionando a batería. Una vez ajustada,
no necesita ser reajustado, pero es un buen
idea para asegurarse de que.
Wire.beginTransmission(0x68); Dirección DS3231
Wire.Send(0x0E); Seleccione registrar
Wire.Send(0b00011100); escribir registro de mapa de bits, bit 7 es /EOSC
Wire.endTransmission();
Última hora = 0;
LastSecond = 0;
Qué tan rápido va a paso
Minutes.setSpeed(5);
Hours.setSpeed(5);
prueba los minutos y horas para hacer sur va en la dirección correcta
Minutes.Step(100);
Hours.Step(100);
Minutes.Step(4);
Hours.Step(4);
MinuteCount = 1;
}
void loop()
{
int segundos;
int minutos;
int horas;
enviar solicitud para recibir los datos a partir de registro 0
Wire.beginTransmission(0x68); 0x68 es la dirección de dispositivo del DS3231
Wire.Send(0); desde el registro 0
Wire.endTransmission();
Wire.requestFrom(0x68, 3); solicitar tres bytes (segundos, minutos, horas)
while(Wire.Available())
{
segundos = Wire.receive(); segundos
minutos = Wire.receive(); obtener minutos
horas = Wire.receive(); Haz horas
segundos = (((seconds & 0b11110000) >> 4) * 10 + (segundos / 0b00001111)); convertir de BCD a decimal
minutos = (((minutes & 0b11110000) >> 4) * 10 + (minutos / 0b00001111)); convertir de BCD a decimal
horas = (((hours & 0b00110000) >> 4) * 10 + (horas y 0b00001111)); convertir de BCD a decimal (asumir el modo de 24 horas)
Serial.Print(hours); Serial.Print(":"); Serial.Print(minutes); Serial.Print(":"); Serial.println(seconds);
}
ThisMinute = minutos;
ThisSecond = segundos;
Si (ThisSecond! = LastSecond) {}
digitalWrite (ledPin, HIGH); prende el LED
Delay(200); esperar 500ms
digitalWrite (ledPin, LOW); fijar el LED apagado
LastSecond = ThisSecond;
}
Si (ThisMinute! = LastMinute) {}
Minutes.Step(2);
MinuteCount ++;
LastMinute = ThisMinute;
}
Marque el anillo de la hora cada 5 minutos
Si (MinuteCount > 5) {}
Hours.Step(2);
MinuteCount = 1;
}
Delay(200);
}