Kazalo:

Stepper Pomodoro Timer: 3 koraki (s slikami)
Stepper Pomodoro Timer: 3 koraki (s slikami)

Video: Stepper Pomodoro Timer: 3 koraki (s slikami)

Video: Stepper Pomodoro Timer: 3 koraki (s slikami)
Video: Pomodoro Technique 6 x 25 min - Study Timer 3h 2024, November
Anonim
Image
Image
1. korak: Spajkanje in povezovalni tokokrog zunaj vsebnika
1. korak: Spajkanje in povezovalni tokokrog zunaj vsebnika

Stepper Pomodoro je namizni merilnik časa, s katerim lahko vsako delovno obdobje razdelite na 30 -minutne segmente. Vendar vas v nasprotju z običajnim merilnikom časa Pomodoro ne vznemirja, saj prikazuje preostali čas. Namesto tega prikazuje čas, približno, skozi katerega od treh številčnic teče. Ker ne prikazuje natančnega časa, vam omogoča, da se dejansko osredotočite na opravljeno nalogo, namesto da nenehno preverjate preostali čas. Ta Pomodoro je kot nalašč za tiste, ki pri upravljanju nalog potrebujejo lahkotno in nevsiljivo strukturo.

Orodja

• spajkalnik

• Odstranjevalci žice

• Laserski rezalnik (ali brusilnik, odvisno od tega, kako želite ustvariti številčnice časovnika)

• Vrtalnik (z vrtalno stiskalnico sem izvrtal dovolj velike luknje za številčnice)

Materiali

• 1 Arduino Uno

• 1 polovična plošča

• 3 H mostovi (uporabljal sem DRV8833, motorni ščit bi mi prihranil nekaj časa in glavobole)

• 3 koračni motorji (uporabljal sem korake NEMA 17)

• 1 gumb

• 1 220-1K ohmski upor (vse v dosegu je dobro)

• AC/DC adapter (uporabil sem 12V, verjetno prevelik za tolikšno število korakov)

• razdelilnik moči

• USB A-B žica

• Žice za ploščice

• Spajkanje

• Materiali za posodo s časovnikom

• Akril za številčnice

• Žeblji ali kovinski zatiči delujejo kot mirujoči krak časovnika

1. korak: 1. korak: Spajkanje in povezovalni tokokrog zunaj vsebnika

