O pomoduino: fazer um temporizador pomodoro-powered arduino

o técnica de pomodoro

é um sistema de gerenciamento do tempo 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-powered Arduino é um grande projeto introdutório para ajudá-lo a aprender a lidar com um Arduino, e vai realmente resultar em algo útil.Cortar completamente procrastinação com estes aplicativos Técnica Pomodoro & ProgramasCortar completamente procrastinação com estes aplicativos Técnica Pomodoro & ProgramasA procrastinação é uma doença que permeia estudantes e trabalhadores em todos os cantos do mundo e ele infecta amadores e profissionais. Como escritor, eu sofro de procrastinação em uma base diária. Algumas pessoas...consulte Mais informação

Video: Temporizador com Arduino

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- de “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 pausa irá ligar por 5 minutos (a luz de aviso será novamente em para os últimos dois minutos).

Também será incluída um botão que irá 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, nós 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 Ohm resistências
  • 3 x LED (usamos verde, amarelo e azul)
  • um 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á enfrentando o direito direção-existem dois conjuntos de dois pinos em um único lado do botão, e os pinos precisam estar na mesma linha.

pomoduino-setup1

fios correm de pinos 5, 7, e 13 da coluna que contém a perna negativo dos LEDs azul, amarelo, verde e 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

Video: Temporizador con Arduino (Vídeo 216)

Também executar um fio a partir do trilho sobre o azul 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, aterrar o trilho 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 incorporados, como eles explicam o que cada passo do código está fazendo.

int verde = 13-int amarelo = 7-azul int = 5-int ledStateGreen = BAIXO-int ledStateBlue = BAIXO-previousMillis longos = 0-longo intervalo-int buttonPin = 2-int buttonState = 1-bool pressionado = 0-longa pressTime = 0-fase int = 0-vazio configuração() {pinMode(verde, SAÍDA)-pinMode(amarelo, SAÍDA)-pinMode(azul, SAÍDA)-pinMode(buttonPin, INPUT_PULLUP)-digitalWrite(buttonPin, ALTO)-}vazio laço() {// hora atual atualização e estado de botãocurrentMillis longos sem sinal = millis()-int buttonState = digitalRead(buttonPin)-// tempo de medida, uma vez imprensa último botãoprogresso a longo = currentMillis - previousMillis-// verificar para ver se o botão foi pressionado// mais de 2 segundos desde última imprensa// (para evitar que várias prensas registrando)E se ((pressTime - currentMillis) gt; 2000){E se(buttonState == 0){prensado = 1-pressTime = currentMillis-}outro{prensado = 0-}}// fase 0 é "trabalhos" Estágio// se o botão foi pressionado, adicione 2 minutos para trabalhar temporizadorE se (Estágio == 0){E se (prensado == 1){intervalo = 1620000-}// se o intervalo é longo, atual recorde// tempo para medir próximo intervalo E se(currentMillis - previousMillis gt; intervalo) {previousMillis = currentMillis-// Definir estados do LED verde e azulE se (ledStateGreen == BAIXO){ledStateGreen = ALTO-ledStateBlue = BAIXO-}outro {ledStateGreen = BAIXO-}// aplicar estados do LED para LEDs// redefinir intervalo e mudar para "pausa" EstágiodigitalWrite(verde, ledStateGreen)-digitalWrite(azul, ledStateBlue)-intervalo = 1500000-buttonState = 1-Estágio = 1-}}outro {// se o botão foi pressionado, adicione 2 minutos para quebrar temporizadorE se (prensado == 1){intervalo = 420000-}// se o intervalo é longo, atual recorde// tempo para medir próximo intervalo E se(currentMillis - previousMillis gt; intervalo) {previousMillis = currentMillis-// Definir estados do LED azul e verdeE se (ledStateBlue == ALTO){-ledStateBlue = BAIXO- }outro {ledStateBlue = ALTO-ledStateGreen = BAIXO-}// aplicar estados do LED para LEDs// redefinir intervalo e definir a "trabalhos" EstágiodigitalWrite(verde, ledStateGreen)-digitalWrite(azul, ledStateBlue)-intervalo = 300000-buttonState = 1-Estágio = 0-}}// calcular o tempo deixado no intervalotimeleft longo sem sinal = (intervalo - progresso)-// se houver menos de dois minutos, acender LED amareloE se (tempo restante lt; 120000) {digitalWrite(amarelo, ALTO)- }outro {digitalWrite(amarelo, BAIXO)- }// variável de reset pressionadoprensado = 0-}

Nota: quando você está testando isso, você provavelmente não quer esperar por 25 minutos para ver se funciona. No vídeo abaixo, que têm os intervalos definidos para 5 segundos para verde, 2 segundos para azul, e um 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 para cima e o código inserido no IDE, você está pronto para ir! Carregar o esboço e você terá um temporizador pomodoro trabalhar com um botão de atraso de 2 minutos. Se a luz de aviso 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 resistor pull-up construídos no Arduino, você não precisa executar um fio a partir do porto de 5V para o botão ou usar um resistor em linha com ele. Você pode obter mais informações sobre a 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 advertência, piscar a luz verde ou azul para um minutos antes de mudar
  • Exibir uma contagem regressiva em um display LED

Outros Grandes Projetos Iniciante

Se você é novo no Arduino, temos abundância de tutoriais divertidos para você assumir. tente uma controlador de semáforo, uma cubo futurista LED, uma alarme 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 ele vai!Programação Arduino para iniciantes: The Traffic Light ControllerProgramação Arduino para iniciantes: The Traffic Light ControllerNa semana passada, nós aprendemos sobre a estrutura básica de um programa Arduino e tomou um olhar mais atento ao exemplo `piscar`. Esperamos que você teve a oportunidade de experimentar com código, ajustando os horários. Desta vez,...consulte Mais informação


Artigos relacionados