Paso 8: Software - el código principal.
3 - código principalOK, este es el programa principal - sobrescribir el programa de prueba con esto.
Usted necesitará instalar la biblioteca de "Tiempo" aunque creo que esto se instala por defecto.
Te hablo a través de las funciones principales del código. Sigo mucho un aprendiz así que bien puedo haber escogido algunos métodos torpes, pero funciona.
Los principales obstáculos son:
-Leer la hora
-Convertir las horas de formato de 24 horas en formato de 12 horas y dejar el 0 del 1er dígito - no quieren dibujo "08 32" - pérdida de tiempo dibujo del cero.
-tomar los minutos y tira en dígitos individuales.
-dibujar el tiempo, cada dígito tomando la misma cantidad de espacio para que el cursor en la EAS siempre vuelve al mismo lugar, listo para la próxima actualización del tiempo.
He hecho las conversiones de tiempo con llamadas a funciones remotas (getDigit y hourConverter). print2digits no se utiliza pero era parte de la prueba.
Hay un montón de comentada prueba código izquierda para su beneficio. Mucha de la prueba de la hora real fue hecha vía el monitor serial IDE - el EAS es demasiado lento para las pruebas de ese tipo de cosas.
/ *---(Importación necesita bibliotecas)---* / void setup() {} void loop() {} Pantalla clara de EAS con una EasyDriver conectado dirección a pin Arduino pin 8 y pin paso a Aruino pin 9 digitalWrite (8, bajo);
#include < DS1307RTC.h >
#include < Time.h >
#include < Wire.h >
#include < Stepper.h >
/ *---(Declarar constantes, números de pines)---* /
#define 32 pasos //Number de pasos por revolución
#define STEPSSIDE 200 //number pasos lado motor
/ *---(Declarar objetos)---* /
crear una instancia de la clase paso a paso, especificando
el número de pasos del motor y los pernos ha
al
Las conexiones de pasador necesitan ser 4 pines conectados
Motor controlador In1, In2, In3, In4 y luego los pernos entrado
aquí en la secuencia 1-3-2-4 para la secuencia correcta
Small_stepperV paso a paso (pasos, 4, 5, 6, 7);
Small_stepperH paso a paso (pasos, 2, 3, 12, 13);
Serial.Begin(9600);
ajustar la velocidad del motor
small_stepperH.SETSPEED(700);
small_stepperV.SETSPEED(700);
pinMode (8, salida);
pinMode (9, salida);
digitalWrite (8, bajo);
digitalWrite (9, bajo);
}
tmElements_t tm;
RTC.read(tm);
MAYOR sección de IF - Compruebe si el minuto es un múltiplo de 5
Si ((getDigit (tm. Minutos, 1)) == 5 || (getDigit (tm. Minutos, 1)) == 0) {/ / volver a activar para la actualización de 5 minutos
para (micropasos int = 1; micropasos < 1400; micropasos ++) {}
digitalWrite (9, alto);
Delay(1);
digitalWrite (9, bajo);
Delay(1);
}
Delay(1000);
digitalWrite (8, HIGH);
para (micropasos int = 1; micropasos < 1400; micropasos ++) {}
digitalWrite (9, alto);
Delay(1);
digitalWrite (9, bajo);
Delay(1);
}
/ * Serial.print ("Ok, hora =");
Serial.Print (hourConverter (tm. Hora));
hourConvert (tm. Hora);
Serial.Print (tm. Hora);
Serial.Write (',');
Serial.Print ("minutos =");
print2digits(TM. Minuto);
Serial.Print (tm. Minuto);
Serial.println();
*/
Sección de extracción principal de hora
Extraer y sacar hora
Si ((hourConverter (tm. Hora)) == 1) {}
sketchBlank ();
sketchSpaceSml ();
sketch1 ();
} else if ((hourConverter (tm. Hora)) == 2) {}
sketchBlank ();
sketchSpaceSml ();
sketch2 ();
} else if ((hourConverter (tm. Hora)) == 3) {}
sketchBlank ();
sketchSpaceSml ();
sketch3 ();
} else if ((hourConverter (tm. Hora)) == 4) {}
sketchBlank ();
sketchSpaceSml ();
sketch4 ();
} else if ((hourConverter (tm. Hora)) == 5) {}
sketchBlank ();
sketchSpaceSml ();
sketch5 ();
} else if ((hourConverter (tm. Hora)) == 6) {}
sketchBlank ();
sketchSpaceSml ();
sketch6 ();
} else if ((hourConverter (tm. Hora)) == 7) {}
sketchBlank ();
sketchSpaceSml ();
sketch7 ();
} else if ((hourConverter (tm. Hora)) == 8) {}
sketchBlank ();
sketchSpaceSml ();
sketch8 ();
} else if ((hourConverter (tm. Hora)) == 9) {}
sketchBlank ();
sketchSpaceSml ();
sketch9 ();
} else if ((hourConverter (tm. Hora)) == 10) {}
sketch1 ();
sketchSpaceSml ();
sketch0 ();
} else if ((hourConverter (tm. Hora)) == 11) {}
sketch1 ();
sketchSpaceSml ();
sketch1 ();
} else if ((hourConverter (tm. Hora)) == 12) {}
sketch1 ();
sketchSpaceSml ();
sketch2 ();
}
espacio antes de minutos
sketchBlank ();
Extracto y sorteo minuto 1er dígito
Si ((getDigit (tm. Minuto, 2)) == 1) {}
sketch1 ();
} else if ((getDigit (tm. Minuto, 2)) == 2) {}
sketch2 ();
} else if ((getDigit (tm. Minuto, 2)) == 3) {}
sketch3 ();
} else if ((getDigit (tm. Minuto, 2)) == 4) {}
sketch4 ();
} else if ((getDigit (tm. Minuto, 2)) == 5) {}
sketch5 ();
} else {}
sketch0 ();
}
Espacio antes de 2do dígito de minutos
sketchSpaceSml ();
Extracto y sorteo minuto 2 dígitos
Si ((getDigit (tm. Minutos, 1)) == 1) {}
sketch1 ();
} else if ((getDigit (tm. Minutos, 1)) == 2) {}
sketch2 ();
} else if ((getDigit (tm. Minutos, 1)) == 3) {}
sketch3 ();
} else if ((getDigit (tm. Minutos, 1)) == 4) {}
sketch4 ();
} else if ((getDigit (tm. Minutos, 1)) == 5) {}
sketch5 ();
} else if ((getDigit (tm. Minutos, 1)) == 6) {}
sketch6 ();
} else if ((getDigit (tm. Minutos, 1)) == 7) {}
sketch7 ();
} else if ((getDigit (tm. Minutos, 1)) == 8) {}
sketch8 ();
} else if ((getDigit (tm. Minutos, 1)) == 9) {}
sketch9 ();
} else {}
sketch0 ();
}
Devolver el cursor a Inicio
small_stepperH.Step(-11800); izquierda
small_stepperH.Step(1200); derecho
prueba para extraer 1 o segundo dígito (cuentas de la derecha) es decir, "12" - dígitos 1 = 2
/ * Serial.print ("Min dígitos 2 =");
Serial.Print (getDigit (tm. Minuto, 2));
Serial.println();
Serial.Print ("Min dígitos 1 =");
Serial.Print (getDigit (tm. Minutos, 1));
Serial.println();
prueba extraer el número de horas
Si ((hourConverter (tm. Hora)) == 9) {}
Serial.Print ("hora de dígitos = nueve!!!!");
} else if ((hourConverter (tm. Hora)) == 10) {}
Serial.Print ("hora de dígitos = diez!");
}
Serial.println();
*/
Delay(59500); Un decente retraso entre las actualizaciones
} //remove el retraso anterior y re-anable actualiza esta línea durante 5 min.
}
FINAL DE LA CAÑERÍA DE
void print2digits (int cantidad) {}
Si (número > = 0 & & número < 10) {}
Serial.Write('0');
}
Serial.Print(Number);
}
int getDigit (unsigned int cantidad, int dígitos) {//Takes un número y devuelve el dígito de x'th)
para (int i = 0; i < dígitos-1; i ++) {}
número / = 10;
}
vuelta número % 10;
}
int hourConverter (int cantidad) {//Takes 24 hora y resta 12 o agrega 12 si es 00: horas)
Si (numero > 12) {}
número = número - 12;
} else if (cantidad == 0) {}
número = número + 12;
}
Devuelve número;
}
void sketch1 () {}
small_stepperH.Step(700); derecho
small_stepperV.Step(3100); hasta
small_stepperH.Step(500); derecho
small_stepperV.Step(-3090); abajo
small_stepperH.Step(-1000); izquierda
small_stepperH.Step(1700); derecho
}
sketch2 nula () {}
small_stepperV.Step(2000); hasta
small_stepperH.Step(1400); derecho
small_stepperV.Step(600); hasta
small_stepperH.Step(-1750); izquierda
small_stepperV.Step(500); hasta
small_stepperH.Step(2200); derecho
small_stepperV.Step(-1950); abajo
small_stepperH.Step(-1600); izquierda
small_stepperV.Step(-600); abajo
small_stepperH.Step(1600); derecho
small_stepperV.Step(-500); abajo
small_stepperH.Step(-2200); izquierda
small_stepperH.Step(2200); derecho
}
void sketch3 () {}
small_stepperH.Step(2000); derecho
small_stepperV.Step(3100); hasta
small_stepperH.Step(-2250); izquierda
small_stepperV.Step(-950); abajo
small_stepperH.Step(1700); derecho
small_stepperV.Step(-500); abajo
small_stepperH.Step(-1650); izquierda
small_stepperV.Step(-550); abajo
small_stepperH.Step(1650); derecho
small_stepperV.Step(-550); abajo
small_stepperH.Step(-1700); izquierda
small_stepperV.Step(-550); abajo
small_stepperH.Step(2150); derecho
}
void sketch4 () {}
small_stepperH.Step(1800); derecho
small_stepperV.Step(3100); hasta
small_stepperH.Step(-950); izquierda
small_stepperV.Step(-1500); abajo
small_stepperH.Step(-650); izquierda
small_stepperV.Step(1500); hasta
small_stepperH.Step(-600); izquierda
small_stepperV.Step(-1950); abajo
small_stepperH.Step(1600); derecho
small_stepperV.Step(-1130); abajo
small_stepperH.Step(630); derecho
}
void sketch5 () {}
small_stepperV.Step(1000); hasta
small_stepperH.Step(1300); derecho
small_stepperV.Step(600); hasta
small_stepperH.Step(-1700); izquierda
small_stepperV.Step(1500); hasta
small_stepperH.Step(2100); derecho
small_stepperV.Step(-950); abajo
small_stepperH.Step(-1700); izquierda
small_stepperV.Step(-650); abajo
small_stepperH.Step(1700); derecho
small_stepperV.Step(-1450); abajo
small_stepperH.Step(-2200); izquierda
small_stepperH.Step(2200); derecho
}
void sketch6 () {}
small_stepperV.Step(3100); hasta
small_stepperH.Step(1750); derecho
small_stepperV.Step(-950); abajo
small_stepperH.Step(-1650); izquierda
small_stepperV.Step(-700); abajo
small_stepperH.Step(1650); derecho
small_stepperV.Step(-1450); abajo
small_stepperH.Step(-2200); izquierda
small_stepperH.Step(950); derecho
small_stepperV.Step(1500); hasta
small_stepperH.Step(800); derecho
small_stepperV.Step(-1000); abajo
small_stepperH.Step(-1150); izquierda
small_stepperV.Step(-480); abajo
small_stepperH.Step(1650); derecho
}
void sketch7 () {}
small_stepperH.Step(1250); derecho
small_stepperV.Step(2600); hasta
small_stepperH.Step(-1100); izquierda
small_stepperV.Step(-1200); abajo
small_stepperH.Step(-600); izquierda
small_stepperV.Step(1670); hasta
small_stepperH.Step(2200); derecho
small_stepperV.Step(-3020); abajo
small_stepperH.Step(-900); izquierda
small_stepperH.Step(1000); derecho
}
void sketch8 () {}
small_stepperV.Step(3100); hasta
small_stepperH.Step(1750); derecho
small_stepperV.Step(-950); abajo
small_stepperH.Step(-1650); izquierda
small_stepperV.Step(-700); abajo
small_stepperH.Step(1150); derecho
small_stepperV.Step(1200); hasta
small_stepperH.Step(470); derecho
small_stepperV.Step(-2600); abajo
small_stepperH.Step(-2200); izquierda
small_stepperH.Step(950); derecho
small_stepperV.Step(1500); hasta
small_stepperH.Step(800); derecho
small_stepperV.Step(-1000); abajo
small_stepperH.Step(-1160); izquierda
small_stepperV.Step(-500); abajo
small_stepperH.Step(1700); derecho
}
void sketch9 () {}
small_stepperH.Step(1250); derecho
small_stepperV.Step(2650); hasta
small_stepperH.Step(-1100); izquierda
small_stepperV.Step(-1200); abajo
small_stepperH.Step(1050); derecho
small_stepperV.Step(-450); abajo
small_stepperH.Step(-1550); izquierda
small_stepperV.Step(2050); hasta
small_stepperH.Step(2150); derecho
small_stepperV.Step(-3050); abajo
small_stepperH.Step(-900); izquierda
small_stepperH.Step(1000); derecho
}
void sketch0 () {}
small_stepperV.Step(3100); hasta
small_stepperH.Step(1850); derecho
small_stepperV.Step(-3050); abajo
small_stepperH.Step(-2200); izquierda
small_stepperH.Step(800); derecho
small_stepperV.Step(2500); hasta
small_stepperH.Step(850); derecho
small_stepperV.Step(-2000); abajo
small_stepperH.Step(-1150); izquierda
small_stepperV.Step(-530); abajo
small_stepperH.Step(1800); derecho
}
void sketchBlank () {}
small_stepperH.Step(2000); derecho
}
void sketchSpaceSml () {}
small_stepperH.Step(500); derecho
}