Za ta korak sem začel s spajkanjem vseh mojih H mostov (če kupite ščit motorja, vam jih ne bo treba spajkati. Ko imate H most za vsak korak, lahko preverite, kako so ožičeni vaši koraki.

NEMA 17 so tako imenovani bipolarni koračni motorji, kar pomeni, da imajo v motorju dva (namesto enega) sklopa tuljav, ki spreminjata polarnost, da omogočata natančno premikanje motorja. Bipolarni koračniki imajo običajno štiri žice, polarni pa šest, kar je nekoliko zakompliciralo navodila na spletu. Vendar lahko na dve žici pritrdite večmetrski meter in preverite, ali sta povezana ali ne. Steperji NEMA 17 imajo vrstni red RDEČEGA, RUMENEGA, SIVEGA, ZELENEGA barvnega reda, pri čemer sta rdeči in sivi prvi polarni par, rumena in zelena pa drugi polarni par. Če se v katerem koli trenutku steper začne trzati in ne dokončati pričakovanega gibanja, obstaja verjetnost, da vaše žice nekako niso pravilno polarizirane na dvojčka ali pa je ena odklopljena. Vsak korak je krmiljen s štirimi izhodnimi zatiči, ki so povezani z mostovi DRV8833 H. Vrstni red ožičenja za vhod v DRV8833 je: IN1, IN2, Napajanje, Ozemljitev, IN3, IN4. Za namene izhoda se NEMA samo poveže s srednjimi štirimi od šestih zatičev v vrstnem redu: RDEČA, SIVA, RUMENA, ZELENA. Zdaj pa priključimo napajanje. NEMA -je imam na digitalnih vratih 2–13.

Za napajanje sem kupil 12V AC/DC adapter z razdelilnikom, da bi lahko napajal tako Arduino kot vse korake. OPOZORILO: Ne priključujte napajalnih in ozemljitvenih žic iz Arduina, ki že prejema napajanje iz vrat, na ploščo, ki prejema neposredno napajanje iz AC/DC. Opekel vam bo desko. Iz 12V adapterja, priključenega v steno, je en del cepilnika šel naravnost v vrata Arduino, drugi pa v pozitivni in negativni del plošče za kruh.

Nazadnje je čas, da priklopite gumb. Ena stran gumba bo potrebovala tako napajanje (z vgrajenim uporom) kot tudi spajkani izhodni zatič (to lahko storite tudi z mize). Drugi pin bo naša tla. Te tri žice je treba priključiti: Napajanje z uporom do 5V, izhod na A0 in ozemljitev na ozemljitev vse na sami plošči Arduino Uno.

Od tu bi morali poskusiti nadzorovati korake s to osnovno kodo koračnega testa, ki jo najdemo tukaj. Ta razlaga na Arduino.cc vsebuje tudi podrobnejšo razlago bi/unipolarnih stopnic, če jih potrebujete. Nato pojdimo na kodo za Pomodoro!

2. korak: 2. korak: nalaganje kode in prilagoditev vašim potrebam

2. korak: Naložite kodo in jo prilagodite svojim potrebam
2. korak: Naložite kodo in jo prilagodite svojim potrebam

Spodaj je koda za moj Pomodoro z gumbom, da jo prilagodite svoji nastavitvi, skupaj s temi koraki:

1. Nastavite, koliko korakov na obrat ima vaš osebni tip koraka (NEMA 17 ima 200 in je naveden v konstantnem celem številu, imenovanem stepsPerRevolution).

2. V gumbu za klicatelja s stalnim celim klicem nastavite, kamor vnaša vaš gumb.

3. Nastavite, od kod naj bi vaš arduino izhajal, da ukaže korakom (ti deli se lahko med vrstami mostov H najbolj razlikujejo, saj imajo številni različne knjižnice, ki jih uporabljajo).

4. Nastavite stopalno hitrost v vrtljajih v.setSpeed (pri vrtljaju v smeri urinega kazalca imam nastavljeno 1 vrt / min, pri obračanju v nasprotni smeri urinega kazalca 30 vrt / min).

5. Nastavite, kolikokrat želite, da se vsak od vaših korakov obrne, preden se premakne naprej (moji koraki štejejo deset minut, tako da se desetkrat vrtijo pri 1 vrt / min).

6 Nastavite, kako dolgo želite, da se vrti nazaj.

#vključi

const int stepsPerRevolution = 200; // nastavitev konstante, koliko korakov je pri vsakem polnem obratu mojih koračnih motorjev

const int buttonPin = A0; // nastavitev konstante vnosa mojega gumba

Stepper firstStepper (korakiPerRevolution, 2, 3, 4, 5); // inicializiramo knjižnico korakov na določenih zatičih

Stepper secondStepper (korakiPerRevolution, 6, 7, 8, 9); Stepper thirdStepper (korakiPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // ponovno aktivirajte knjižnico korakov na teh zatičih, da lahko ponastavite število vrtljajev, ko vas opozori, da je čas potekel Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack (stepsPerRevolution, 10, 11, 12, 13);

int minutesCounter = 0; // int štetje polnih vrtljajev korakov

int timerState = NIZKO; // trenutno stanje pomodoro timerja (HIGH = on, LOW = off/reset) int buttonState; // trenutno branje z vhodnega zatiča int lastButtonState = HIGH; // prejšnje odčitavanje z vhodnega zatiča

// naslednje spremenljivke so brez podpisa, ker je čas, merjen v milisekundah, // bo hitro postalo večje število, kot ga je mogoče shraniti v int. unsigned long lastDebounceTime = 0; // zadnjič, ko je bil izhodni pin preklopljen unsigned long debounceDelay = 50; // čas razglasitve; povečati, če izhod utripa

void setup () {

pinMode (buttonPin, INPUT_PULLUP); // nastavimo konstanto gumba kot vhod

firstStepper.setSpeed (1); // nastavimo hitrost pri 1 vrt/ min za štetje 10 minut na koračni secondStepper.setSpeed (1); thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // nastavite hitrost na 30 vrt/ min za opozarjanje, da je čas potekel, potem ko je Pomodoro opravil secondStepperBack.setSpeed (30); thirdStepperBack.setSpeed (30);

Serial.begin (9600); // zaženemo serijski monitor s hitrostjo 9600 baud

}

void loop () {

// preberemo stanje stikala v lokalno spremenljivko: int reading = digitalRead (buttonPin);

// preverite, če ste samo pritisnili gumb

// (t.j. vnos je šel od LOW do HIGH) in ste čakali // dovolj dolgo od zadnjega pritiska, da prezrete šum:

// Če se je stikalo spremenilo zaradi hrupa ali pritiska:

if (branje! = lastButtonState) {// ponastavitev časovnika za odstranjevanje lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// ne glede na to, kakšen je odčitek, je bil tam daljši // kot zakasnitev debounce, zato ga vzemite kot dejansko trenutno stanje:

// če se je stanje gumba spremenilo:

if (branje! = buttonState) {buttonState = branje;

// preklopite samo časovnik, če novo stanje gumba kaže, da je bil pritisnjen

// enkrat pritisnite, da vklopite, ponovno pritisnite, da izklopite, če (buttonState == LOW) {timerState =! timerState; Serial.print ("Stanje časovnika"); Serial.println (timerState); }}}

if (timerState == HIGH) {

Serial.println ("Pomodoro timer se je začel"); if (minutesCounter <11) {// če je trenutna druga vrednost drugačna od prejšnje, potem firstStepper.step (stepsPerRevolution); // zavrtite koračni korak 200 korakov/1 vrtljajev minutCounter ++; Serial.print ("minutni števec je"); Serial.println (števec minut); }

if (11 <= minutesCounter && minutesCounter <21) {// če je trenutna druga vrednost drugačna od prejšnje, potem secondStepper.step (stepsPerRevolution); // zavrtite koračni korak 200 korakov/1 vrtljajev minutCounter ++; Serial.print ("minutni števec je"); Serial.println (števec minut); }

if (21 <= minutesCounter && minutesCounter <31) {// če je trenutna druga vrednost drugačna od prejšnje, potem thirdStepper.step (stepsPerRevolution); // zavrtite koračni korak 200 korakov/1 vrtljajev minutCounter ++; Serial.print ("minutni števec je"); Serial.println (števec minut); }

if (31 <= minutesCounter && minutesCounter <1031) {// če je trenutna druga vrednost drugačna od prejšnje, potem firstStepperBack.step (-1); // obrnemo stepper nazaj 1 korak zapored, da se prikaže, kot da vsi tečejo hkrati secondStepperBack.step (-1); thirdStepperBack.step (-1); minuteCounter ++; Serial.print ("minutni števec je"); Serial.println (števec minut); }} else {Serial.println ("Pomodoro timer is off"); } // shrani branje. Naslednjič skozi zanko bo // zadnjiButtonState: lastButtonState = branje; }

Korak 3: Korak 3: Če želite, vključite Steppers in Arduino

3. korak: Če želite, vključite Steppers in Arduino
3. korak: Če želite, vključite Steppers in Arduino
3. korak: Če želite, vključite Steppers in Arduino
3. korak: Če želite, vključite Steppers in Arduino
3. korak: Če želite, vključite Steppers in Arduino
3. korak: Če želite, vključite Steppers in Arduino

Za svojo uro sem se odločil ustvariti paralelogramsko obliko. Ta oblika in izbira materialov rdečega hrasta sta bili navdihnjeni s sodobnim pohištvom iz sredine stoletja. Eden od delov, s katerim sem imel največ težav, je bil namestitev korakov s številčnicami skozi njihove odprtine, da so vidne.

Priporočena: