O pomoduino: faça uma pomodoro temporizador arduino-motorizado

o técnica de pomodoro é um sistema de gerenciamento de tempo popular que envolve quebrar o trabalho em 25 minutos pedaços com um descanso de 5 minutos. Vários software existe para ajudar com isso, mas o que se você quiser usar o sistema pomodoro enquanto você está trabalhando longe de seu computador, ou enquanto você está sua bancada? Fazendo um temporizador pomodoro movidos a Arduino é um grande projeto introdutória para ajudar você a aprender a lidar com um Arduino, e vai realmente resultar em algo útil.

O objetivo

No caso de você gostaria de tentar descobrir como configurá-lo antes de olhar em frente, aqui é o que estamos tentando fazer. Nós vamos ter três um luzes- para "trabalho", um para "pausa", e uma luz de advertência. A luz de trabalho vai permanecer por 25 minutos, e a luz de aviso também será em para os últimos dois minutos de esse intervalo. Após 25 minutos, as luzes de trabalho e de advertência será desligada, ea luz quebra ligará por 5 minutos (a luz de advertência será novamente em para os últimos dois minutos).

Também será incluída em um botão que vai atrasar a mudança das luzes por dois minutos para dar-lhe um pouco de tempo de trabalho extra ou quebrar tempo.

O que você precisa

Para este projeto, estaremos usando as peças acompanhamento - tudo o que você deve ter em seu kit inicial.

  • microcontrolador Arduino (foi utilizado um mega, mas Uno iria funcionar muito bem também)
  • placa de ensaio
  • cabo USB
  • 6 fios
  • 3 x 330 resistências de Ohm
  • 3 x LED (temos usado verde, amarelo e azul)
  • 1 botão

Passo 1: ambiente tudo

Coloque cada um dos LEDs em uma coluna diferente na placa de ensaio (é mais fácil se eles estão espaçados um pouco), e coloque o botão um pouco mais abaixo. Certifique-se de que o botão está de frente para o sentido direito-existem dois conjuntos de dois pinos de um único lado do botão, e os pinos precisam estar na mesma linha.

pomoduino-setup1

fios executado a partir de pinos 5, 7 e 13 à coluna que contém a perna negativa dos LEDs azuis, amarelas e verdes (a perna negativo é o mais curto dos dois). Em seguida, coloque um resistor na mesma coluna que cada perna positiva, e conectá-los à grade negativa no lado da placa de ensaio (o azul, embora a cor não importa realmente, é apenas uma convenção de usar azul para maior clareza) .

pomoduino-Setup2

Também executar um fio a partir do trilho azul na placa de ensaio com uma das pernas sobre o botão, e um outro fio a partir da outra perna (do mesmo lado) para o pino 2 do Arduino. Em seguida, ligue a rail azul no pino GND no Arduino.

pomoduino-setup3

Aqui está um diagrama que deve esclarecer toda a confusão:

pomoduino

Isso é que é! Agora sobre a programação.

Programando seu Arduino

Abaixo está o código para o temporizador Pomoduino - ter uma leitura através dos comentários in-line, como eles explicam o que cada passo do código está fazendo.

