El pomoduino: hacer un temporizador pomodoro arduino-accionado

los técnica Pomodoro es un sistema de gestión del tiempo popular que consiste en romper el trabajo en 25 trozos minutos con un descanso de 5 minutos. Existe variedad de software para ayudar con esto, pero lo que si desea utilizar el sistema de pomodoro mientras trabaja lejos de su computadora, o si usted está en su banco de trabajo? Hacer un temporizador pomodoro Arduino-alimentado es un gran proyecto de introducción para ayudarle a aprender su manera alrededor de un Arduino, y realmente va a resultar en algo útil.Corte a través de la dilación con estas aplicaciones Técnica Pomodoro & SoftwareCorte a través de la dilación con estas aplicaciones Técnica Pomodoro & SoftwareLa dilación es una enfermedad que invade a los estudiantes y los trabajadores en todos los rincones del mundo y que infecta a los aficionados y profesionales por igual. Como escritor, sufro de la dilación sobre una base diaria. Algunas personas...Lee mas

La meta

En caso de que desee para tratar de encontrar la manera de configurar esto antes de mirar hacia el futuro, esto es lo que estamos tratando de hacer. Tendremos tres uno luces- para el “trabajo”, uno de “descanso”, y una luz de advertencia. La luz de trabajo permanecerá encendida durante 25 minutos, y la luz de advertencia también estará en los dos últimos minutos de ese intervalo. Después de 25 minutos, el trabajo y las luces de advertencia se apagará y la luz de freno se enciende durante 5 minutos (el testigo será de nuevo en los últimos dos minutos).

Vídeo: Manejo de Timer Del Arduino

También se incluirá un botón que retrasará el cambio de las luces durante dos minutos para darle un poco de tiempo de trabajo extra o tiempo de descanso.

Que necesitas

Para este proyecto, vamos a utilizar las piezas complementarias - todos los cuales se debe tener en su kit de inicio.

  • microcontrolador Arduino (se utilizó un mega, pero Uno funcionaría bien también)
  • Tablero de circuitos
  • cable USB
  • 6 hilos
  • 3 x 330 ohmios
  • 3 x LED (que hemos utilizado verde, amarillo y azul)
  • 1 pulsador

Paso 1: configurar todo

Ponga cada uno de los LEDs en una columna diferente en el tablero (que es más fácil si están espaciadas un poco) y luego colocar el botón un poco más abajo. Asegúrese de que el botón se enfrenta a la dirección correcta, hay dos conjuntos de dos pines en un solo lado del botón, y los pines deben estar en la misma fila.

pomoduino-setup1

Pase los cables desde las clavijas 5, 7, y 13 a la columna que contiene la pierna negativo de los LED azul, amarillo, y verde (la pierna negativo es el más corto de los dos). A continuación, poner una resistencia en la misma columna que cada pata positiva, y conectarlos al carril negativo en el lado del tablero (el azul, aunque el color no importa, es sólo convención de usar azul para mayor claridad) .

pomoduino-Config.2

También ejecutar un cable desde el carril de azul en el tablero a una de las piernas en el botón, y otro cable de la otra pierna (en el mismo lado) a la clavija 2 en el Arduino. Después se muele el carril azul en el pin GND en el Arduino.

pomoduino-setup3

Vídeo: Temporizador mecánico

Aquí está un diagrama que debe aclarar cualquier confusión:

pomoduino

¡Eso es! Ahora, a la programación.

Su programación Arduino

A continuación se muestra el código para el temporizador Pomoduino - Tiene una lectura a través de los comentarios en línea, ya que explicar lo que cada paso del código está haciendo.

