Indholdsfortegnelse:

Stepper Pomodoro Timer: 3 trin (med billeder)
Stepper Pomodoro Timer: 3 trin (med billeder)

Video: Stepper Pomodoro Timer: 3 trin (med billeder)

Video: Stepper Pomodoro Timer: 3 trin (med billeder)
Video: 3-HR STUDY WITH ME 📚☕️ Дождливый поздний вечер, 50/10 Pomodoro Timer /Меняю мои заметки в Notion/ 2024, Juli
Anonim
Image
Image
Trin 1: Lodning og tilslutning af kredsløb uden for beholderen
Trin 1: Lodning og tilslutning af kredsløb uden for beholderen

Stepper Pomodoro er en bordtimer til at hjælpe en med at styre deres daglige opgaveliste ved at opdele hver arbejdsperiode i segmenter på 30 minutter. I modsætning til en normal Pomodoro -timer gør det dig dog ikke ængstelig ved at vise den tid, der er tilbage. I stedet viser den tiden cirka, via hvilken af de tre opkald tikker. Ved ikke at vise det nøjagtige tidspunkt giver det dig mulighed for faktisk at fokusere på opgaven, snarere end konstant at kontrollere din tid tilbage. Denne Pomodoro er perfekt til dem, der har brug for en let og diskret struktur til deres opgavestyring.

Værktøjer

• Loddekolbe

• Wire strippere

• Laserskærer (eller slibemaskine afhængigt af, hvordan du vil oprette urskiverne til timeren)

• Bor (jeg brugte en boremaskine til at slå huller, der var store nok til skiverne)

Materialer

• 1 Arduino Uno

• 1 halvstort brødbræt

• 3 H broer (jeg brugte DRV8833, et motorskjold ville have sparet mig lidt tid og hovedpine)

• 3 trinmotorer (jeg brugte NEMA 17 steppere)

• 1 knap

• 1 220-1K ohm modstand (inden for rækkevidde er godt)

• AC/DC adapter (jeg brugte en 12V, sandsynligvis for stor til denne mængde stepper)

• Power splitter

• USB A-B-ledning

• Brødtavledninger

• Lodde

• Materialer til beholder med timer

• Akryl til urskiver

• Søm eller metalnåle til at fungere som en stationær arm på timeren

Trin 1: Trin 1: Lodning og tilslutning af kredsløb uden for beholderen

