Reloj despertador con Tetris para demostrar que estás despierto (2 / 16 paso)

Paso 2: Código - general

El código se adjunta a este paso.  El archivo zip es sólo los otros tres archivos zip.  El "v1" en el archivo zip sólo indica versión 1 y es una manera fácil de comprobar si hay una actualización de software.

Todo el código, con la excepción de menor de la rutina de availableMemory() pequeño, fue escrito totalmente desde cero por mi.

Originalmente pensé que la pieza de Tetris del código sería más complicada que la parte de hora. Yo podría no haber estado más equivocado. Tetris para Arduino fue un paseo de pastel en comparación con un reloj de alarma con todas las características de la escritura que quería. Descripciones de algunos de los temas de programación son en los próximos pasos.

Muchos parámetros son ajustables en el código. Son todo en la parte superior del archivo principal e incluyen:
-Todas las asignaciones de pin cable
-Por defecto de tiempo y ambas alarmas
-Constantes la frecuencia del zumbador de definir (por defecto 4 kHz)
-Tiempo de que la alarma se silencia cada vez que un botón es presionado (por defecto 30 s)
-Brillo de retroiluminación default 0-128 (por defecto 128)

Muchos parámetros son ajustables por el reloj de la misma:
-Si se utilizan piezas más gruesas o más pequeños
-Si 2 personajes personalizados se utilizan para las piezas y 6 para los escombros abajo o 4 y 4 se utilizan.
-Longitud de la repetición de minutos (por defecto 7 min)
-Longitud de la pausa en segundos (por defecto 30 seg para un total de 7 min 30 seg)
-Número de veces snooze se puede golpear antes de que usted debe despertar (por defecto 2)
-Golpear la repetición sea absoluta o relativa, si el tiempo de snooze es añadido a la hora de la alarma original o el tiempo el botón se golpea
-Cuántas líneas de Tetris deben ser limpiadas para declararse despierto (por defecto 4)
-Restaurar el reloj a su configuración predeterminada
-Activar extras como am/pm, día de la semana y que alarma se encuentra encendido y apagado
-Versión de software actual pantalla
-Guardar y restaurar la EEPROM

Muchos parámetros se guardan en la EEPROM para sobrevivir si poder nunca pierde completamente. Esto se guarda cada día a medianoche si cualquiera de los parámetros han cambiado. Incluyen:
-Hora (incluyendo el día de la semana) y dos alarmas
-Valor contraluz
Tetris - modo de funcionamiento (consulte el paso 3 para la descripción)
-Repetición variables
-Los extras sean on u off
-Cuántas líneas lleva a claro en Tetris para declarar usted mismo despierto

Tiempo de mantenimiento se hacen fácil gracias a la buena gente de implementación excelente de Arduino de la función millis().  Esa función se ejecuta en una interrupción y se hace para que no se pierda una garrapata.  Todo lo que tengo que hacer es añadir periódicamente el tiempo transcurrido desde la última llamada de millis() la hora actual.  Fácil como la empanada.

Que tire una maniobra interesante para atender el problema de vuelco millis().  La función millis() utiliza una variable larga sin signo y el de 32 bits significa que puede ir hasta 4294967295.  Pero ya que están guardando un registro de milisegundos que rodará sobre cada 50 días o así.  Esto no suele ser un problema pero puesto que este proyecto funciona continuamente y se basa en la función millis() necesitamos dar cuenta de ese desbordamiento.  Lo que hago es vigilar la función millis() y cuando pasa la mitad, tome alguna acción.  Cuando sea conveniente en el código (nada crítico está pasando) reste la mitad del valor total de la función millis() de la función sí mismo y de mi propio tiempo mantener variables.  Así puede rodar justo pasado este a mitad de camino punto y cuando sea seguro disminuir la duración de la mitad de todo y rodar sobre.  Es un poco difícil de explicar, examinar el código podría ayudar, pero funciona como un encanto.

Artículos Relacionados

Procedimiento para demostrar que converge una secuencia definida

Procedimiento para demostrar que converge una secuencia definida

este Instructable irá, paso a paso, el método general para demostrar que una secuencia converge a un límite vía usar la definición de convergencia.Rápida definición de términos utilizados en este Instructable:1) candidato: En pocos pasos veremos a un
Dormir ciclo reloj despertador con Sensor de movimiento

Dormir ciclo reloj despertador con Sensor de movimiento

motivación:Quería de alguna manera mejorar el estándar reloj de alarma, así que hice uno que le despierta suavemente por solo despertar te cuando no estás en tu sueño profundo. Una ventaja añadida es que toca el tema de Super Mario como su alarma.Cóm
Reloj despertador con infrarrojo y Bluetooth altavoces

Reloj despertador con infrarrojo y Bluetooth altavoces

