The Pomoduino: Lav en Arduino-Powered Pomodoro Timer

Reklame

Reklame
Reklame

Pomodoro-teknikken skæres gennem udryddelse med disse Pomodoro-teknikker Apps og software skæres gennem udryddelse med disse Pomodoro-teknikker Apps & Software Procrastination er en sygdom, der gennemsyrer elever og arbejdere i alle verdenshjørner, og det inficerer både amatører og fagfolk. Som forfatter lider jeg dagligt af udsættelse. Nogle mennesker ... Læs mere er et populært tidsstyringssystem, der indebærer at bryde arbejdet i 25 minutters bid med 5 minutters hvile. Der findes forskellige software til at hjælpe med dette, men hvad hvis du vil bruge pomodoro-systemet, mens du arbejder væk fra din computer, eller mens du er på din arbejdsbænk? At lave en Arduino-powered pomodoro-timer er et godt introduktionsprojekt. 10 Great Arduino-projekter for begyndere. 10 Great Arduino-projekter for begyndere. Gennemførelse af et Arduino-projekt giver dig en følelse af tilfredshed som ingen anden. De fleste begyndere er ikke sikre på, hvor de skal starte, og selv begynderprojekter kan virke temmelig skræmmende. Læs mere for at hjælpe dig med at lære dig rundt om en Arduino, og det vil faktisk resultere i noget nyttigt.

Målet

Hvis du vil prøve at finde ud af, hvordan du konfigurerer dette, inden du ser fremad, her er hvad vi forsøger at gøre. Vi har tre lys; en til "arbejde", en til "pause" og et advarselslys. Arbejdslyset forbliver i 25 minutter, og advarselslyset tændes også i de sidste to minutter af det pågældende interval. Efter 25 minutter slukker arbejds- og advarselslyset, og pause lyset tændes i 5 minutter (advarselslyset tændes igen i de sidste to minutter).

Også inkluderet vil der være en knap, der forsinker skiftet af lysene i to minutter for at give dig lidt ekstra arbejdstid eller pause tid.

Hvad du har brug for

Til dette projekt bruger vi de følgende dele - alt hvad du skal have i din startpakke.

  • Arduino microcontroller (vi brugte en mega, men Uno ville også fungere fint)
  • breadboard
  • USB-kabel
  • 6 ledninger
  • 3 x 330 ohm modstande
  • 3 x LED (vi har brugt grøn, gul og blå)
  • 1 tryk på knappen

Trin 1: Indstilling af alt

Sæt hver LED i en anden søjle på brødbrættet (det er nemmest, hvis de er adskilt lidt), og sæt knappen lidt længere nede. Sørg for, at knappen står i den rigtige retning - der er to sæt med to ben på en enkelt side af knappen, og disse stifter skal være i samme række.

pomoduino-Setup1

Kør ledninger fra tappene 5, 7 og 13 til kolonnen, der indeholder det negative ben på de blå, gule og grønne lysdioder (det negative ben er den kortere af de to). Dernæst sættes en modstand i samme kolonne som hvert positivt ben, og forbinder dem med den negative skinne på siden af ​​brødbrættet (den blå, selv om farven ikke rigtig betyder noget, det er bare konvention at bruge blå for klarhed) .

pomoduino-Opsætning2

Kør også en ledning fra den blå skinne på brødbrættet til et af benene på knappen, og en anden ledning fra det andet ben (på samme side) til pin 2 på Arduino. Derefter jord den blå skinne ind i GND pin på Arduino.

pomoduino-setup3

Her er et diagram, der skal rydde op for enhver forvirring:

pomoduino

Det er det! Nu videre til programmeringen.

Programmering af din Arduino

Nedenfor er koden til Pomoduino-timeren - læs gennem inline-kommentarerne, da de forklarer, hvad hvert trin i koden laver.

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

Bemærk: Når du tester dette, vil du sandsynligvis ikke vente i 25 minutter for at se, om det virker. I videoen nedenfor har jeg intervallerne indstillet til 5 sekunder for grøn, 2 sekunder for blå og 1 sekund for gul. Brug et kortere interval for at sikre, at alt fungerer korrekt, før du bruger det for at holde styr på tiden!

Når du har alt ledet op og koden er indgået i IDE, er du klar til at gå! Upload skitsen, og du får en fungerende pomodoro-timer med en 2 minutters forsinkelsesknap. Hvis advarselslyset tændes, og du har brug for mere tid, skal du blot trykke på knappen.

Du kan bemærke, at knappen er tilsluttet direkte til Arduino-indgangsstiften. Ved at bruge en af ​​pullup-modstande indbygget i Arduino behøver du ikke at køre en ledning fra 5V-porten til knappen eller bruge en modstand i overensstemmelse med den. Du kan få flere oplysninger om Arduino-referencen til digitale stifter.

Mere avancerede udfordringer

Hvis du har lavet din Pomoduino, og du ønsker at påtage sig noget lidt mere avanceret, kan du prøve noget af følgende:

  • Tilføj en række LED'er, der tændes og tjene som en tæller for antallet af afsluttede arbejdssessioner
  • Gør knappen tilføj to minutter til timeren for hver gang du skubber den
  • Tilføj en højttaler og spil en lyd, når det er tid til at komme tilbage til arbejde
  • Brug et 9V batteri for at gøre det bærbart
  • I stedet for at bruge et advarselslys blinker du det grønne eller det blå lys i et minut, inden du skifter
  • Vis en nedtælling på et LED display

Andre Great Beginner Projekter

Hvis du er ny til Arduino, har vi masser af sjove tutorials for dig at tage på. Prøv en trafiklysregulator Arduino Programmering til begyndere: Trafiklysregulatoren Arduino Programmering til begyndere: Trafiklyskontrolleren I sidste uge lærte vi om den grundlæggende struktur af et Arduino-program og tog et nærmere kig på blinket eksempel. Forhåbentlig benyttede du mulighed for at eksperimentere med kode og justere timingen. Denne gang ... Læs mere, en futuristisk LED-kube Sådan laver du en pulserende Arduino LED-kube, der ligner den kom fra fremtiden Sådan laver du en pulserende Arduino LED-kasse, der ligner den kom fra fremtiden Hvis du har dabbled med nogle nybegyndere Arduino projekter, men leder efter noget lidt permanent og på et helt andet niveau awesome, så er den ydmyge 4 x 4 x 4 LED-terning ... Læs mere, en solopgang alarm Arduino Night Light og Sunrise Alarm Project Arduino Night Light og Sunrise Alarm Project I dag laver vi et solopgang vækkeur, som forsigtigt og langsomt vil vække dig uden at ty til en offensiv støjdannende maskine. Læs mere eller et alarmsystem Sådan laver du et simpelt Arduino alarmsystem Sådan laver du et simpelt alarmsystem Arduino Detekterer bevægelse, så skræm ridsen af ​​en indtrenger med højlydede alarmlyde og blinkende lys. Lyder det sjovt? Det gør det selvfølgelig. Det er målet med dagens Arduino-projekt, egnet ... Læs mere. Hvis du beslutter dig for at tage en af ​​de mere avancerede udfordringer opført ovenfor, så lad os vide, hvordan det går!

In this article