De Pomoduino Maak een Arduino-aangedreven Pomodoro-timer

De Pomoduino Maak een Arduino-aangedreven Pomodoro-timer / DIY

De pomodoro-techniek Doorgesneden uitstelgedrag met deze Pomodoro-techniek Apps & software doorgesneden Uitstelgedrag met deze Pomodoro-techniek Apps & software Uitstelgedrag is een kwaal die studenten en werknemers in alle hoeken van de wereld doordringt en zowel amateurs als professionals infecteert. Als schrijver lijd ik dagelijks aan uitstelgedrag. Sommige mensen ... Read More is een populair tijdsbeheersysteem dat het breken van werk in 25 minuten brokken met een rust van 5 minuten inhoudt. Er is verschillende software om dit te helpen, maar wat als je het pomodoro-systeem wilt gebruiken terwijl je weg werkt van je computer, of terwijl je op je werkbank zit? Een Arduino-aangedreven pomodoro-timer maken is een geweldig inleidend project 15 Great Arduino Projects for Beginners 15 Great Arduino Projects for Beginners Interesse in Arduino, maar niet zeker waar te beginnen? Hier zijn enkele van onze beste Arduino-projecten voor beginners om mee te beginnen! Lees meer om u te helpen uw weg in een Arduino te leren kennen en zal daadwerkelijk resulteren in iets nuttigs.

Het doel

Als u wilt proberen te achterhalen hoe u dit kunt instellen voordat u verder kijkt, dan is dit wat we proberen te doen. We hebben drie lichten; een voor “werk,” een voor “breken,” en een waarschuwingslampje. Het werklampje blijft 25 minuten branden en het waarschuwingslampje brandt ook gedurende de laatste twee minuten van dat interval. Na 25 minuten gaan de werk- en waarschuwingslampjes uit en gaat het pauze-lampje gedurende 5 minuten branden (het waarschuwingslampje blijft de laatste twee minuten branden).

Ook inbegrepen is een knop die het vervangen van de lichten twee minuten vertraagt ​​om u een beetje extra werktijd of pauzetijd te geven.

Wat je nodig hebt

Voor dit project gebruiken we de volgende onderdelen - die u allemaal in uw startpakket zou moeten hebben.

  • Arduino microcontroller (we gebruikten een Mega, maar Uno zou ook prima werken)
  • broodplank
  • USB-kabel
  • 6 draden
  • 3 x 330 Ohm weerstanden
  • 3 x LED (we hebben groen, geel en blauw gebruikt)
  • 1 drukknop

Stap 1: alles instellen

Plaats elk van de LED's in een andere kolom op het breadboard (het is het gemakkelijkst als ze een beetje uit elkaar liggen) en plaats de knop iets verder naar beneden. Zorg ervoor dat de knop in de juiste richting wijst - er zijn twee sets van twee pinnen aan één kant van de knop en die pinnen moeten zich in dezelfde rij bevinden.

Leid de draden van pinnen 5, 7 en 13 naar de kolom met de negatieve poot van de blauwe, gele en groene LED's (de negatieve poot is de kortste van de twee). Plaats vervolgens een weerstand in dezelfde kolom als elke positieve poot en verbind ze met de negatieve rail aan de zijkant van de breadboard (de blauwe, hoewel de kleur er niet echt toe doet, het is gewoon een conventie om blauw te gebruiken voor duidelijkheid).

Leid ook een draad van de blauwe rail op het breadboard naar een van de benen op de knop en een andere draad van het andere been (aan dezelfde kant) naar pin 2 op de Arduino. Aard de blauwe rail vervolgens in de GND-pin op de Arduino.

Hier is een diagram dat elke verwarring moet oplossen:

Dat is het! Nu verder met programmeren.

Programmering van uw Arduino

Hieronder staat de code voor de Pomoduino-timer - lees de inline-opmerkingen door, want deze leggen uit wat elke stap van de code doet.

 int groen = 13; int geel = 7; int blauw = 5; int ledStateGreen = LOW; int ledStateBlue = LOW; lang vorigeMillis = 0; lang interval; int buttonPin = 2; int buttonState = 1; bool ingedrukt = 0; lange drukTijd = 0; int fase = 0; void setup () pinMode (groen, OUTPUT); pinMode (geel, UITGANG); pinMode (blauw, OUTPUT); pinMode (buttonPin, INPUT_PULLUP); digitalWrite (buttonPin, HIGH);  void loop () // update huidige tijd en status van knop unsigned long currentMillis = millis (); int buttonState = digitalRead (buttonPin); // meet de tijd sinds de laatste druk op de knop lange voortgang = currentMillis - previousMillis; // controleer om te zien of de knop is ingedrukt // meer dan 2 seconden sinds de laatste druk op // (om te voorkomen dat meerdere keren wordt ingedrukt) als ((press time - currentMillis)> 2000) if (buttonState == 0) pressed = 1; pressTime = currentMillis; else pressed = 0; // fase 0 is "werk" fase // als knop is ingedrukt, voeg 2 minuten toe aan werk timer als (fase == 0) if (ingedrukt == 1 ) interval = 1620000; // als interval voorbij is, registreer huidige // tijd voor het meten van het volgende interval if (currentMillis - previousMillis> interval) previousMillis = currentMillis; // stel groene en blauwe LED in als (ledStateGreen == LOW) ledStateGreen = HIGH; ledStateBlue = LOW; else ledStateGreen = LOW; // pas LED-statussen toe op LED's // reset interval en schakel over naar "break" -fase digitalWrite (groen, ledStateGreen); digitalWrite (blauw, ledStateBlue); interval = 1500000; buttonState = 1; fase = 1;  else // als knop is ingedrukt, voeg 2 minuten toe om de timer te verbreken als (ingedrukt == 1) interval = 420000; // als interval voorbij is, registreer huidige // tijd voor het meten van het volgende interval if (currentMillis - previousMillis> interval) previousMillis = currentMillis; // stel de blauwe en groene LED in als (ledStateBlue == HIGH) ; ledStateBlue = LAAG;  else ledStateBlue = HIGH; ledStateGreen = LOW; // LED-toestanden toepassen op LED's // reset-interval en instellen op "werk" -fase digitalWrite (groen, ledStateGreen); digitalWrite (blauw, ledStateBlue); interval = 300000; buttonState = 1; fase = 0;  // bereken resterende tijd in interval unsigned long timeLeft = (interval - voortgang); // als er minder dan twee minuten resteren, licht gele LED op als (timeLeft < 120000)  digitalWrite(yellow, HIGH);  else  digitalWrite(yellow, LOW);  // reset pressed variable pressed = 0; 

