Мазмуну:

Step Pomodoro таймери: 3 кадам (сүрөттөр менен)
Step Pomodoro таймери: 3 кадам (сүрөттөр менен)

Video: Step Pomodoro таймери: 3 кадам (сүрөттөр менен)

Video: Step Pomodoro таймери: 3 кадам (сүрөттөр менен)
Video: Bandana 2024, Июль
Anonim
Image
Image
1 -кадам: Контейнердин сыртында ширетүү жана туташтыруу
1 -кадам: Контейнердин сыртында ширетүү жана туташтыруу

Stepper Pomodoro - бул иштин ар бир мезгилин 30 мүнөттүк сегменттерге бөлүү менен күнүмдүк тапшырмалар тизмесин башкарууга жардам берүү үчүн стол таймери. Бирок, кадимки Pomodoro таймеринен айырмаланып, калган убакытты көрсөтүү менен сизди тынчсыздандырбайт. Тескерисинче, ал болжол менен үч терүүнүн кайсынысы аркылуу өтүп жатканын көрсөтөт. Убакытты так көрсөтпөстөн, бул сиздин колуңуздагы тапшырманы аткарууга багыттоого мүмкүндүк берет, тескерисинче, убактыңызды такай текшерип турат. Бул Pomodoro тапшырмаларды башкарууга жеңил жана көзгө көрүнбөгөн структурага муктаж болгондор үчүн идеалдуу.

Куралдар

• Кандооч

• Сымдан тазалагычтар

• Лазердик кескич (же таймердин тергичтерин кантип түзгүңүз келгенине жараша Сандер)

• Бургулоо (терүү үчүн жетиштүү чоң тешиктерди тешүү үчүн бургулоочу прессти колдондум)

Материалдар

• 1 Arduino Uno

• 1 жарым өлчөмдөгү нан

• 3 H көпүрөсү (мен DRV8833 колдондум, мотор калканы мага бир аз убакытты жана башымды сактап калды)

• 3 тепкичтүү мотор (мен NEMA 17 тепкичтерин колдондум)

• 1 Баскыч

• 1 220-1K ом каршылыгы (ар кандай чектерде жакшы)

• AC/DC адаптери (мен 12В колдондум, балким бул кадам үчүн өтө чоң)

• Күч бөлүштүргүч

• USB A-B зымы

• Банндын зымдары

• Solder

• Таймердин контейнери үчүн материалдар

• Терүү үчүн акрил

• Мыктар же металл казыктар таймердин кыймылсыз колу катары иштейт

1 -кадам: 1 -кадам: Контейнердин сыртында ширетүү жана туташтыруу

Бул кадам үчүн мен бардык H көпүрөлөрүмдү ширетүүдөн баштадым (эгер сиз мотор калканчын сатып алсаңыз, анда буларды ширетүүнүн кажети жок. Ар бир тепкичке H көпүрөсү болгондон кийин, сиздин степперлериңиздин кантип зымдалганын текшере аласыз.

NEMA 17лер биполярдык тепкичтүү моторлор деп аталат, башкача айтканда, мотордун ичинде кыймылдын так кыймылына мүмкүндүк берүү үчүн полярдыкты өзгөрткөн эки (бир эмес) катушкалар бар. Адатта биполярдык степперлерде төрт зым, адатта полярдык степерлерде алты болот, бул интернеттеги көрсөтмөлөрдү бир аз татаалдаштырат. Бирок сиз эки зымга мультиметрди туташтырсаңыз болот жана алар туташканбы же жокпу, көрө аласыз. NEMA 17 тепкичтеринин зым тартиби КЫЗЫЛ, САРЫ, Боз, Жашыл түстүү тартипте болот, кызыл жана боз биринчи полярдык жуп, сары жана жашыл экинчи полярдык жуп. Эгерде кандайдыр бир учурда тепкич күтүлгөн кыймылды бүтүрбөй, чымырай баштаса, анда сиздин зымдарыңыз эгиздерине кандайдыр бир жол менен туура эмес поляризацияланган эмес же бири ажыратылган. Ар бир тепкич DRV8833 H көпүрөлөрүнө туташкан төрт чыгуу казыгы аркылуу башкарылат. DRV8833 киргизүү үчүн зым тартиби: IN1, IN2, Power, Ground, IN3, IN4. Чыгуу максаттары үчүн NEMA жөн эле алты казыктын төртүнө туташат: КЫЗЫЛ, Боз, САРЫ, ЖАШЫЛ. Эми бийликти туташтырабыз. Менин NEMAларым 2-13 санарип портторунда бар.

Муну кубаттоо үчүн мен Arduino жана бардык тепкичтерди кубаттай алгыдай 12V AC/DC адаптерин бөлгүч менен сатып алдым. ЭСКЕРТҮҮ: Ардуинодон кубаттуулугуңузду жана жерге туташтыруучу зымдарды порттон электр кубатын AC/DCден алынган нанга туташтырбаңыз. Бул тактаңызды куурат. 12V адаптерден дубалга сайылган бөлгүчтүн бир бөлүгү түз Ардуинонун портуна, экинчиси нан тактасынын оң жана терс жактарына кеткен.

Акырында, баскычты илип коюуга убакыт келди. Баскычтын бир тарабына кубат (резисторубуз кошулган), ошондой эле туташтырылган чыгаруу пини керек болот (муну нан тактасынан да жасаса болот). Башка пин биздин жерибиз болот. Бул үч зым туташтырылышы керек: 5V каршылыгы бар кубат, A0ге чыгаруу жана жерге Arduino Uno тактасынын баарына жерге туташтыруу.

Бул жерден биз бул жерде табылган негизги кадам тест тест кодун колдонуп, тепкичтерди башкарууга аракет кылышыбыз керек. Arduino.ccтеги бул түшүндүрмө, эгер сизге керек болсо, би/бир полярдуу степперлер жөнүндө дагы кылдат түшүндүрмө берет. Кийинки, Помодоронун кодуна кирели!

2 -кадам: 2 -кадам: Кодду жүктөө жана аны керектөөлөрүңүзгө тууралоо

2 -кадам: Кодду жүктөө жана аны керектөөлөрүңүзгө тууралоо
2 -кадам: Кодду жүктөө жана аны керектөөлөрүңүзгө тууралоо

Төмөндө баскыч менен Pomodoro үчүн код бар, аны орнотууңузга ыңгайлаштыруу үчүн бул кадамдарды аткарыңыз:

1. Жеке кадамыңыздын бир түрүндө канча кадам болгондугун белгилеңиз (NEMA 17лерде 200 бар жана ал StepPerRevolution деп аталган туруктуу бүтүн санда көрсөтүлгөн).

2. Кнопкаңызды киргизүүчү жерди коюңуз, дайыма чалуучу buttonPin.

3. Степперлерге буйрук берүү үчүн сиздин arduino кайсы жерден чыгышы керектигин коюңуз (бул бөлүктөр H көпүрөсүнүн түрлөрүнүн ортосунда эң көп айырмаланышы мүмкүн, анткени алардын китепканаларында ар кандай китепканалар бар).

4. SetSpeedдеги RPMлерде степпердин ылдамдыгын орнотуңуз (меники сааттын жебеси боюнча бурулганда 1 rpm жана сааттын жебесине каршы бурулганда 30 rpm).

5. Ар бир кадамыңыздын кыймылга келгиче канча жолу бурулушун каалаганыңызды коюңуз (менин степперлерим он мүнөттү эсептешет, андыктан алар 1 RPMде он жолу айланат).

6 Качанкыга чейин артка бурулушун каалайсыз.

#кошуу

const int stepsPerRevolution = 200; // менин степпердик моторлорумдун ар бир толук айлануусунда канча кадам бар экендигинин константасы

const int buttonPin = A0; // баскычымдын киришинин константасын коюу

Stepper firstStepper (stepsPerRevolution, 2, 3, 4, 5); // айрым казыктарда кадам китепканасын инициализациялоо

Stepper secondStepper (stepsPerRevolution, 6, 7, 8, 9); Stepper ThirdStepper (StepPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // бул казыктардагы степпер китепканасын кайра баштоо үчүн, бул убакыт бүткөнүн эскертүү үчүн, rpm'ди баштапкы абалга келтирүү үчүн StepSt secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper ThirdStepperBack (stepsPerRevolution, 10, 11, 12, 13);

int minutesCounter = 0; // int кадамдардын толук революцияларын эсептөө

int timerState = LOW; // pomodoro таймеринин учурдагы абалы (HIGH = on, LOW = off/reset) int buttonState; // киргизүү пинден учурдагы окуу int lastButtonState = HIGH; // киргизүү пинден мурунку окуу

// төмөнкү өзгөрмөлөргө кол коюлбайт, анткени убакыт миллисекунд менен өлчөнөт, // int ичинде сакталгандан тез эле чоңураак болуп калат. unsigned long lastDebounceTime = 0; // акыркы жолу чыкылдатуу колу коюлбай калды debounceDelay = 50; // чыгуу убактысы; чыгаруу жылтылдаса көбөйтүү

жараксыз орнотуу () {

pinMode (buttonPin, INPUT_PULLUP); // баскычтын константасын киргизүү катары коюңуз

firstStepper.setSpeed (1); // секундасына 10 мүнөттү эсептөө үчүн ылдамдыкты 1 rpmге коюңузStepper.setSpeed (1); ThirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // Pomodoro secondStepperBack.setSpeed (30) аяктагандан кийин убакыт бүткөнүн эскертүү үчүн ылдамдыкты 30 rpmга коюңуз; ThirdStepperBack.setSpeed (30);

Serial.begin (9600); // 9600 байдын ылдамдыгы менен сериялык мониторду баштаңыз

}

void loop () {

// которгучтун абалын жергиликтүү өзгөрмөгө окуңуз: int reading = digitalRead (buttonPin);

// баскычты эле басканыңызды текшериңиз

// (б.а. кириш ТӨМӨНДӨН ЖОГОРУГА өттү), жана сиз // акыркы басуудан бери эч кандай ызы -чууну этибарга албай туруу үчүн // көпкө күттүңүз:

// Эгерде которгуч ызы -чуудан же басуудан улам өзгөрсө:

if (reading! = lastButtonState) {// өчүрүү таймерин баштапкы абалга келтирүү lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// кандай гана окуу болбосун, ал узартуунун кечигүүсүнө караганда // узак убакыт бою болгон, андыктан аны учурдагы абал катары кабыл алыңыз:

// эгерде баскычтын абалы өзгөрсө:

if (reading! = buttonState) {buttonState = окуу;

// жаңы баскычтын абалы басылганын көрсөтсө гана таймердин активациясын которгула

// күйгүзүү үчүн бир жолу басыңыз, өчүрүү үчүн дагы бир жолу басыңыз (buttonState == LOW) {timerState =! timerState; Serial.print ("Таймердин абалы"); Serial.println (timerState); }}}

if (timerState == HIGH) {

Serial.println ("Pomodoro таймери башталды"); if (minutesCounter <11) {// эгерде учурдагы экинчи мааниси мурунку мааниден айырмаланса, анда firstStepper.step (stepsPerRevolution); // кадам таштоо 200 кадам/1 айлануу мүнөтү Counter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (11 <= minutesCounter && minutesCounter <21) {// эгерде учурдагы экинчи маани мурунку мааниден айырмаланса, анда secondStepper.step (stepsPerRevolution); // кадам таштоо 200 кадам/1 айлануу мүнөтү Counter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (21 <= minutesCounter && minutesCounter <31) {// эгерде учурдагы экинчи маани мурунку мааниден айырмаланса, анда ThirdStepper.step (stepsPerRevolution); // кадам таштоо 200 кадам/1 айлануу мүнөтү Counter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }

if (31 <= minutesCounter && minutesCounter <1031) {// эгерде учурдагы экинчи маани мурунку мааниден айырмаланса, анда firstStepperBack.step (-1); // кадамды артка буруңуз, баары бир убакта иштеп жаткан сыяктуу көрүнүү үчүн ырааттуулук менен экинчи кадам SecondStepperBack.step (-1); ThirdStepperBack.step (-1); minutesCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }} else {Serial.println ("Pomodoro таймери өчүк"); } // окууну сактоо. Кийинки жолу цикл аркылуу // бул lastButtonState болот: lastButtonState = окуу; }

3 -кадам: 3 -кадам: Кааласаңыз, Steppers жана Arduino камтылган

3 -кадам: Кааласаңыз, Steppers жана Arduino камтылган
3 -кадам: Кааласаңыз, Steppers жана Arduino камтылган
3 -кадам: Кааласаңыз, Steppers жана Arduino камтылган
3 -кадам: Кааласаңыз, Steppers жана Arduino камтылган
3 -кадам: Кааласаңыз, Steppers жана Arduino камтылган
3 -кадам: Кааласаңыз, Steppers жана Arduino камтылган

Мен саатым үчүн параллелограмм формасын түзүүнү чечтим. Бул эмендин формасы жана материалдык тандоолору орто кылымдын заманбап эмеректеринен шыктандырылган. Мен үчүн эң кыйын болгон жердин бири, тепкичтерди иллюминаторлору аркылуу көрүүгө болот.

Сунушталууда: