De Pomoduino: maak een Arduino-aangedreven Pomodoro-timer

Advertentie

Advertentie
Advertentie

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 10 Great Arduino Projects for Beginners 10 Great Arduino Projects for Beginners Het voltooien van een Arduino-project geeft je een gevoel van voldoening als geen ander. De meeste beginners weten echter niet waar ze moeten beginnen, en zelfs projecten voor beginners kunnen behoorlijk intimiderend lijken. 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 'pauze' 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 is de laatste twee minuten weer aan).

Ook inbegrepen is een knop die de vervanging 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.

pomoduino-SETUP1

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) .

pomoduino-Setup2

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.

pomoduino-setup3

Hier is een diagram dat elke verwarring moet oplossen:

pomoduino

Dat is het! Nu verder met programmeren.

Programmering van uw Arduino

Hieronder vindt u de code voor de Pomoduino-timer - lees de inline-opmerkingen door, aangezien deze uitleggen wat elke stap van de code doet.

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; } 

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 ervoor te zorgen dat 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 in lijn daarmee te gebruiken. 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 met enkele Arduino Arduino-projecten, maar op zoek zijn naar iets een beetje permanent en op een heel ander niveau van geweldig, dan is de eenvoudige 4 x 4 x 4 LED-kubus ... Lees meer, een zonsopgangalarm Arduino Nachtlampje en Sunrise Alarmproject Arduino Night Light 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 het gaat!

In this article