Der Pomoduino: Machen Sie einen Arduino-Powered Pomodoro Timer

Werbung

Werbung
Werbung

Die Pomodoro-Technik Schnitt durch Prokrastination mit diesen Pomodoro-Technik Apps & Software Schnitt durch Prokrastination mit diesen Pomodoro-Technik Apps & Software Aufschub ist eine Krankheit, die Studenten und Arbeiter in allen Ecken der Welt durchdringt und sowohl Amateure als auch Profis ansteckt. Als Schriftsteller leide ich täglich unter Zaudern. Einige Leute ... Read More ist ein beliebtes Zeitmanagementsystem, bei dem die Arbeit in 25-Minuten-Minuten mit einer Pause von 5 Minuten unterbrochen wird. Es gibt verschiedene Software, die Ihnen dabei helfen kann. Was aber, wenn Sie das pomodoro-System verwenden möchten, während Sie nicht am Computer arbeiten oder wenn Sie an Ihrem Arbeitsplatz arbeiten? Einen Arduino-angetriebenen Pomodoro-Timer zu erstellen, ist ein großartiges Einführungsprojekt 10 Große Arduino-Projekte für Anfänger 10 Große Arduino-Projekte für Anfänger Die Fertigstellung eines Arduino-Projekts gibt Ihnen ein Gefühl der Zufriedenheit wie kein anderer. Die meisten Anfänger sind jedoch nicht sicher, wo sie anfangen sollen, und selbst Anfängerprojekte können ziemlich entmutigend wirken. Lesen Sie mehr, um Ihnen zu helfen, sich mit einem Arduino vertraut zu machen, und wird tatsächlich etwas Nützliches ergeben.

Das Ziel

Wenn Sie versuchen möchten, herauszufinden, wie Sie dies einrichten, bevor Sie nach vorne schauen, hier ist, was wir versuchen zu tun. Wir werden drei Lichter haben; eine für "Arbeit", eine für "Pause" und ein Warnlicht. Das Arbeitslicht bleibt 25 Minuten lang an und die Warnlampe leuchtet auch für die letzten zwei Minuten dieses Intervalls. Nach 25 Minuten werden die Arbeits- und Warnleuchten ausgeschaltet und das Bremslicht schaltet sich für 5 Minuten ein (die Warnlampe leuchtet für die letzten zwei Minuten wieder).

Ebenfalls enthalten ist ein Knopf, der den Wechsel der Lichter für zwei Minuten verzögert, um Ihnen ein wenig mehr Arbeitszeit oder Pausen zu geben.

Was du brauchst

Für dieses Projekt verwenden wir die folgenden Teile - alles, was Sie in Ihrem Starter-Kit haben sollten.

  • Arduino Mikrocontroller (wir haben ein Mega benutzt, aber Uno würde auch gut funktionieren)
  • Steckbrett
  • USB-Kabel
  • 6 Drähte
  • 3 x 330 Ohm Widerstände
  • 3 x LED (wir haben grün, gelb und blau verwendet)
  • 1 Drucktaste

Schritt 1: Alles einrichten

Setzen Sie jede der LEDs in eine andere Spalte auf dem Steckbrett (es ist am einfachsten, wenn sie ein wenig Abstand voneinander haben), und platzieren Sie den Knopf ein wenig weiter unten. Stellen Sie sicher, dass der Knopf in die richtige Richtung zeigt - auf einer Seite des Knopfes befinden sich zwei Sätze von zwei Stiften, und diese Stifte müssen in derselben Reihe sein.

pomoduino-setup1

Führen Sie die Drähte von den Stiften 5, 7 und 13 zu der Spalte, die den negativen Schenkel der blauen, gelben und grünen LEDs enthält (der negative Schenkel ist der kürzere der beiden). Als nächstes setzen Sie einen Widerstand in die gleiche Spalte wie jedes positive Bein, und verbinden Sie sie mit der negativen Schiene auf der Seite des Steckbrettes (die blaue, obwohl die Farbe nicht wirklich wichtig ist, ist es nur Konvention, um Klarheit zu verwenden) .

pomoduino-setup2

Führen Sie auch einen Draht von der blauen Schiene auf dem Steckbrett zu einem der Beine auf dem Knopf und einen anderen Draht vom anderen Bein (auf der gleichen Seite) zu Pin 2 auf dem Arduino. Erden Sie dann die blaue Schiene in den GND-Pin am Arduino.

pomoduino-setup3

Hier ist ein Diagramm, das jede Verwirrung klären sollte:

Pomoduino

