Pomoduino: Gör en Arduino-driven Pomodoro Timer

Annons

Annons
Annons

Pomodoro-tekniken skärs genom förskjutning med dessa Pomodoro-teknik Apps och programvara skärs genom förskjutning med dessa Pomodoro-teknik Apps & Software Procrastination är en sjukdom som genomtränger studenter och arbetstagare i alla hörn av världen och det infekterar både amatörer och yrkesverksamma. Som författare lider jag dagligen av förskott. Vissa människor ... Läs mer är ett populärt tidsstyrningssystem som innebär att man bryter arbetet i 25 minuters bitar med 5 minuters vila. Olika program finns för att hjälpa till med detta, men vad händer om du vill använda pomodoro-systemet medan du arbetar bort från datorn eller när du är på din arbetsbänk? Att göra en Arduino-driven pomodoro-timer är ett utmärkt introduktionsprojekt. 10 Stora Arduino-projekt för nybörjare. 10 Stora Arduino-projekt för nybörjare. Att slutföra ett Arduino-projekt ger dig en känsla av tillfredsställelse som ingen annan. De flesta nybörjare är inte säkra på var man ska börja, och även nybörjareprojekt kan verka ganska skrämmande. Läs mer för att hjälpa dig att lära dig dig runt en Arduino, och kommer faktiskt att resultera i något användbart.

Målet

Om du vill försöka lista ut hur du ställer upp det innan du tittar framåt, så är det vad vi försöker göra. Vi har tre ljus; en för "arbete", en för "break" och en varningslampa. Arbetsljuset lyser i 25 minuter och varningslampan lyser också under de två sista minuterna av det intervallet. Efter 25 minuter stängs arbets- och varningslamporna och pauslampan tänds i 5 minuter (varningslampan lyser igen under de senaste två minuterna).

Dessutom ingår en knapp som fördröjer ljusändringen i två minuter för att ge dig lite extra arbetstid eller brytningstid.

Vad du behöver

För det här projektet ska vi använda följande delar - allt du borde ha i startpaketet.

  • Arduino microcontroller (vi använde en Mega, men Uno skulle fungera bra också)
  • Bakbord
  • USB-kabel
  • 6 trådar
  • 3 x 330 ohm motstånd
  • 3 x LED (vi har använt grön, gul och blå)
  • 1 tryckknapp

Steg 1: Ställa in allt

Sätt i varje LED-lampa i en annan kolonn på brödbrädet (det är lättast om de är placerade lite) och placera knappen lite längre ner. Se till att knappen står i rätt riktning. Det finns två uppsättningar med två stiften på en enda sida av knappen, och stiften måste vara i samma rad.

pomoduino-setup1

Kör ledningar från stiften 5, 7 och 13 till kolonnen som innehåller det negativa benet i de blå, gula och gröna lysdioderna (det negativa benet är kortare av de två). Sätt sedan ett motstånd i samma kolumn som varje positivt ben och anslut dem till negativskenan på sidan av brödbrädet (den blåa, men färgen spelar ingen roll, det är bara konventionen att använda blå för tydlighet) .

pomoduino-setup2

Kör också en tråd från den blå skenan på brödbrädet till en av benen på knappen, och en annan tråd från det andra benet (på samma sida) till stift 2 på Arduino. Markera sedan den blå spåret i GND-stiftet på Arduino.

pomoduino-setup3

Här är ett diagram som bör rensa upp förvirring:

pomoduino

Det är det! Nu vidare till programmeringen.

Programmera din Arduino

Nedan är koden för Pomoduino-timern - läs igenom inline-kommentarerna, eftersom de förklarar vad varje steg i koden gör.

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

Obs! När du testar detta, vill du förmodligen inte vänta i 25 minuter för att se om det fungerar. I videon nedan har jag intervallen inställd på 5 sekunder för grön, 2 sekunder för blå och 1 sekund för gul. Använd ett kortare intervall för att se till att allt fungerar korrekt innan du använder det för att hålla reda på tiden!

När du har allt uppkopplat och koden gick in i IDEEN, är du redo att gå! Ladda upp skissen och du kommer att ha en fungerande pomodoro-timer med en 2-minuters fördröjningsknapp. Om varningslampan lyser och du behöver mer tid, tryck bara på knappen.

Du kanske märker att knappen är ansluten direkt till Arduino ingångsstift. Genom att använda en av pullupmotorerna inbyggda i Arduino behöver du inte köra en ledning från 5V-porten till knappen eller använda ett motstånd i linje med det. Du kan få mer information om Arduino-referensen för digitala stiften.

Mer avancerade utmaningar

Om du har gjort din Pomoduino och du vill ta på något lite mer avancerad kan du prova något av följande:

  • Lägg till en sekvens av lysdioder som tänds och fungera som en räknare för antalet avslutade arbetssessioner
  • Gör knappen två minuter till timern för varje gång du trycker på den
  • Lägg till en högtalare och spela ett ljud när det är dags att komma tillbaka till jobbet
  • Använd ett 9V batteri för att göra det bärbart
  • Istället för att använda ett varningsljus blinkar du det gröna eller det blå ljuset i några minuter innan du växlar
  • Visa en nedräkning på en LED-display

Andra bra nybörjare projekt

Om du är ny på Arduino, har vi massor av roliga handledning för dig att ta på. Prova en trafikljuskontroll Arduino Programmering för nybörjare: Trafikljuskontrollen Arduino Programmering för nybörjare: Trafikljuskontrollen I förra veckan lärde vi oss om den grundläggande strukturen i ett Arduino-program och tittade närmare på "blink" -exemplet. Förhoppningsvis tog du tillfället i akt att experimentera med kod, justera tidpunkterna. Den här gången ... Läs mer, en futuristisk LED-kub Hur man gör en pulserande Arduino LED-kub som ser ut som den kom från framtiden Hur man gör en pulserande Arduino LED-kub som ser ut som den kom från framtiden Om du har dabbled med några nybörjare Arduino-projekt, men letar efter något lite permanent och på en helt annan nivå, så är den ödmjuka 4 x 4 x 4 LED-kuban ... Läs mer, ett soluppgångslarm Arduino Night Light och Sunrise Alarm Project Arduino Night Light och Sunrise Alarm Project Idag kommer vi att göra en soluppgång väckarklocka, som försiktigt och långsamt väcker dig utan att tillgripa en offensiv brusmaskin. Läs mer eller ett larmsystem Så här gör du ett enkelt Arduino larmsystem Så här gör du ett enkelt Arduino larmsystem Upptäck rörelsen, skräck då av en inkräktare med högljudda larmljud och blinkande lampor. Låter det roligt? Det gör det självklart. Det är målet för dagens Arduino-projekt, lämpligt ... Läs mer. Om du bestämmer dig för att ta på sig en av de mer avancerade utmaningarna ovan, låt oss veta hur det går!

In this article