Opmerking: wanneer u dit test, wilt u waarschijnlijk niet 25 minuten wachten om te kijken of het werkt. In de onderstaande video heb ik de intervallen ingesteld op 5 seconden voor groen, 2 seconden voor blauw en 1 seconde voor geel. Gebruik een korter interval om te controleren of alles correct werkt voordat u het gebruikt om de tijd bij te houden!

Zodra u alles bedraad hebt en de code ingevoerd in de IDE, bent u klaar om te gaan! Upload de schets en je hebt een werkende pomodoro-timer met een vertragingsknop van 2 minuten. Als het waarschuwingslampje gaat branden en u meer tijd nodig heeft, drukt u gewoon op de knop.

U merkt misschien dat de knop rechtstreeks is aangesloten op de Arduino-ingangspen. Door een van de pullup-weerstanden te gebruiken die in de Arduino zijn ingebouwd, hoef je geen draad van de 5V-poort naar de knop te lopen of een weerstand te gebruiken die daarmee in overeenstemming is. U kunt meer informatie krijgen over de Arduino-referentie voor digitale pinnen.

Meer geavanceerde uitdagingen

Als je je Pomoduino hebt gemaakt en je iets geavanceerder wilt aanpakken, kun je een van de volgende dingen proberen:

  • Voeg een reeks LED's toe die oplichten en dienen als tegenhanger van het aantal voltooide werksessies
  • Laat de knop twee minuten toevoegen aan de timer voor elke keer dat u erop drukt
  • Voeg een luidspreker toe en speel een geluid wanneer het tijd is om weer aan het werk te gaan
  • Gebruik een 9V-batterij om het draagbaar te maken
  • In plaats van een waarschuwingslampje te gebruiken, moet u het groene of blauwe lampje een minuut lang knipperen voordat u overschakelt
  • Laat het aftellen zien op een LED-display

Andere geweldige beginnersprojecten

Als je Arduino nog niet kent, hebben we leuke tutorials voor je klaar staan. Probeer een verkeerslichtregelaar Arduino Programmeren voor beginners: De verkeerslichtregelaar Arduino Programmeren voor beginners: de verkeerslichtregelaar Vorige week leerden we over de basisstructuur van een Arduino-programma en onderzochten we het 'knipper'-voorbeeld. Hopelijk heb je van de gelegenheid gebruik gemaakt om met code te experimenteren en de timing aan te passen. Deze keer, ... Lees meer, een futuristische LED-kubus Hoe maak je een pulserende Arduino LED-kubus die eruit ziet alsof hij uit de toekomst is gekomen Hoe maak je een pulserende Arduino LED-kubus die eruit ziet alsof hij uit de toekomst is gekomen Als je met wat hebt geploeterd Beginnende Arduino-projecten, maar op zoek zijn naar iets een beetje permanent en op een heel ander niveau van geweldig, dan is de nederige 4 x 4 x 4 LED-kubus ... Lees meer, een zonsopgangalarm Arduino Nachtlampje en Sunrise Alarm Project Arduino Nachtlampje en Sunrise Alarm Project Vandaag maken we een wekker voor zonsopkomst, die je langzaam en langzaam wakker zal maken zonder gebruik te maken van een aanstootgevend lawaai makende machine. Meer lezen of een alarmsysteem Hoe maak je een eenvoudig Arduino-alarmsysteem Hoe maak je een eenvoudig Arduino-alarmsysteem Detecteer beweging en maak de indringer vervolgens bang met een hoge alarmgeluiden en knipperende lichten. Klinkt dat leuk? Natuurlijk doet het. Dat is het doel van het Arduino-project van vandaag, geschikt ... Lees meer. Als u besluit een van de meer geavanceerde uitdagingen aan te nemen die hierboven worden vermeld, laat ons dan weten hoe dit werkt!

Ontdek meer over: Arduino, timemanagement, timer-software.