Съдържание:
- Стъпка 1: Стъпка 1: Запояване и свързваща верига извън контейнера
- Стъпка 2: Стъпка 2: Качване на код и адаптиране към вашите нужди
- Стъпка 3: Стъпка 3: Съберете степерите и Arduino, ако желаете
Видео: Стъпков таймер Pomodoro: 3 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Stepper Pomodoro е настолен таймер, който помага на човек да управлява ежедневния си списък със задачи, като разделя всеки период на работа на 30 -минутни сегменти. Въпреки това, за разлика от обикновения таймер на Pomodoro, той не ви притеснява, като показва оставащото време. Вместо това той показва приблизително времето, през което от трите циферблата тиктака. Като не показва точното време, това ви позволява всъщност да се съсредоточите върху текущата задача, а не постоянно да проверявате оставащото си време. Този Pomodoro е идеален за тези, които се нуждаят от лека и ненатрапчива структура за управление на своите задачи.
Инструменти
• Поялник
• Машини за сваляне на тел
• Лазерен нож (или шлайфмашина в зависимост от това как искате да създадете циферблатите на таймера)
• Свредло (използвах бормашина за пробиване на достатъчно големи отвори за циферблатите)
Материали
• 1 Arduino Uno
• 1 половин размер макет
• 3 H моста (използвах DRV8833, щитът на двигателя би ми спестил известно време и главоболие)
• 3 стъпкови двигателя (използвах стъпала NEMA 17)
• 1 бутон
• 1 220-1K ом резистор (всеки в обхвата е добър)
• AC/DC адаптер (използвах 12V, вероятно твърде голям за това количество степери)
• Сплитер за захранване
• USB A-B проводник
• Проводници
• Припой
• Материали за контейнер на таймер
• Акрил за циферблати
• Гвоздеи или метални щифтове да служат като неподвижно рамо на таймера
Стъпка 1: Стъпка 1: Запояване и свързваща верига извън контейнера
За тази стъпка започнах като запоявам всички мои H мостове (ако закупите щита на двигателя, не е нужно да ги запоявате. След като имате H мост за всеки стъпър, можете да проверите как са свързани вашите степери.
NEMA 17 са известни като биполярни стъпкови двигатели, което означава, че те имат два (а не един) набор от намотки в двигателя, които променят полярността, за да позволят прецизно движение на двигателя. Биполярните степери обикновено имат четири проводника, а полярните степери обикновено имат шест, което малко усложни инструкциите онлайн. Можете обаче да свържете мултиметър към два проводника и да видите дали са свързани или не. Степерите на NEMA 17 имат своя ред в червен, жълт, сив, зелен цвят, като червеното и сивото са първата полярна двойка, а жълтото и зеленото са втората полярна двойка. Ако в даден момент стъпката започне да се потрепва, вместо да завърши очакваното движение, има вероятност кабелите ви по някакъв начин да не са правилно поляризирани към своя близнак или един да е изключен. Всеки стъпър се управлява чрез четири изходни щифта, които се свързват към мостовете DRV8833 H. Редът на свързване на входа към DRV8833 е: IN1, IN2, Захранване, Земя, IN3, IN4. За целите на изхода NEMA просто се свързва към средните четири от шестте пина в реда на: ЧЕРВЕН, СИВ, ЖЪЛТ, ЗЕЛЕН. Сега нека свържем захранването. Имам моите NEMA на цифрови портове 2–13.
За да захранвам това, закупих 12V AC/DC адаптер с сплитер, за да мога да захранвам както Arduino, така и всички степери. ПРЕДУПРЕЖДЕНИЕ: Не свързвайте захранващите и заземяващите проводници от Arduino, които вече получават захранване от порта, към макета, който получава директно захранване от AC/DC. Това ще изпържи дъската ви. От 12V адаптера, включен в стената, едната част на сплитера отива направо към порта на Arduino, а другата към положителното и отрицателното на дъската за хляб.
И накрая, време е да свържете бутона. Едната страна на бутона ще се нуждае както от захранване (с включен наш резистор), така и от изходен щифт, запоен (това може да се направи и от макета). Другият щифт ще бъде нашата земя. Тези три проводника трябва да бъдат включени: Захранване с резистор до 5V, изход към A0 и заземяване всички на самата платка Arduino Uno.
Оттук би трябвало да можем да се опитаме да контролираме степерите, като използваме този основен код за стъпков тест, намерен тук. Това обяснение на Arduino.cc също прави по -задълбочено обяснение на би/униполярни стъпала, ако имате нужда от него. След това нека влезем в кода за Pomodoro!
Стъпка 2: Стъпка 2: Качване на код и адаптиране към вашите нужди
По -долу е кодът за моето Pomodoro с бутон, за да го персонализирате според вашата настройка, следвайте тези стъпки:
1. Задайте колко стъпки на оборот има вашият личен тип стъпало (NEMA 17 имат 200 и е посочено в постоянното цяло число, наречено stepsPerRevolution).
2. Задайте мястото, където вашият бутон въвежда, в бутона за постоянен номер на обаждащия се Pin.
3. Задайте откъде трябва да извежда вашият arduino, за да командвате степерите (тези части могат да варират най -много между типовете H мостове, тъй като много от тях използват различни библиотеки).
4. Задайте стъпковата скорост в обороти в.setSpeed (моята е зададена за 1 об / мин при завъртане по часовниковата стрелка и 30 об / мин при завъртане обратно на часовниковата стрелка).
5. Задайте колко пъти искате всеки от вашите степери да се завърти, преди да продължи (моите степери броят десет минути, така че те се въртят десет пъти с 1 об / мин).
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 (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // повторно инициализиране на степърната библиотека на тези пинове, за да може да се нулира оборотите за, когато се предупреди, че времето е изтекло Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack (stepsPerRevolution, 10, 11, 12, 13);
int minutesCounter = 0; // int броене на пълни обороти на стъпките
int timerState = НИСКО; // текущото състояние на таймера на pomodoro (HIGH = on, LOW = off/reset) int buttonState; // текущото отчитане от входния щифт int lastButtonState = HIGH; // предишното отчитане от входния щифт
// следните променливи са без знаци, тъй като времето, измерено в милисекунди, // бързо ще стане по -голямо число, отколкото може да се съхранява в int. unsigned long lastDebounceTime = 0; // последният път, когато изходният щифт е бил превключен unsigned long debounceDelay = 50; // времето за деблокиране; увеличете, ако изходът трепти
void setup () {
pinMode (buttonPin, INPUT_PULLUP); // задаваме константа на бутона като вход
firstStepper.setSpeed (1); // настройваме скоростта на 1 об/ мин за отчитане на 10 минути на стъпкова секундаStepper.setSpeed (1); thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // задаваме скоростта на 30 об/ мин за предупреждение, че времето е изтекло след като Pomodoro е завършил secondStepperBack.setSpeed (30); thirdStepperBack.setSpeed (30);
Serial.begin (9600); // стартиране на сериен монитор с 9600 бод скорост
}
void loop () {
// чете състоянието на превключвателя в локална променлива: int reading = digitalRead (buttonPin);
// проверете дали просто сте натиснали бутона
// (т.е. входът е от LOW до HIGH) и сте чакали // достатъчно дълго от последното натискане, за да игнорирате шума:
// Ако превключвателят се е променил, поради шум или натискане:
if (четене! = lastButtonState) {// нулиране на таймера за отстраняване lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// каквото и да е показанието, то е там по -дълго // от забавянето на debounce, така че го вземете като действително текущо състояние:
// ако състоянието на бутона се е променило:
if (четене! = buttonState) {buttonState = четене;
// превключваме активирането на таймера само ако новото състояние на бутона показва, че е натиснато
// натиснете веднъж, за да включите, натиснете отново, за да изключите, ако (buttonState == LOW) {timerState =! timerState; Serial.print ("Състояние на таймера е"); Serial.println (timerState); }}}
if (timerState == HIGH) {
Serial.println ("Pomodoro timer has started"); if (minutesCounter <11) {// ако текущата втора стойност е различна от предишната, тогава firstStepper.step (stepsPerRevolution); // завъртане на степер 200 стъпки/1 оборотни минутиCounter ++; Serial.print ("minutesCounter е"); Serial.println (минутиCounter); }
if (11 <= minutesCounter && minutesCounter <21) {// ако текущата втора стойност е различна от предишната, тогава secondStepper.step (stepsPerRevolution); // завъртане на степер 200 стъпки/1 оборотни минутиCounter ++; Serial.print ("minutesCounter е"); Serial.println (минутиCounter); }
if (21 <= minutesCounter && minutesCounter <31) {// ако текущата втора стойност е различна от предишната, тогава thirdStepper.step (stepsPerRevolution); // завъртане на степер 200 стъпки/1 оборотни минутиCounter ++; Serial.print ("minutesCounter е"); Serial.println (минутиCounter); }
if (31 <= minutesCounter && minutesCounter <1031) {// ако текущата втора стойност е различна от предишната стойност firstStepperBack.step (-1); // завъртаме стъпката назад 1 стъпка в последователност, за да изглежда, че всички работят едновременно secondStepperBack.step (-1); thirdStepperBack.step (-1); минутиCounter ++; Serial.print ("minutesCounter е"); Serial.println (минутиCounter); }} else {Serial.println ("Таймерът на Pomodoro е изключен"); } // запишете показанията. Следващия път през цикъла, // това ще бъде последният ButtonState: lastButtonState = четене; }
Стъпка 3: Стъпка 3: Съберете степерите и Arduino, ако желаете
Избрах да създам паралелографска форма за часовника си. Тази форма и материалният избор на червен дъб са вдъхновени от модерните мебели от средата на века. Една част, с която имах най -големи затруднения, беше поставянето на степерите с циферблати през илюминаторите им, от които да се вижда.
Препоръчано:
Стъпков двигател Контролиран стъпков двигател без микроконтролер!: 6 стъпки
Стъпков двигател, управляван от стъпков двигател без микроконтролер !: В тази бърза инструкция ще направим прост контролер за стъпков двигател, използващ стъпков двигател. Този проект не изисква сложни схеми или микроконтролер. Така че, без да се замисляме, нека започнем
Стъпков двигател Контролиран стъпков двигател без микроконтролер (V2): 9 стъпки (със снимки)
Стъпков двигател, управляван от стъпков двигател без микроконтролер (V2): В една от предишните ми инструкции, аз ви показах как да управлявате стъпков двигател, използвайки стъпков двигател без микроконтролер. Това беше бърз и забавен проект, но той дойде с два проблема, които ще бъдат решени в тази инструкция. И така, остроумие
Модел локомотив със стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки)
Модел локомотив със стъпков двигател | Стъпков двигател като въртящ се енкодер: В една от предишните инструкции научихме как да използваме стъпков двигател като въртящ се енкодер. В този проект сега ще използваме въртящия се енкодер със стъпков двигател, за да управляваме модел локомотив, използвайки микроконтролер Arduino. Така че, без fu
Стъпков двигател Контролиран стъпков двигател - Стъпков двигател като въртящ се енкодер: 11 стъпки (със снимки)
Стъпков двигател Контролиран стъпков двигател | Стъпков двигател като въртящ се енкодер: Имате ли няколко стъпкови двигателя, които лежат наоколо и искат да направят нещо? В тази инструкция нека използваме стъпков двигател като въртящ се енкодер, за да контролираме позицията на друг стъпков двигател, използвайки микроконтролер Arduino. Така че без да се замисляме, нека да
Стъпков двигател с D джапанки и таймер 555; първата част на веригата 555 Таймер: 3 стъпки
Стъпков двигател с D джапанки и таймер 555; първата част от веригата 555 Таймер: Стъпковият двигател е DC двигател, който се движи на дискретни стъпки. Често се използва в принтери и дори роботика. Ще обясня тази схема на стъпки. Първата част на веригата е 555 таймер. Това е първото изображение (вижте по -горе) с чип 555 с