O Pomoduino: Faça um temporizador Pomodoro alimentado por Arduino

Propaganda

Propaganda
Propaganda

A procriação é uma doença que permeia estudantes e trabalhadores em todos os cantos do mundo e infecta amadores e profissionais da mesma forma. Como escritor, sofro de procrastinação diariamente. Algumas pessoas ... Leia Mais é um sistema de gerenciamento de tempo popular que envolve quebrar o trabalho em pedaços de 25 minutos com um descanso de 5 minutos. Vários softwares existem para ajudar nisso, mas e se você quiser usar o sistema pomodoro enquanto estiver trabalhando longe do seu computador ou enquanto estiver na sua bancada de trabalho? Fazer um cronômetro pomodoro acionado por Arduino é um excelente projeto introdutório 10 Grandes projetos Arduino para iniciantes 10 Grandes projetos Arduino para iniciantes A conclusão de um projeto Arduino oferece a você um sentimento de satisfação como nenhum outro. A maioria dos iniciantes não sabe ao certo por onde começar, e até mesmo os projetos para iniciantes podem parecer assustadores. Leia mais para ajudá-lo a aprender o seu caminho em torno de um Arduino, e vai realmente resultar em algo útil.

O objetivo

No caso de você querer tentar descobrir como configurar isso antes de olhar para frente, veja o que estamos tentando fazer. Nós vamos ter três luzes; uma para “trabalho”, uma para “pausa” e uma luz de aviso. A luz de trabalho permanecerá acesa por 25 minutos e a luz de advertência também ficará acesa durante os últimos dois minutos desse intervalo. Após 25 minutos, as luzes de trabalho e de advertência se apagam e a luz de freio acenderá por 5 minutos (a luz de advertência estará novamente acesa durante os dois últimos minutos).

Também incluído será um botão que irá atrasar a mudança das luzes por dois minutos para lhe dar um pouco de tempo extra de trabalho ou tempo de pausa.

O que você precisa

Para este projeto, usaremos as seguintes partes - todas você deve ter em seu kit inicial.

  • Microcontrolador Arduino (usamos um Mega, mas Uno funcionaria muito bem também)
  • Tábua de pão
  • cabo USB
  • 6 fios
  • Resistores de 3 x 330 Ohm
  • 3 x LED (usamos verde, amarelo e azul)
  • 1 botão

Etapa 1: configurando tudo

Coloque cada um dos LEDs em uma coluna diferente na breadboard (é mais fácil se eles estiverem um pouco espaçados) e coloque o botão um pouco mais abaixo. Certifique-se de que o botão esteja voltado para a direção correta - há dois conjuntos de dois pinos em um único lado do botão e esses pinos precisam estar na mesma linha.

pomoduino-setup1

Passe os fios dos pinos 5, 7 e 13 até a coluna que contém a perna negativa dos LEDs azul, amarelo e verde (a perna negativa é a menor das duas). Em seguida, coloque um resistor na mesma coluna de cada perna positiva e conecte-os ao trilho negativo na lateral da placa de montagem (a azul, embora a cor não seja realmente importante, é apenas uma convenção usar azul para maior clareza) .

pomoduino-setup2

Também passe um fio do trilho azul na placa de montagem até uma das pernas no botão e outro fio da outra perna (do mesmo lado) para o pino 2 no Arduino. Em seguida, aterre o trilho azul no pino GND no Arduino.

pomoduino-setup3

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

Pomoduino

É isso! Agora vamos para a programação.

Programando seu Arduino

Abaixo está o código para o temporizador Pomoduino - leia os comentários em linha, pois eles explicam o que cada etapa do código está fazendo.