int verde amarelo = 13-int = 7-int azul = 5-int ledStateGreen = LOW-int ledStateBlue = previousMillis baixo longa = intervalo de-int 0 longo buttonPin = 2-int buttonState = 1-bool pressionado = 0 longo pressTime = fase 0-int = 0-vazio setup () {pinMode (verde, OUTPUT) -pinMode (amarelo, OUTPUT) -pinMode (azul, OUTPUT) -pinMode (buttonPin, INPUT_PULLUP) -digitalWrite (buttonPin, HIGH) -} vazio loop () {// update hora atual e estado de buttonunsigned longo currentMillis = millis () - int buttonState = digitalRead (buttonPin) - // tempo de medida, pois um avanço último botão presslong = currentMillis - previousMillis - // verificar para ver se o botão tem foi pressionado // mais de 2 segundos desde a última imprensa // (para evitar que várias impressoras a inscrição) if ((pressTime - currentMillis)> 2000) {if (buttonState == 0) {pressionado = 1-pressTime = currentMillis-} else {pressionado = 0 -}} // fase 0 é a fase "trabalho" // se o botão foi pressionado, adicione 2 minutos para trabalhar timerif (fase == 0) {if (== pressionado 1) {intervalo = 1620000 -} // Se o intervalo é longo, gravar // tempo atual para medir a próxima intervalif (currentMillis - previousMillis> intervalo) {previousMillis = currentMillis - // configura verde e azul statesif LED (ledStateGreen == LOW) {ledStateGreen = HIGH-ledStateBlue = BAIXA} else {ledStateGreen = LOW -} // aplicar estados do LED para LEDs // redefinir intervalo e mudar para "break" phasedigitalWrite (verde, ledStateGreen) -digitalWrite (azul, ledStateBlue) -interval = 1500000-buttonState = 1-phase = 1- }} else {// se o botão foi pressionado, adicione 2 minutos para quebrar timerif (== pressionado 1) {intervalo = 420000 -} // se o intervalo é longo, ficha // tempo atual para medir a próxima intervalif (currentMillis - previousMillis > intervalo) {previousMillis = currentMillis - // Jogo azul e verde statesif (ledStateBlue == ALTA LED) {- ledStateBlue = BAIXA} else {ledStateBlue = HIGH-ledStateGreen = LOW -} // aplicar estados do LED para LEDs // redefinir intervalo e definido como "trabalho" phasedigitalWrite (verde, ledStateGreen) -digitalWrite (azul, ledStateBlue) -interval = 300000-buttonState = 1 fase = 0 -}} // calcular o tempo deixado em timeleft longo intervalunsigned = (intervalo - o progresso) - // Se houver menos de dois minutos, acendem-se LEDif amarelo (timeleft < 120000) {digitalWrite(yellow, HIGH)- }else {digitalWrite(yellow, LOW)- }// reset pressed variablepressed = 0-}

Nota: quando você está testando isso, você provavelmente não quer esperar por 25 minutos para ver se funciona. No vídeo abaixo, eu tenho os intervalos previstos para 5 segundos para o verde, 2 segundos para azul, e 1 segundo para amarelo. Use um intervalo mais curto para se certificar de que tudo está funcionando corretamente antes de usá-lo para manter o controle de tempo!

Depois de ter tudo com fio e o código entrou em IDE, você está pronto para ir! Faça o upload do esboço e você terá um temporizador pomodoro trabalhar com um botão de atraso de 2 minutos. Se a luz de advertência passa e você precisa de mais tempo, é só apertar o botão.

Você pode notar que o botão é ligado diretamente ao pino de entrada Arduino. Ao usar um dos resistores pullup incorporadas ao Arduino, você não precisa executar um fio a partir do porto de 5V para o botão ou usar um resistor de acordo com ele. Você pode obter mais informações sobre o referência Arduino para pinos digitais.

Mais Desafios avançadas

Se você fez sua Pomoduino e você está olhando para tomar em algo um pouco mais avançado, você pode experimentar qualquer um dos seguintes:

  • Adicionar uma seqüência de LEDs que acendem e servir como um contador do número de sessões de trabalho concluídas
  • Faça o botão adicionar dois minutos para o temporizador para cada vez que você empurrá-lo
  • Adicionar um alto-falante e reproduzir um ruído quando é hora de voltar ao trabalho
  • Use uma bateria de 9V para torná-lo portátil
  • Em vez de usar uma luz de aviso, pisca a luz verde ou azul para a poucos minutos antes de mudar
  • Exibir uma contagem regressiva em um display LED

Outros Grandes Projetos Iniciante

Se você é novo no Arduino, temos muita diversão tutoriais para que você possa assumir. tente uma controlador de semáforo, uma cube futurista LED, uma alarme do nascer do sol, ou um sistema de alarme. Se você decidir tomar em um dos desafios mais avançados listados acima, deixe-nos saber como vai!

» » O pomoduino: faça uma pomodoro temporizador arduino-motorizado