Reloj de Arduino Etch-A-Sketch (8 / 9 paso)

Paso 8: Software - el código principal.

3 - código principal

OK, 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)---* /
#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);

void setup() {}
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);
}

void loop() {}
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

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);
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
}

Artículos Relacionados

Controlado por Arduino bolsillo Etch A Sketch paseo aleatorio simulación

Controlado por Arduino bolsillo Etch A Sketch paseo aleatorio simulación

este proyecto es el resultado de Wal-Mart compra por impulso salida carril de Etch A Sketch de bolsillo por $3.99.Dos motores paso a paso conducen los ejes de mando de Etch A Sketch, y un motor servo gira Etch A Sketch para borrar la pantalla.  Uso a
Cortador del Laser del Etch A Sketch basados en Arduino.

Cortador del Laser del Etch A Sketch basados en Arduino.

En este proyecto tomo un Arduino Mini Pro conectarlo a un encargo hecho Etch A Sketch panel y utilizarlo para controlar un cortador del laser amarillo. El resultado es horas de diversión de corte láser loco, que nos va a tomar alrededor de la mayoría
Telecran (Etch a Sketch) + Arduino = Telecranduino!

Telecran (Etch a Sketch) + Arduino = Telecranduino!

me encontré con un montón de motores paso a paso y desde entonces he estado buscando para que un proyecto para hacer con los niños.Un viejo Telecran (Francés para Etch-a-Sketch) más tarde, estamos en el negocio!Lo que utilicé para este proyecto:-un a
Computarizado de Etch a Sketch

Computarizado de Etch a Sketch

al apoderarse de los soberanos de robot, necesitará utilizar nuestros etch-a-sketches. Aquí es cómo hacer un ordenador dibujar arte de vector con su juguete favorito de la infancia.** Que estoy atravesando y no acabado una serie de instructables viej
Robot dibujo mural de $100 (también funciona como un gigante etch-a-sketch)

Robot dibujo mural de $100 (también funciona como un gigante etch-a-sketch)

en Hack-a-day!Lo que me encanta de robots es que usted puede hacer una cosa que hace otras cosas.  Meta así!  Utiliza gcode dibujar cualquier imagen que te gusta, o usted puede conducirlo alrededor como un etch-a-sketch.  Puede escalar este robot has
Etch-a-Sketch LOGO - EASiLOGO

Etch-a-Sketch LOGO - EASiLOGO

¿Qué obtienes cuando cruzas una tortuga con un Etch-a-Sketch?LOGO interactivo de Etch-A-Sketch - 'EASiLOGO'!Este es el primer lenguaje de programación diseñado específicamente para el juguete famoso mundo de las artes de Ohio - Etch-a-Sketch. Si nunc
SK3TCH - tablero de equilibrio controlado de Etch-A-Sketch

SK3TCH - tablero de equilibrio controlado de Etch-A-Sketch

SK3TCHCómo usar una Wii Balance Board para controlar un Etch-A-SketchSólo para WindowsContenido:1. intro y partes de la lista2. engranajes3. construir el marco4. Asamblea5. conectar el WiiMote y Balance Board6. GlovePIE7. Arduino + Control del Motor8
TimeDuino - 7 segmento de reloj de Arduino (no hay registros de cambio necesitados!)

TimeDuino - 7 segmento de reloj de Arduino (no hay registros de cambio necesitados!)

Hey todos los asistentes instructable! Este es mi primer proyecto. Sí, sé las palabras generalmente el estereotipo actitud de "Esto no va a ser un buen proyecto", pero llevo esperando mucho tiempo para un proyecto que merece posiblemente rompien
Virtual Etch A Sketch

Virtual Etch A Sketch

The Etch A Sketch: famoso, creativo y único. Lamentablemente no tengo ninguna pista donde uno desde mi infancia es, por lo que decidí hacer mi propio virtual! Compruebe hacia fuera (y mis habilidades de dibujo horrible) a continuación.Este Telesketch
LED Etch-a-Sketch (instructivo completo)

LED Etch-a-Sketch (instructivo completo)

mi LED Etch-a-Sketch es mi primer proyecto de electrónica completamente terminada. Cuando llegué primero en electrónica con que yo estaba buscando un proyecto para comenzar y durante la navegación en Sparkfun.com me encontré con matrices de LED y sup
NES controladas Etch-A-Sketch

NES controladas Etch-A-Sketch

Dibujo de un etch a sketch utilizando un controlador original de Nintendo. Conecté las perillas de etch a sketch a motores paso a paso, que luego son controlados por un microcontrolador Arduino. El programa de Arduino que escribí lleva las señales de
VHDL Etch-a-Sketch

VHDL Etch-a-Sketch

Para nuestro proyecto Final de CPE 133 en Cal Poly, San Luis Obispo, construyó un Etch-a-Sketch utilizando VHDL en la Junta de SDMONexys 3 de Diligant. Una Junta de SDMONexys 3 que puede construir circuitos lógicos sin preocuparse de complejas interf
Solar Powered reloj de Arduino!

Solar Powered reloj de Arduino!

Recientemente me he interesado en la energía solar y sus aplicaciones. Con los avances en la tecnología de panel solar, paneles solares se han convertido en mucho más eficientes y baratos al mismo tiempo. Sin embargo, son todavía un poco caros, por l
Etch a Sketch alimentación

Etch a Sketch alimentación

Como alguien que le gusta desarmar cosas electrónicas, que con frecuencia tirar cosas como LED, motores, perillas y cambia de trastos viejos con planes para reutilizarlas más tarde. Este instructable es no sólo un ejemplo de esa reutilización, pero t