The Pomoduino: Lag en Arduino-Powered Pomodoro Timer

Annonse

Annonse
Annonse

Pomodoro-teknikken Kutt gjennom prostrastering med disse Pomodoro-teknikkene Apps og programvare kutt gjennom utryddelse med disse Pomodoro-teknikkene Apps & Software Procrastination er en sykdom som gjennomsyrer studenter og arbeidere i alle verdenshjørner, og det smitter både amatører og fagfolk. Som forfatter, lider jeg av utsagn på daglig basis. Noen mennesker ... Les mer er et populært tidsstyringssystem som innebærer å bryte arbeidet i 25 minutters biter med 5 minutters hvile. Forskjellige programmer finnes for å hjelpe med dette, men hva om du vil bruke pomodoro-systemet mens du jobber borte fra datamaskinen din, eller mens du er på arbeidsbenken? Å lage en Arduino-drevet pomodoro-timer er et godt introduksjonsprosjekt. 10 Great Arduino-prosjekter for nybegynnere. 10 Great Arduino-prosjekter for nybegynnere. Å fullføre et Arduino-prosjekt gir deg en følelse av tilfredshet som ingen andre. De fleste nybegynnere er ikke sikker på hvor du skal begynne, og selv begynnerprosjekter kan virke ganske skremmende. Les mer for å hjelpe deg med å lære deg rundt en Arduino, og vil faktisk resultere i noe nyttig.

Målet

Hvis du vil prøve å finne ut hvordan du konfigurerer dette før du ser fremover, er det det vi prøver å gjøre. Vi har tre lys; en for "arbeid", en for "pause" og et advarsellys. Arbeidslyset lyser i 25 minutter, og advarselslyset vil også være på de siste to minuttene av det intervallet. Etter 25 minutter vil arbeids- og varsellysene slås av, og pause lampen slås på i 5 minutter (advarselslyset vil igjen være på de siste to minuttene).

Også inkludert vil være en knapp som vil forsinke lysendringen i to minutter for å gi deg litt ekstra arbeidstid eller pause tid.

Hva trenger du

For dette prosjektet bruker vi de følgende delene - alt du bør ha i startpakken.

  • Arduino microcontroller (vi brukte en Mega, men Uno ville fungere fint også)
  • bread~~POS=TRUNC
  • USB-kabel
  • 6 ledninger
  • 3 x 330 ohm motstander
  • 3 x LED (vi har brukt grønn, gul og blå)
  • 1 trykknapp

Trinn 1: Stille alt opp

Sett hver LED-lampe inn i en annen kolonne på brødbrettet (det er enklest hvis de er plassert litt), og legg knappen litt lenger nede. Sørg for at knappen vender mot høyre side. Det er to sett med to pinner på en enkelt side av knappen, og disse pinnene må være i samme rad.

pomoduino-setup1

Kjør ledninger fra pinnene 5, 7 og 13 til kolonnen som inneholder det negative benet i de blå, gule og grønne lysdiodene (det negative benet er den kortere av de to). Sett deretter motstand i samme kolonne som hvert positivt ben, og koble dem til den negative skinnen på siden av brødbrettet (den blå, selv om fargen egentlig ikke betyr noe, det er bare konvensjon å bruke blå for klarhet) .

pomoduino-Oppsett2

Kjør også en ledning fra den blå skinnen på brødbrettet til en av bena på knappen, og en annen ledning fra den andre siden (på samme side) til pin 2 på Arduino. Deretter males den blå skinnen i GND-pinnen på Arduino.

pomoduino-setup3

Her er et diagram som bør rydde opp forvirring:

pomoduino

Det er det! Nå videre til programmeringen.

Programmering av din Arduino

Nedenfor er koden for Pomoduino-timeren - les gjennom inline-kommentarene, da de forklarer hva hvert trinn i koden gjø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; } 

Merk: Når du tester dette, vil du sannsynligvis ikke vente i 25 minutter for å se om den fungerer. I videoen nedenfor har jeg intervaller satt til 5 sekunder for grønt, 2 sekunder for blått og 1 sekund for gult. Bruk et kortere intervall for å sikre at alt fungerer riktig før du bruker det for å holde oversikt over tid!

Når du har alt kablet opp og koden er inn i IDE, er du klar til å gå! Last opp skissen, og du vil ha en fungerende pomodoro-timer med en 2-minutters forsinkelsesknapp. Hvis advarselampen lyser og du trenger mer tid, bare trykk på knappen.

Du kan merke at knappen er koblet direkte til Arduino-inngangspinnen. Ved å bruke en av pullup-motstandene som er innebygd i Arduino, trenger du ikke å koble en ledning fra 5V-porten til knappen eller bruke en motstand i tråd med den. Du kan få mer informasjon om Arduino-referansen for digitale pinner.

Mer avanserte utfordringer

Hvis du har laget din Pomoduino og du ønsker å ta på noe litt mer avansert, kan du prøve noe av følgende:

  • Legg til en serie med lysdioder som lyser opp og tjene som en teller for antall ferdige arbeidsøkter
  • Gjør knappen legg to minutter til timeren for hver gang du trykker på den
  • Legg til en høyttaler og spill en støy når det er på tide å komme seg tilbake til jobb
  • Bruk et 9V batteri for å gjøre det bærbart
  • I stedet for å bruke et advarselslampe, blink det grønne eller blå lyset i et minutt før du bytter
  • Vis nedtelling på LED-skjerm

Andre flotte nybegynnerprosjekter

Hvis du er ny i Arduino, har vi mange morsomme opplæringsprogrammer for deg å ta på. Prøv en trafikklysregulator Arduino Programmering for nybegynnere: Trafikklyskontrolleren Arduino Programmering for nybegynnere: Trafikklyskontrolleren I forrige uke lærte vi om grunnstrukturen til et Arduino-program og tok en nærmere titt på "blink" -eksemplet. Forhåpentligvis tok du muligheten til å eksperimentere med kode, justere timingen. Denne gangen ... Les mer, en futuristisk LED-kube Hvordan lage en pulserende Arduino LED-kube som ser ut som den kom fra fremtiden Hvordan lage en pulserende Arduino LED-kube som ser ut som den kom fra fremtiden Hvis du har dabbled med noen nybegynnere Arduino-prosjekter, men leter etter noe litt permanent og på et helt annet nivå, er den ydmyke 4 x 4 x 4 LED-kuben ... Les mer, en soloppgangslarm Arduino Night Light og Sunrise Alarm Project Arduino nattlys og soloppgang alarmprosjekt I dag skal vi lage en soloppgangsvekkerklokke, som forsiktig og sakte vekker deg uten å benytte seg av en støtende støymaskin. Les mer eller et alarmsystem Hvordan lage et enkelt Arduino Alarmsystem Hvordan lage et enkelt Arduino Alarmsystem Oppdag bevegelse, og skrem deg så mye av en inntrenger med høylydende alarmlyder og blinkende lys. Lyder det morsomt? Selvfølgelig gjør det det. Det er målet med dagens Arduino-prosjekt, egnet ... Les mer. Hvis du bestemmer deg for å ta på en av de mer avanserte utfordringene som er nevnt ovenfor, gi oss beskjed om hvordan det går!

In this article