Das ist es! Nun zum Programmieren.

Programmieren Sie Ihren Arduino

Unten ist der Code für den Pomoduino-Timer - lies die Inline-Kommentare durch, da sie erklären, was jeder Schritt des Codes macht.

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

Hinweis: Wenn Sie dies testen, möchten Sie wahrscheinlich nicht 25 Minuten warten, um zu sehen, ob es funktioniert. Im folgenden Video habe ich die Intervalle auf 5 Sekunden für Grün, 2 Sekunden für Blau und 1 Sekunde für Gelb eingestellt. Verwenden Sie ein kürzeres Intervall, um sicherzustellen, dass alles ordnungsgemäß funktioniert, bevor Sie es verwenden, um den Überblick zu behalten!

Sobald Sie alles verdrahtet und den Code in die IDE eingegeben haben, können Sie loslegen! Laden Sie die Skizze hoch und Sie haben einen funktionierenden Pomodoro-Timer mit einer 2-Minuten-Verzögerungstaste. Wenn die Warnlampe leuchtet und Sie mehr Zeit brauchen, drücken Sie einfach die Taste.

Möglicherweise stellen Sie fest, dass die Schaltfläche direkt mit dem Arduino-Eingangspin verdrahtet ist. Wenn Sie einen der in den Arduino integrierten Pullup-Widerstände verwenden, müssen Sie keine Leitung vom 5V-Anschluss zum Schalter verlegen oder einen Widerstand verwenden. Sie können mehr Informationen über die Arduino-Referenz für digitale Pins erhalten.

Weitere Herausforderungen für Fortgeschrittene

Wenn Sie Ihr Pomoduino gemacht haben und etwas fortgeschrittener werden möchten, können Sie Folgendes ausprobieren:

  • Fügen Sie eine Sequenz von LEDs hinzu, die aufleuchten und als Zähler für die Anzahl abgeschlossener Arbeitssitzungen dienen
  • Mit der Schaltfläche können Sie dem Timer zwei Minuten hinzufügen, wenn Sie ihn drücken
  • Fügen Sie einen Lautsprecher hinzu und spielen Sie ein Geräusch, wenn es Zeit ist, sich wieder an die Arbeit zu machen
  • Verwenden Sie eine 9V-Batterie, um es tragbar zu machen
  • Anstatt eine Warnlampe zu verwenden, blinken Sie das grüne oder blaue Licht für eine Minute, bevor Sie schalten
  • Zeigen Sie einen Countdown auf einer LED-Anzeige an

Andere großartige Anfängerprojekte

Wenn Sie neu bei Arduino sind, haben wir viele interessante Tutorials für Sie. Testen Sie eine Ampel-Controller Arduino Programmierung für Anfänger: Die Ampel-Controller Arduino Programmierung für Anfänger: Die Ampel-Controller Letzte Woche lernten wir über die grundlegende Struktur eines Arduino-Programms und betrachtete das "blink" Beispiel näher. Hoffentlich haben Sie die Gelegenheit genutzt, mit Code zu experimentieren und die Timings anzupassen. Diesmal ... Read More, ein futuristischer LED-Würfel Wie man einen pulsierenden Arduino-LED-Würfel macht, der aussieht, als käme er aus der Zukunft Wie man einen pulsierenden Arduino-LED-Würfel macht, der aussieht, als käme er aus der Zukunft Wenn du dich getrödelt hast mit einigen Anfänger Arduino Projekte, aber sind auf der Suche nach etwas ein wenig dauerhaft und auf einer ganz anderen Ebene der ehrfürchtigen, dann ist die bescheidene 4 x 4 x 4 LED-Würfel ... Lesen Sie mehr, ein Sonnenaufgang Alarm Arduino Night Light und Sunrise Alarm Project Arduino Night Light und Sunrise Alarm Project Heute machen wir einen Sunrise-Wecker, der Sie sanft und langsam aufweckt, ohne auf eine offensive Geräuschmaschine zu setzen. Lesen Sie mehr oder ein Alarmsystem Wie man ein einfaches Arduino-Alarmsystem macht Wie man ein einfaches Arduino-Alarmsystem erkennt Erkennen Sie Bewegung, dann erschrecken Sie einen Eindringling mit einem hohen Alarmton und blinkenden Lichtern. Klingt das lustig? Natürlich tut es das. Das ist das Ziel des heutigen Arduino-Projekts, ... Read More. Wenn Sie sich für eine der weiter oben genannten Herausforderungen entscheiden, lassen Sie uns wissen, wie es läuft!

In this article