Оглавление:
- Шаг 1: Шаг 1: Пайка и подключение цепи вне контейнера
- Шаг 2: Шаг 2: загрузка кода и настройка его в соответствии с вашими потребностями
- Шаг 3: Шаг 3: Добавьте степперы и Arduino, если хотите
Видео: Шаговый таймер Pomodoro: 3 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Stepper Pomodoro - это настольный таймер, который помогает управлять своим ежедневным списком задач, разбивая каждый период работы на 30-минутные сегменты. Однако, в отличие от обычного таймера Pomodoro, он не заставляет вас беспокоиться, показывая количество оставшегося времени. Вместо этого он отображает приблизительное время, с помощью которого тикает из трех циферблатов. Не показывая точное время, он позволяет вам фактически сосредоточиться на текущей задаче, а не постоянно проверять оставшееся время. Этот Pomodoro идеально подходит для тех, кому нужна легкая и ненавязчивая структура для управления задачами.
Инструменты
• Паяльник
• Устройства для зачистки проводов
• Лазерный резак (или шлифовальный станок в зависимости от того, как вы хотите создать циферблаты таймера)
• Сверло (я использовал сверлильный станок, чтобы пробить отверстия, достаточно большие для циферблатов)
Материалы
• 1 Arduino Uno
• 1 макет половинного размера
• 3 H-образных моста (я использовал DRV8833, моторный щит, который сэкономил мне время и избавил меня от головной боли)
• 3 шаговых двигателя (я использовал шаговые двигатели NEMA 17)
• 1 кнопка
• 1 резистор 220–1 кОм (любой в пределах допустимого диапазона)
• Адаптер переменного / постоянного тока (я использовал 12 В, вероятно, слишком большой для такого количества шаговых двигателей)
• Разветвитель мощности
• Провод USB A-B
• Макетные провода
• Припой
• Материалы для контейнера таймера.
• Акрил для циферблатов.
• Гвозди или металлические штифты в качестве неподвижного рычага таймера.
Шаг 1: Шаг 1: Пайка и подключение цепи вне контейнера
Для этого шага я начал с пайки вместе всех моих H-образных мостов (если вы покупаете моторный щит, вам не нужно их паять. Когда у вас есть H-мост для каждого шагового двигателя, вы можете проверить, как подключены ваши шаговые двигатели.
NEMA 17 - это так называемые биполярные шаговые двигатели, что означает, что они имеют две (а не одну) группу катушек внутри двигателя, которые меняют полярность, чтобы обеспечить точное движение двигателя. Биполярные шаговые двигатели обычно имеют четыре провода, а полярные степперы - шесть, что немного усложняет онлайн-инструкции. Однако вы можете прикрепить мультиметр к двум проводам и посмотреть, подключены ли они или нет. Шаговые двигатели NEMA 17 имеют порядок проводов в порядке цветов КРАСНЫЙ, ЖЕЛТЫЙ, СЕРЫЙ, ЗЕЛЕНЫЙ, причем красный и серый являются первой полярной парой, а желтый и зеленый - второй полярной парой. Если в какой-то момент шаговый двигатель начинает дергаться, а не завершает ожидаемое движение, скорее всего, ваши провода каким-то образом неправильно поляризованы по отношению к своему двойнику или один из них отключен. Каждый шаговый двигатель управляется четырьмя выходными контактами, которые подключаются к мостам DRV8833 H. Порядок подключения входа к DRV8833: IN1, IN2, Power, Ground, IN3, IN4. Для вывода данных NEMA просто подключается к четырем средним из шести контактов в следующем порядке: КРАСНЫЙ, СЕРЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ. Теперь давайте подключим питание. У меня есть NEMA на цифровых портах 2–13.
Для питания я купил адаптер переменного / постоянного тока 12 В со сплиттером, чтобы иметь возможность питать как Arduino, так и все степперы. ВНИМАНИЕ: не подключайте провода питания и заземления от Arduino, уже получающего питание от порта, к макетной плате, получающей прямое питание от переменного / постоянного тока. Это поджарит вашу доску. От адаптера 12 В, подключенного к стене, одна часть разветвителя шла прямо к порту Arduino, а другая - к плюсу и минусу макетной платы.
Наконец, пора подключить кнопку. На одной стороне кнопки потребуется как питание (со вставленным резистором), так и припаянный выходной контакт (это также можно сделать с макетной платы). Другой штифт будет нашей землей. Эти три провода должны быть подключены: питание с резистором на 5 В, выход на A0 и заземление на землю - все на самой плате Arduino Uno.
Отсюда мы сможем попытаться управлять шаговыми двигателями, используя этот базовый тестовый код шагового двигателя, найденный здесь. Это объяснение на Arduino.cc также дает более подробное объяснение би / униполярных шаговых двигателей, если вам это нужно. Теперь давайте перейдем к коду Pomodoro!
Шаг 2: Шаг 2: загрузка кода и настройка его в соответствии с вашими потребностями
Ниже приведен код моего Pomodoro с кнопкой, чтобы настроить его в соответствии с вашими настройками, выполните следующие действия:
1. Установите, сколько шагов на оборот имеет ваш персональный тип шагового двигателя (NEMA 17 имеет 200, и это указано в виде постоянного целого числа, называемого stepsPerRevolution).
2. Установите, где ваша кнопка вводит данные, в постоянном целочисленном значении buttonPin вызывающего объекта.
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); // инициализируем библиотеку шагового двигателя на определенных выводах
Шаговый секундомер secondStepper (stepsPerRevolution, 6, 7, 8, 9); Шаговый третийStepper (stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack (stepsPerRevolution, 2, 3, 4, 5); // повторно инициализируем библиотеку шагового двигателя на этих выводах, чтобы иметь возможность сбросить обороты при предупреждении об истечении времени Stepper secondStepperBack (stepsPerRevolution, 6, 7, 8, 9); Шаговый третийStepperBack (stepsPerRevolution, 10, 11, 12, 13);
int minutesCounter = 0; // int подсчет полных оборотов шаговых двигателей
int timerState = LOW; // текущее состояние таймера pomodoro (HIGH = on, LOW = off / reset) int buttonState; // текущее чтение с входного вывода int lastButtonState = HIGH; // предыдущее чтение с входного пина
// следующие переменные являются беззнаковыми длинными, потому что время, измеряемое в миллисекундах, // быстро станет большим числом, чем может быть сохранено в int. беззнаковый длинный lastDebounceTime = 0; // последний раз, когда выходной контакт был переключен unsigned long debounceDelay = 50; // время дребезга; увеличивать, если вывод мерцает
void setup () {
pinMode (buttonPin, INPUT_PULLUP); // устанавливаем константу кнопки в качестве входа
firstStepper.setSpeed (1); // устанавливаем скорость 1 об / мин для отсчета 10 минут на шаговый секундомер secondStepper.setSpeed (1); thirdStepper.setSpeed (1); firstStepperBack.setSpeed (30); // устанавливаем скорость 30 об / мин для предупреждения об истечении времени после завершения Pomodoro secondStepperBack.setSpeed (30); thirdStepperBack.setSpeed (30);
Serial.begin (9600); // запускаем последовательный монитор со скоростью 9600 бод
}
void loop () {
// считываем состояние переключателя в локальную переменную: int read = digitalRead (buttonPin);
// проверяем, только что нажали ли вы кнопку
// (т.е. вход перешел с НИЗКОГО на ВЫСОКИЙ), и вы ждали // достаточно долго с момента последнего нажатия, чтобы игнорировать любой шум:
// Если переключатель изменился из-за шума или нажатия:
if (reading! = lastButtonState) {// сбрасываем таймер устранения дребезга lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// независимо от того, на каком уровне чтения, оно существует дольше, // чем задержка противодействия, поэтому примите это как фактическое текущее состояние:
// если состояние кнопки изменилось:
если (чтение! = buttonState) {buttonState = чтение;
// только переключаем активацию таймера, если новое состояние кнопки указывает, что она была нажата
// нажмите один раз, чтобы включить, нажмите еще раз, чтобы выключить if (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); // поворачиваем шаговый двигатель назад на 1 шаг по порядку, как будто все работают одновременно secondStepperBack.step (-1); thirdStepperBack.step (-1); minutesCounter ++; Serial.print ("minutesCounter is"); Serial.println (minutesCounter); }} else {Serial.println («Таймер Pomodoro выключен»); } // сохраняем чтение. // В следующий раз в цикле это будет lastButtonState: lastButtonState = reading; }
Шаг 3: Шаг 3: Добавьте степперы и Arduino, если хотите
Я решил создать для своих часов параллелограммную форму. Эта форма и выбор материала красного дуба были вдохновлены современной мебелью середины века. Одна часть, с которой у меня возникли наибольшие трудности, заключалась в установке степперов с циферблатами через их иллюминаторы, чтобы их было видно.
Рекомендуемые:
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS): 3 шага
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS): Вы когда-нибудь задумывались о том, что вам ПРОСТО нужно было превратить в мини-проект? Ну, я играл с наброском, который я сделал для Arduino Due, предназначенным для создания музыки с модулем прямого цифрового синтеза (DDS) AD9833 … и в какой-то момент я подумал & q
Шаговый двигатель, управляемый шаговым двигателем - Шаговый двигатель как поворотный энкодер: 11 шагов (с изображениями)
Шаговый двигатель, управляемый шаговым двигателем | Шаговый двигатель как поворотный энкодер: у вас есть пара шаговых двигателей, и вы хотите что-то сделать? В этом руководстве давайте использовать шаговый двигатель в качестве поворотного энкодера для управления положением другого шагового двигателя с помощью микроконтроллера Arduino. Итак, без лишних слов, давайте
Шаговый двигатель с D-триггерами и таймером 555; Первая часть схемы Таймер 555: 3 шага
Шаговый двигатель с D-триггерами и таймером 555; Первая часть схемы Таймер 555: Шаговый двигатель - это двигатель постоянного тока, который движется дискретными шагами. Он часто используется в принтерах и даже в робототехнике. Я объясню эту схему поэтапно. Первая часть схемы - это 555 таймер. Это первое изображение (см. Выше) с микросхемой 555 с
ТАЙМЕР ТЕХНИКИ POMODORO - ПРОСТОЕ ИСПОЛЬЗОВАНИЕ АППАРАТНОГО УСТРОЙСТВА ДЛЯ УПРАВЛЕНИЯ ВРЕМЕНИ: 4 шага
ТАЙМЕР ТЕХНИКИ ПОМОДОРО - ЛЕГКОЕ ИСПОЛЬЗОВАНИЕ АППАРАТНОГО УСТРОЙСТВА ДЛЯ УПРАВЛЕНИЯ ВРЕМЕНИ: 1. Что это такое? Техника «Помодоро» - это навык управления временем, который делит рабочее время на 25-минутный блок и следует за 5-минутным перерывом. подробности, как показано ниже: https: //francescocirillo.com/pages/pomodoro-techni…Этот таймер прост в использовании, если
Шаговый двигатель с линейным приводом: 3 шага (с изображениями)
Шаговый двигатель с линейным приводом: чтобы преобразовать вращательное движение шагового двигателя в линейное движение, шаговый двигатель соединен с резьбой. На резьбе мы используем латунную гайку, которая не может вращаться. С каждым оборотом резьбы латунная гайка перемещается в осевом направлении