Til dette trin startede jeg med at lodde alle mine H -broer sammen (hvis du køber motorskærmen, burde du ikke behøve at lodde disse. Når du har en H -bro for hver trin, kan du kontrollere, hvordan dine steppere er kablet.

NEMA 17'erne er det, der er kendt som bipolære steppermotorer, hvilket betyder, at de har to (snarere end en) spoler i motoren, som ændrer polaritet for at muliggøre præcis bevægelse af motoren. Bipolære steppere har normalt fire ledninger og Polar stepper har normalt seks, dette komplicerede instruktionerne lidt online. Du kan dog tilslutte en multimeter til to ledninger og se, om de er tilsluttet, eller om de ikke er det. NEMA 17 stepperne har deres trådordre i RØD, GUL, GRÅ, GRØN farveorden, hvor det røde og grå er det første polpar og det gule og grønne er det andet polarpar. Hvis stepper på et tidspunkt begynder at rykke frem for at fuldføre den forventede bevægelse, er oddsene på, at dine ledninger på en eller anden måde ikke er korrekt polariseret til deres tvilling, eller at en er afbrudt. Hver stepper styres via fire udgangsstifter, der forbinder til DRV8833 H -broerne. Ledningsbekendtgørelsen for input til DRV8833 er: IN1, IN2, Power, Ground, IN3, IN4. For outputformål forbinder NEMA bare de midterste fire af de seks ben i størrelsesordenen: RØD, GRÅ, GUL, GRØN. Lad os nu forbinde strøm. Jeg har mine NEMA'er på digitale porte 2–13.

For at drive dette købte jeg en 12V AC/DC adapter med splitter for at kunne drive både Arduino og alle stepperne. ADVARSEL: Tilslut ikke din strøm og jordledninger fra Arduino, der allerede modtager strøm fra porten, til brødbrættet, der modtager direkte strøm fra AC/DC. Det vil stege dit bræt. Fra 12V -adapteren, der var tilsluttet væggen, gik den ene del af splitteren direkte til Arduino's port og den anden til det positive og negative ved brødbrættet.

Endelig er det tid til at tilslutte knappen. Den ene side af knappen skal bruge både strøm (med vores modstand splejset i) såvel som udgangsstiften loddet på (dette kan også gøres fra brødbrættet). Den anden pin vil være vores jord. Disse tre ledninger skal tilsluttes: Strøm med modstand til 5V, output til A0 og jord til jord alt på selve Arduino Uno -kortet.

Herfra skulle vi være i stand til at forsøge at styre stepperne ved hjælp af denne grundlæggende stepper testkode, der findes her. Denne forklaring på Arduino.cc giver også en mere grundig forklaring af bi/unipolare steppere, hvis du har brug for det. Lad os derefter komme ind i koden til Pomodoro!

Trin 2: Trin 2: Upload kode og juster den til dine behov

Trin 2: Upload kode og juster den til dine behov
Trin 2: Upload kode og juster den til dine behov

Nedenfor er koden til min Pomodoro med knap, for at tilpasse den til din opsætning skal du følge disse trin:

1. Indstil, hvor mange trin pr. Omdrejning din personlige stepper type har (NEMA 17s har 200, og den er angivet i det konstante heltal, der kaldes stepsPerRevolution).

2. Indstil, hvor din knap skal indtastes i det konstante heltals opkaldsknapPin.

3. Indstil, hvor din arduino skal output fra for at styre stepperne (disse dele kan variere mest mellem H -brotyper, da mange har forskellige biblioteker, de bruger).

4. Indstil stepperhastigheden i omdrejningstal i.setSpeed (jeg har min indstillet til 1 omdr./min., Når jeg drejer med uret og 30 omdr./min., Når der drejes mod uret).

5. Indstil, hvor mange gange du vil have hver af dine steppere til at vende, før den går videre (mine steppere tæller ti minutter, så de roterer ti gange med 1 omdr./min.).

6 Indstil, hvor længe du ønsker, at den skal rotere baglæns.

#omfatte

const int stepsPerRevolution = 200; // fastsætter konstant hvor mange trin der er i hver fuld omdrejning af mine stepper motorer

const int buttonPin = A0; // indstillingskonstant for min knapindgang

Stepper firstStepper (stepsPerRevolution, 2, 3, 4, 5); // initialiser stepper -biblioteket på visse pins

Stepper secondStepper (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepper (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // geninitier stepper -biblioteket på disse ben for at kunne nulstille omdrejninger pr. minut, når der advares om, at tiden er udløbet Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack (stepsPerRevolution, 10, 11, 12, 13);

int minutesCounter = 0; // int tæller fulde omdrejninger af stepper

int timerState = LAV; // den aktuelle tilstand for pomodoro -timeren (HIGH = on, LOW = off/reset) int buttonState; // den aktuelle aflæsning fra input -pin int lastButtonState = HIGH; // den forrige læsning fra input -pin

// følgende variabler er usignerede lange, fordi tiden målt i milisekunder

// vil hurtigt blive et større tal, end der kan gemmes i en int. unsigned long lastDebounceTime = 0; // sidste gang output -pin blev skiftet usigneret lang debounceDelay = 50; // afvisningstiden; øges, hvis output flimrer

ugyldig opsætning () {

pinMode (buttonPin, INPUT_PULLUP); // indstil konstant knap som input

firstStepper.setSpeed (1); // indstil hastigheden til 1 omdr./min. for at tælle 10 minutter pr. stepper secondStepper.setSpeed (1); thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // indstil hastigheden til 30 omdr./min. for at advare om, at tiden er udløbet, efter at Pomodoro har afsluttet secondStepperBack.setSpeed (30); thirdStepperBack.setSpeed (30);

Serial.begin (9600); // start seriel skærm med en baudhastighed på 9600

}

void loop () {

// læs omskifterens tilstand til en lokal variabel: int reading = digitalRead (buttonPin);

// tjek for at se, om du lige har trykket på knappen

// (dvs. input gik fra LOW til HIGH), og du har ventet // længe nok siden sidste tryk for at ignorere enhver støj:

// Hvis kontakten ændres på grund af støj eller tryk:

hvis (læsning! = lastButtonState) {// nulstil den afbrydende timer sidsteDebounceTime = millis (); } hvis ((millis () - lastDebounceTime)> debounceDelay) {// uanset hvilken aflæsning der er, har den været der længere // end forsinkelsen, så tag det som den aktuelle aktuelle tilstand:

// hvis knappen er ændret:

hvis (læsning! = buttonState) {buttonState = læsning;

// skift kun timeraktiveringen, hvis den nye knaptilstand angiver, at der blev trykket på den

// tryk én gang for at tænde, tryk igen for at slukke hvis (buttonState == LOW) {timerState =! timerState; Serial.print ("Timer -tilstand er"); Serial.println (timerState); }}}

hvis (timerState == HIGH) {

Serial.println ("Pomodoro -timeren er begyndt"); hvis (minutesCounter <11) {// hvis den aktuelle anden værdi er forskellig fra den tidligere værdi, så firstStepper.step (stepsPerRevolution); // drej stepper 200 trin/1 omdrejning minutterCounter ++; Serial.print ("minutesCounter er"); Serial.println (minutesCounter); }

hvis (11 <= minutesCounter && minutesCounter <21) {// hvis den aktuelle anden værdi er forskellig fra den tidligere værdi, så secondStepper.step (stepsPerRevolution); // drej stepper 200 trin/1 omdrejningstal Counter ++; Serial.print ("minutesCounter er"); Serial.println (minutesCounter); }

if (21 <= minutesCounter && minutesCounter <31) {// hvis den aktuelle anden værdi er forskellig fra den tidligere værdi, så thirdStepper.step (stepsPerRevolution); // drej stepper 200 trin/1 omdrejning minutterCounter ++; Serial.print ("minutesCounter er"); Serial.println (minutesCounter); }

hvis (31 <= minutesCounter && minutesCounter <1031) {// hvis den aktuelle anden værdi er forskellig fra den tidligere værdi, så firstStepperBack.step (-1); // vend stepper tilbage 1 trin i rækkefølge for at se ud som om alle kører samtidigt secondStepperBack.step (-1); thirdStepperBack.step (-1); minutesCounter ++; Serial.print ("minutesCounter er"); Serial.println (minutesCounter); }} else {Serial.println ("Pomodoro -timeren er slukket"); } // gem læsningen. Næste gang gennem sløjfen, // bliver det lastButtonState: lastButtonState = læsning; }

Trin 3: Trin 3: Indeholder Steppers og Arduino, hvis du ønsker det

Trin 3: Indeholder Steppers og Arduino, hvis du ønsker det
Trin 3: Indeholder Steppers og Arduino, hvis du ønsker det
Trin 3: Indeholder Steppers og Arduino, hvis du ønsker det
Trin 3: Indeholder Steppers og Arduino, hvis du ønsker det
Trin 3: Indeholder Steppers og Arduino, hvis du ønsker det
Trin 3: Indeholder Steppers og Arduino, hvis du ønsker det

Jeg valgte at oprette en parallelogramform til mit ur. Denne form og materialevalg af rød eg blev inspireret af moderne møbler fra midten af århundredet. En del, som jeg havde sværest ved, var at montere stepperne med urskiver gennem deres kohuller for at ses fra.

Anbefalede: