Innehållsförteckning:

Stepper Pomodoro Timer: 3 steg (med bilder)
Stepper Pomodoro Timer: 3 steg (med bilder)

Video: Stepper Pomodoro Timer: 3 steg (med bilder)

Video: Stepper Pomodoro Timer: 3 steg (med bilder)
Video: 9월 첫째주 일상|스페인식 문어요리, 강주연못 드라이브, 건강한친구들 후기, 조말론 향수 추천 2024, November
Anonim
Image
Image
Steg 1: Lödning och anslutningskrets utanför behållaren
Steg 1: Lödning och anslutningskrets utanför behållaren

Stepper Pomodoro är en skrivbordstimer för att hjälpa en att hantera sin dagliga uppgiftslista genom att dela upp varje arbetsperiod i 30 minuters segment. Till skillnad från en vanlig Pomodoro -timer gör det dig dock inte orolig genom att visa hur lång tid som är kvar. Istället visar den tiden ungefär via vilken av de tre rattar som tickar. Genom att inte visa den exakta tiden kan du faktiskt fokusera på uppgiften, snarare än att ständigt kontrollera din tid kvar. Denna Pomodoro är perfekt för dem som behöver en lätt och diskret struktur för sin uppgiftshantering.

Verktyg

• Lödkolv

• Wire strippers

• Laserskärare (eller slipmaskin beroende på hur du vill skapa timers rattar)

• Drill (jag använde en borrpress för att stansa hål som var tillräckligt stora för urtavlorna)

Material

• 1 Arduino Uno

• 1 halvstor brödbräda

• 3 H -broar (jag använde DRV8833, en motorsköld har sparat mig lite tid och huvudvärk)

• 3 stegmotorer (jag använde NEMA 17 stegmaskiner)

• 1 knapp

• 1 220-1K ohm motstånd (alla inom räckvidden är bra)

• AC/DC -adapter (jag använde en 12V, förmodligen för stor för denna mängd steg)

• Strömdelare

• USB A-B-kabel

• Brödbrätsledningar

• Lödning

• Material för behållare med timer

• Akryl för urtavlor

• Spikar eller metallpinnar för att fungera som en stationär arm för timern

Steg 1: Steg 1: Lödning och anslutningskrets utanför behållaren

För det här steget började jag med att lödda ihop alla mina H -broar (om du köper motorskölden borde du inte behöva lödda dessa. När du har en H -bro för varje steg kan du kontrollera hur dina steg är kopplade.

NEMA 17s är så kallade bipolära stegmotorer, vilket betyder att de har två (snarare än en) uppsättning spolar i motorn som ändrar polaritet för att möjliggöra exakt rörelse av motorn. Bipolära steppare har normalt fyra ledningar och Polar stepper har normalt sex, detta komplicerade instruktionerna lite på nätet. Du kan dock ansluta en multimätare till två ledningar och se om de är anslutna eller om de inte är det. NEMA 17 -stegarna har sin trådordning i RÖD, GUL, GRÅ, GRÖN färgfärg, där det röda och grå är det första polparet och det gula och gröna är det andra polparet. Om stegreglaget någon gång börjar rycka i stället för att slutföra den förväntade rörelsen, är oddsen att dina ledningar på något sätt inte är korrekt polariserade till deras tvilling eller att en är bortkopplad. Varje steg styrs via fyra utgångsstiften som ansluts till DRV8833 H -broarna. Ledningsbeställningen för ingången till DRV8833 är: IN1, IN2, Power, Ground, IN3, IN4. För utmatningsändamål ansluter NEMA bara till de fyra mitten av de sex stiften i storleksordningen: RÖD, GRÅ, GUL, GRÖN. Nu kan vi ansluta ström. Jag har mina NEMA på digitala portar 2–13.

För att driva detta köpte jag en 12V AC/DC -adapter med splitter för att kunna driva både Arduino och alla steg. VARNING: Anslut inte dina ström- och jordledningar från Arduino som redan tar emot ström från porten till brödbrädet som får direkt ström från AC/DC. Det kommer att steka din bräda. Från 12V -adaptern som är ansluten till väggen gick en del av splitteren direkt till Arduino -porten och den andra till det positiva och negativa på brödbrädet.

Slutligen är det dags att koppla in knappen. Ena sidan av knappen kommer att behöva både ström (med vårt motstånd skarvat in) såväl som utgångsstiftet som är lödt på (detta kan också göras från brödbrädan). Den andra stiftet blir vår mark. Dessa tre ledningar bör anslutas till: Effekt med motstånd till 5V, utgång till A0 och jord till jord allt på Arduino Uno -kortet själv.

Härifrån borde vi kunna försöka styra stepparna med hjälp av denna grundläggande stepper testkod som finns här. Denna förklaring på Arduino.cc gör också en mer grundlig förklaring av bi/unipolära steppers om du behöver det. Låt oss sedan komma in i koden för Pomodoro!

Steg 2: Steg 2: Ladda upp kod och anpassa den till dina behov

Steg 2: Ladda upp kod och anpassa den till dina behov
Steg 2: Ladda upp kod och anpassa den till dina behov

Nedan är koden för min Pomodoro med -knapp, för att anpassa den till din installation, följ dessa steg:

1. Ställ in hur många steg per varv din personliga stegtyp har (NEMA 17s har 200 och det listas i det konstanta heltalet som kallas stepsPerRevolution).

2. Ställ in var din knapp matas in i det konstanta heltalet som ringer upp knappenPin.

3. Ställ in varifrån din arduino ska matas ut för att styra stepparna (dessa delar kan variera mest mellan H -bryggtyper eftersom många har olika bibliotek de använder).

4. Ställ in steghastigheten i varvtal i.setSpeed (jag har min inställd på 1 varv / min när jag vrider medurs och 30 varv / min när du vrider moturs).

5. Ange hur många gånger du vill att var och en av dina stegare ska vända innan den går vidare (mina stegare räknar tio minuter, så de roterar tio gånger med 1 varv).

6 Ställ in hur länge du vill att den ska rotera bakåt.

#omfatta

const int stepsPerRevolution = 200; // ställa in konstant hur många steg som är i varje fullvarv av mina stegmotorer

const int buttonPin = A0; // inställningskonstant för min knappinmatning

Stepper firstStepper (stepsPerRevolution, 2, 3, 4, 5); // initiera stegbiblioteket på vissa stift

Stepper secondStepper (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepper (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // initiera stegbiblioteket på dessa stift för att kunna återställa varvtalet för när du varnar om att tiden har gått ut Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack (stepsPerRevolution, 10, 11, 12, 13);

int minutesCounter = 0; // int räknar fulla varv av steppare

int timerState = LÅG; // nuvarande tillstånd för pomodoro -timern (HIGH = on, LOW = off/reset) int buttonState; // den aktuella avläsningen från ingångsstiftet int lastButtonState = HIGH; // föregående avläsning från inmatningsnålen

// följande variabler är osignerade långa eftersom tiden, mätt i milisekunder, // blir snabbt ett större tal än vad som kan lagras i en int. osignerad lång lastDebounceTime = 0; // förra gången utgångsstiftet växlade osignerat långt debounceDelay = 50; // avbrottstiden; öka om utgången blinkar

void setup () {

pinMode (buttonPin, INPUT_PULLUP); // ställ in konstant knapp som ingång

firstStepper.setSpeed (1); // ställ in varvtalet vid 1 rpm för att räkna 10 minuter per steg sekundStepper.setSpeed (1); thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // ställ in varvtalet till 30 rpm för att meddela att tiden har gått ut efter att Pomodoro har slutfört secondStepperBack.setSpeed (30); thirdStepperBack.setSpeed (30);

Serial.begin (9600); // starta seriell bildskärm med 9600 baudhastighet

}

void loop () {

// läs läget för omkopplaren till en lokal variabel: int reading = digitalRead (buttonPin);

// kolla om du bara tryckte på knappen

// (dvs ingången gick från LÅG till HÖG), och du har väntat // tillräckligt länge sedan förra tryckningen för att ignorera brus:

// Om omkopplaren ändrades på grund av brus eller tryckning:

if (läsning! = lastButtonState) {// återställ timern för avstängning lastDebounceTime = millis (); } om ((millis () - lastDebounceTime)> debounceDelay) {// oavsett läsningen är på, har den funnits där längre // än avstängningsfördröjningen, så ta det som det aktuella nuvarande läget:

// om knappen har ändrats:

if (läsning! = buttonState) {buttonState = läsning;

// växla bara timeraktiveringen om det nya knappläget indikerar att den har tryckts in

// tryck en gång för att slå på, tryck igen för att stänga av om (buttonState == LOW) {timerState =! timerState; Serial.print ("Timer State is"); Serial.println (timerState); }}}

if (timerState == HIGH) {

Serial.println ("Pomodoro -timern har börjat"); if (minutesCounter <11) {// om det aktuella andra värdet är annorlunda än det föregående värdet då firstStepper.step (stepsPerRevolution); // vänd steg 200 steg/1 varv minuterCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (11 <= minutesCounter && minutesCounter <21) {// om det aktuella andra värdet är annorlunda än det föregående värdet sedan secondStepper.step (stepsPerRevolution); // vänd steg 200 steg/1 varv minuterCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (21 <= minutesCounter && minutesCounter <31) {// om det nuvarande andra värdet är annorlunda än det föregående värdet då thirdStepper.step (stepsPerRevolution); // vänd steg 200 steg/1 varv minuterCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (31 <= minutesCounter && minutesCounter <1031) {// om det aktuella andra värdet är annorlunda än det föregående värdet då firstStepperBack.step (-1); // vrid steget tillbaka 1 steg i följd för att se ut som att alla körs samtidigt secondStepperBack.step (-1); thirdStepperBack.step (-1); minutesCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }} else {Serial.println ("Pomodoro -timern är avstängd"); } // spara läsningen. Nästa gång genom slingan, // blir det lastButtonState: lastButtonState = läsning; }

Steg 3: Steg 3: Innehåll Steppers och Arduino om du vill

Steg 3: Innehåll Steppers och Arduino om du vill
Steg 3: Innehåll Steppers och Arduino om du vill
Steg 3: Innehåll Steppers och Arduino om du vill
Steg 3: Innehåll Steppers och Arduino om du vill
Steg 3: Innehåll Steppers och Arduino om du vill
Steg 3: Innehåll Steppers och Arduino om du vill

Jag valde att skapa en parallellogramform för min klocka. Denna form och materialvalen för röd ek inspirerades av moderna möbler från mitten av århundradet. En del som jag hade mest svårt med var att montera stegarna med urtavlor genom sina porthål för att ses från.

Rekommenderad: