/
nkarbofos
/
PressAutomation
Обзор
Документация
Войти
/
nkarbofos
/
PressAutomation
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
code/PressAutomationCode/src/motor/motor.cpp
64 строки
2 KB
Nikita
fix: minor fixes, added params to display
25 июн 2026, 13:58
25 июн 2026, 13:58
ab77611
Код
Авторство
О чём код?
#include "motor.h" #include <Arduino.h> #include "app_state.h" #include "config.h" #include "display.h" #include "interrupts.h" #include "encoder.h" void initMotors() { pinMode(STEP_1, OUTPUT); pinMode(DIR_1, OUTPUT); pinMode(EN_1, OUTPUT); digitalWrite(EN_1, HIGH); pinMode(STEP_2, OUTPUT); pinMode(DIR_2, OUTPUT); pinMode(EN_2, OUTPUT); digitalWrite(EN_2, HIGH); } void disableMotors() { digitalWrite(EN_1, HIGH); digitalWrite(EN_2, HIGH); } int rotateMotorSteps(int stepPin, int dirPin, int enPin, int steps, bool clockwise, bool isValve) { if (isValve) { OutdateButtonHold(); } digitalWrite(enPin, LOW); digitalWrite(dirPin, clockwise ? HIGH : LOW); for (int i = 0; i < steps; i++) { updateButton(); if (isButtonTapPending() || isButtonHoldActive() || limitTriggered) { digitalWrite(enPin, HIGH); return i; } digitalWrite(stepPin, HIGH); delayMicroseconds(2); digitalWrite(stepPin, LOW); unsigned long delayUs = !isValve ? currentSpeedUs : MOTOR2_SPEED_US; unsigned long elapsed = 0; while (elapsed < delayUs) { unsigned long chunk = min((unsigned long)MOTOR1_SPEED_US_CHUNK, delayUs - elapsed); delayMicroseconds(chunk); elapsed += chunk; potUpdate(); updateButton(); updateDisplayIfNeeded(); if (isButtonTapPending() || isButtonHoldActive() || limitTriggered) { digitalWrite(enPin, HIGH); return i; } } } digitalWrite(enPin, HIGH); return steps; }