Paso 6: Programación de Arduino
No voy a ir sobre cómo programar un Arduino, hay un montón de ejemplo en línea. Usé el ejemplo de mando motor en el IDE de Arduino como base para la conducción de los motores paso a paso. A partir de ahí modifiqué el código para controlar los motores paso a paso.
Al programar un reloj, obviamente desea que su reloj para correr y no perder el tiempo. Mi primer hack en el código, mi reloj perdido unos 15 minutos durante la noche. No era aceptable. El algoritmo para ese código era contar 60 segundos, marque la manecilla de los minutos, y luego contar a 5 minutos y marque la aguja de las horas. No el más elegante de las soluciones.
Así que lo siguiente que hice fue utilizar una biblioteca de fecha y hora de y el último minuto, luego comprobaría la hora cada 5 segundos o así y si el minuto cambia entonces que le Marque el reloj. Cada 5 minutos, yo le Marque la manecilla de las horas. También puse el pin13 llevado a parpadear cada segundo. Usted tendrá que instalar la biblioteca de tiempo para ejecutar el código de pde. Se descarga aquí http://www.arduino.cc/playground/Code/Time
Código (cortar y pegar) o descargar el PDE a continuación:
/*
* gearclock.pde
*
* Brian Wagner
* LVL1 - Hackerspace de Louisville
* www.lvl1.org
* 10/09/11
* 18/09/11 volvió a trabajar para utilizar time_t
*/
#include < Stepper.h >
#include < Time.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;
time_t t;
void setup()
{
pinMode (ledPin, salida);
setTime(1,1,1,1,1,1); configurar el tiempo a 01 de enero de 2001
No importa lo que el tiempo está establecido,
Estamos comprobando para ver si ha pasado un minuto.
t = now();
LastMinute = minute(t);
LastSecond = second(t);
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()
{
t = now();
ThisMinute = minute(t);
ThisSecond = second(t);
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);
}