int green = 13; int yellow = 7; int blue = 5; int ledStateGreen = LOW; int ledStateBlue = LOW; long previousMillis = 0; long interval; int buttonPin = 2; int buttonState = 1; bool pressed = 0; long pressTime = 0; int phase = 0; void setup() { pinMode(green, OUTPUT); pinMode(yellow, OUTPUT); pinMode(blue, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); digitalWrite(buttonPin, HIGH); } void loop() { // update current time and state of button unsigned long currentMillis = millis(); int buttonState = digitalRead(buttonPin); // measure time since last button press long progress = currentMillis - previousMillis; // check to see if button has been pressed // over 2 seconds since last press // (to prevent multiple presses registering) if ((pressTime - currentMillis)>2000){ if(buttonState == 0){ pressed = 1; pressTime = currentMillis;} else{ pressed = 0;} } // phase 0 is "work" phase // if button has been pressed, add 2 minutes to work timer if (phase == 0){ if (pressed == 1){ interval = 1620000;} // if interval is over, record current // time for measuring next interval if(currentMillis - previousMillis>interval) { previousMillis = currentMillis; // set green and blue LED states if (ledStateGreen == LOW){ ledStateGreen = HIGH; ledStateBlue = LOW;} else { ledStateGreen = LOW;} // apply LED states to LEDs // reset interval and switch to "break" phase digitalWrite(green, ledStateGreen); digitalWrite(blue, ledStateBlue); interval = 1500000; buttonState = 1; phase = 1; } } else { // if button has been pressed, add 2 minutes to break timer if (pressed == 1){ interval = 420000;} // if interval is over, record current // time for measuring next interval if(currentMillis - previousMillis>interval) { previousMillis = currentMillis; // set blue and green LED states if (ledStateBlue == HIGH){; ledStateBlue = LOW; } else { ledStateBlue = HIGH; ledStateGreen = LOW;} // apply LED states to LEDs // reset interval and set to "work" phase digitalWrite(green, ledStateGreen); digitalWrite(blue, ledStateBlue); interval = 300000; buttonState = 1; phase = 0; } } // calculate time left in interval unsigned long timeLeft = (interval - progress); // if there are less than two minutes left, light up yellow LED if (timeLeft< 120000) { digitalWrite(yellow, HIGH); } else { digitalWrite(yellow, LOW); } // reset pressed variable pressed = 0; } 

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

Quando você tiver tudo conectado e o código inserido no IDE, você estará pronto para começar! Faça o upload do esboço e você terá um temporizador pomodoro funcional com um botão de atraso de 2 minutos. Se a luz de advertência acender e você precisar de mais tempo, aperte o botão.

Você pode notar que o botão está conectado diretamente ao pino de entrada do Arduino. Usando um dos resistores de pullup embutidos no Arduino, você não precisa passar um fio da porta de 5V para o botão ou usar um resistor em linha com ele. Você pode obter mais informações sobre a referência do Arduino para pinos digitais.

Desafios mais avançados

Se você criou seu Pomoduino e está procurando algo um pouco mais avançado, você pode tentar qualquer um dos seguintes:

  • Adicione uma sequência de LEDs que acenda e sirva como um contador do número de sessões de trabalho concluídas
  • Faça o botão adicionar dois minutos ao temporizador para cada vez que você empurrá-lo
  • Adicione um alto-falante e toque um barulho quando for hora de voltar ao trabalho
  • Use uma bateria de 9V para torná-lo portátil
  • Em vez de usar uma luz de aviso, pisque a luz verde ou azul por alguns minutos antes de trocar
  • Exibir uma contagem regressiva em um display de LED

Outros grandes projetos para iniciantes

Se você é novo no Arduino, temos muitos tutoriais divertidos para você. Tente um controlador de semáforo Programação Arduino Para Iniciantes: O Controlador de Semáforo Programação Arduino Para Iniciantes: O Controlador de Semáforo Na semana passada, nós aprendemos sobre a estrutura básica de um programa Arduino e examinamos mais de perto o exemplo de 'piscar'. Espero que você aproveite a oportunidade para experimentar o código, ajustando os tempos. Desta vez, ... Leia Mais, um cubo de LED futurista Como fazer um Arduino pulsante LED Cubo que parece que veio do futuro Como fazer um Arduino pulsante LED Cubo que parece que veio do futuro Se você já se interessou com alguns projetos iniciantes do Arduino, mas estão procurando algo um pouco permanente e em um nível totalmente diferente, então o humilde cubo 4 x 4 x 4 LED é ... Leia Mais, um alarme do nascer do sol Arduino Night Light e Sunrise Alarm Project Arduino Night Light e Sunrise Alarm Project Hoje, vamos fazer um despertador do nascer do sol, que vai gentil e lentamente acordá-lo sem recorrer a uma máquina ofensiva de fazer barulho. Leia mais, ou um sistema de alarme Como fazer um sistema de alarme simples Arduino Como fazer um sistema de alarme simples Arduino Detectar movimento, em seguida, assustar o heck fora de um intruso com um alarme de alta frequência soa e luzes piscando. Isso parece divertido? Claro que sim. Esse é o objetivo do projeto Arduino de hoje, adequado ... Leia Mais. Se você decidir enfrentar um dos desafios mais avançados listados acima, deixe-nos saber como está indo!

In this article