INTRODUCCIÓNHola, mi nombre es Ben Hur Gonçalves, soy Ingeniero Mecatrónico graduado en Universidade de São Paulo, Brasil en 2010. Hoy en día trabajo con bienes raíces, pero hacer estos proyectos con arduino en fines de semana, sólo por diversión. Es
Reloj despertador con Evive

Reloj despertador con Evive

Queremos hacer un reloj de alarma analógico y digital combinado. Reloj de tiempo real es esencial para el reloj mantener el tiempo, incluso si está apagada. Pero comúnmente disponibles tableros de microcontrolador como Arduino o frambuesa Pi no tiene
Cómo para demostrar que la ebullición de un líquido depende de la presión

Cómo para demostrar que la ebullición de un líquido depende de la presión

Agua hirviendo en temperatura experimento - los mejores videos clips están aquí A una ligera capa de grasa para vacío se aplica en el borde de la belljar. Agua a temperatura ambiente se coloca dentro y la bomba de vacío se utiliza para evacuar el bar
Cómo hacer fusión de Autodesk 360 con Othermill para cortar formas 3D

Cómo hacer fusión de Autodesk 360 con Othermill para cortar formas 3D

Recientemente, con algunos desarrollos recientes en la Universidad que asisto, he ha dado acceso a una gran cantidad de herramientas increíbles. Uno de ellos es el Othermill, una máquina CNC de 3 ejes de miniatura. Parte de mi posición actual como el
Reloj despertador de agua Splash - Wake hasta el agua que cae sobre ti

Reloj despertador de agua Splash - Wake hasta el agua que cae sobre ti

La forma más rápida para tener una taza de agua fría vertida sobre la cabeza. Gracias a este nuevo reloj de alarma, usted puede despertar con este refrescante comienzo cada día! Es perfecto para aquellos que tienen problemas para levantarse de la cam
Montaje "sabio reloj 2" (basada en Arduino despertador con muchas características extras)

Montaje "sabio reloj 2" (basada en Arduino despertador con muchas características extras)

este tutorial muestra cómo montar el kit para el sabio reloj 2, un proyecto open source (software y hardware).Un completo Reloj sabia 2 el kit se puede comprar aquí.En Resumen, esto es lo que puede hacer sabios reloj 2 (con la versión actual del soft
Android aplicaciones para usar con un iPhone: una guía completa para instalar 3 aplicaciones en Android usar reloj junto con un iPhone

Android aplicaciones para usar con un iPhone: una guía completa para instalar 3 aplicaciones en Android usar reloj junto con un iPhone

¿Poseer un reloj Android usar con un iPhone?Aprenda cómo puede ampliar sus capacidades mediante la instalación de 3 aplicaciones de partido abajo!Relojes inteligentes son grandes. Tienen un montón de otras características útiles que no puede ofrecer
(8) que era fácil micro interruptor o CW fallo para permitir que las personas con discapacidad

(8) que era fácil micro interruptor o CW fallo para permitir que las personas con discapacidad

conocí a un operador de Radio aficionado que es Quadriplegic.Él no puede usar sus manos para exprimir el pepinillo (mic).Lo mejor que puedes hacer es pivotar su brazo para dejar caer su mano sobre la mesa.Por lo tanto, hice un interruptor Mic, que pu
Hacer una tira con un enchufe (C14) para un UPS estándar (y ahorrar cientos de dólares)

Hacer una tira con un enchufe (C14) para un UPS estándar (y ahorrar cientos de dólares)

antes de siquiera comenzar con este ' ilbe, tengo que decir que la electricidad es un elemento peligroso. Puede quemar tu casa, o incluso suicidarse. Si usted no está 100% seguro de lo que están haciendo, no trate de esta.Incluso más allá de eso, est
Cosas que hacer cuando estás aburrido en un día lluvioso y pegado en su casa con prácticamente nada que ver

Cosas que hacer cuando estás aburrido en un día lluvioso y pegado en su casa con prácticamente nada que ver

olvidar el viejo dicho: "¡ está lloviendo gatos y perros". ¿Es más como lloviendo mesas y sillas? ¿No puede salir con tus amigos? ¿No puede ir al cine? Así que te pegan en casa en su asiento navegando por la web. Aburrido! Bueno, aquí están algu
Chronobot: Un reloj despertador inteligente

Chronobot: Un reloj despertador inteligente

Chronobot es un despertador inteligente que puede sentir su propia orientación. Es un reloj analógico con una caja de aspecto impresionante. El reloj es bastante fácil de construir y configurar. Se hace usando un mini ardunio y una pantalla TFT. Chro
Rompecabezas reloj despertador

Rompecabezas reloj despertador

En este instructable voy a mostrar cómo construir un reloj de alarma que le permite ajustar el tiempo arreglando los dígitos.Casi nunca consigo en una discusión con mi novio, pero cuando lo hacemos es casi siempre acerca de la configuración de la hor