verde int = 13-int amarillo = 7-azul int = 5-int ledStateGreen = BAJO-int ledStateBlue = BAJO-previousMillis largos = 0-intervalo de tiempo-int buttonPin = 2-int ButtonState = 1-bool presionado = 0-larga Presstime = 0-fase int = 0-vacío preparar() {pinMode(verde, SALIDA)-pinMode(amarillo, SALIDA)-pinMode(azul, SALIDA)-pinMode(buttonPin, INPUT_PULLUP)-digitalWrite(buttonPin, ALTO)-}vacío lazo() {// actualización de la hora y el estado del botón actualcurrentMillis largos sin signo = Millis()-int ButtonState = digitalRead(buttonPin)-// tiempo desde la última medida pulse el botónprogreso a largo = currentMillis - previousMillis-// comprobar para ver si se ha pulsado el botón// más de 2 segundos desde la última prensa// (para evitar que se registren varias prensas)Si ((Presstime - currentMillis) gt; 2000){Si(ButtonState == 0){presionado = 1-Presstime = currentMillis-}más{presionado = 0-}}// fase 0 es "trabajo" fase// si el botón ha sido presionado, añadir 2 minutos para trabajar temporizadorSi (fase == 0){Si (presionado == 1){intervalo = 1620000-}// si el intervalo es más, actual récord// tiempo para medir siguiente intervalo Si(currentMillis - previousMillis gt; intervalo) {previousMillis = currentMillis-// establecidos estados verde y azul LEDSi (ledStateGreen == BAJO){ledStateGreen = ALTO-ledStateBlue = BAJO-}más {ledStateGreen = BAJO-}// aplicar estados de los LED a LED// restablecer intervalo y cambiar a "descanso" fasedigitalWrite(verde, ledStateGreen)-digitalWrite(azul, ledStateBlue)-intervalo = 1500000-ButtonState = 1-fase = 1-}}más {// si el botón ha sido presionado, añadir 2 minutos para romper temporizadorSi (presionado == 1){intervalo = 420000-}// si el intervalo es más, actual récord// tiempo para medir siguiente intervalo Si(currentMillis - previousMillis gt; intervalo) {previousMillis = currentMillis-// establecidos estados azules y verdes LEDSi (ledStateBlue == ALTO){-ledStateBlue = BAJO- }más {ledStateBlue = ALTO-ledStateGreen = BAJO-}// aplicar estados de los LED a LED// restablecer intervalo y se puso a "trabajo" fasedigitalWrite(verde, ledStateGreen)-digitalWrite(azul, ledStateBlue)-intervalo = 300000-ButtonState = 1-fase = 0-}}// calcular el tiempo que queda en el intervalotimeLeft largo sin signo = (intervalo - Progreso)-// si hay menos de dos minutos, iluminar LED amarilloSi (tiempo restante lt; 120000) {digitalWrite(amarillo, ALTO)- }más {digitalWrite(amarillo, BAJO)- }// variable de reinicio presionadopresionado = 0-}

Nota: cuando se está probando esto, es probable que no quiere esperar 25 minutos para ver si funciona. En el siguiente vídeo, tengo los intervalos establecidos para 5 segundos para el verde, 2 segundos para el azul, y 1 segundo para el amarillo. Utilizar un intervalo más corto para asegurarse de que todo funciona correctamente antes de utilizarlo para realizar un seguimiento de los tiempos!

Una vez que todo cableado y el código entró en el IDE, ya está listo para ir! Sube el boceto y que tendrá un temporizador pomodoro trabajar con un botón de retardo de 2 minutos. Si la luz de advertencia se enciende y se necesita más tiempo, simplemente pulse el botón.

Usted puede notar que el botón está conectado directamente a la clavija de entrada de Arduino. Mediante el uso de una de las pull-up integradas en el Arduino, que no es necesario tender un cable desde el puerto 5V al botón o usar una resistencia en línea con él. Puede obtener más información sobre la referencia de Arduino para los pines digitales.

Más retos avanzada

Si usted ha hecho su Pomoduino y que está buscando a tomar en algo un poco más avanzado, puede probar cualquiera de los siguientes:

  • Añadir una secuencia de LEDs que se iluminan y servir como un contador del número de sesiones de trabajo terminados
  • Hacer que el botón de añadir dos minutos para el temporizador para cada vez que lo empuja
  • Añadir un altavoz y reproducir un sonido cuando llega el momento de volver al trabajo
  • Utilice una batería de 9V para que sea portátil
  • En lugar de utilizar una luz de advertencia, parpadeará la luz verde o azul durante unos minutos antes de cambiar
  • Mostrar una cuenta atrás en una pantalla LED

Otros magníficos proyectos del principiante

Si eres nuevo en Arduino, tenemos un montón de divertidos tutoriales para que usted tome en. Pruebe con una controlador de semáforo, un cubo LED futurista, un alarma de la salida del sol, o un Sistema de alarmas. Si decide tomar uno de los retos más avanzados enumerados anteriormente, háganoslo saber cómo va!Programación de Arduino para principiantes: El controlador de semáforosProgramación de Arduino para principiantes: El controlador de semáforosLa semana pasada, aprendimos sobre la estructura básica de un programa de Arduino y echamos un vistazo más de cerca el ejemplo `abrir y cerrar`. Es de esperar que tomó la oportunidad de experimentar con el código, el ajuste de los tiempos. Esta vez,...Lee mas

Artículos Relacionados