Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Подключение пинов
- const int ledPin = 13; // Пин встроенного светодиода для контроля STEP
- const int stepPin = 2; // Пин для STEP
- const int dirPin = 3; // Пин для DIR
- const int button1Pin = 6; // Пин для первой кнопки
- const int button2Pin = 7; // Пин для второй кнопки
- // Переменная для управления скоростью (частота шагов)
- void stepMotor(); // Прототип функции
- void setStepFrequency(unsigned int frequency); // Прототип функции
- void setStepFrequency(unsigned int frequency); // Прототип функции
- unsigned int stepDelay = 500; // Задержка в микросекундах (по умолчанию 500)
- void setup() {
- pinMode(ledPin, OUTPUT); // Настройка пина светодиода
- // Настройка пинов
- pinMode(stepPin, OUTPUT);
- pinMode(dirPin, OUTPUT);
- pinMode(button1Pin, INPUT_PULLUP); // Кнопка 1 с подтяжкой к питанию
- pinMode(button2Pin, INPUT_PULLUP); // Кнопка 2 с подтяжкой к питанию
- // Установка начальной скорости (можно изменить в коде)
- setStepFrequency(2000); // Установка 2000 Гц для 2000 шагов в секунду
- }
- void loop() {
- bool motorActive = false;
- // Чтение состояния кнопок
- bool button1State = !digitalRead(button1Pin); // Логический 0 -> кнопка нажата
- bool button2State = !digitalRead(button2Pin); // Логический 0 -> кнопка нажата
- if (button1State && !button2State) {
- // Вращение в одну сторону
- digitalWrite(dirPin, HIGH); // Устанавливаем направление
- stepMotor();
- motorActive = true;
- } else if (button2State && !button1State) {
- // Вращение в другую сторону
- digitalWrite(dirPin, LOW); // Устанавливаем направление
- stepMotor();
- motorActive = true;
- } else {
- // Обе кнопки отпущены или нажаты одновременно - двигатель стоит
- motorActive = false;
- }
- // Управление светодиодом
- digitalWrite(ledPin, motorActive ? HIGH : LOW);
- }
- // Функция для выполнения одного шага двигателя
- void stepMotor() {
- digitalWrite(ledPin, HIGH); // Включаем светодиод для визуального контроля
- digitalWrite(stepPin, HIGH); // STEP сигнал HIGH
- delayMicroseconds(stepDelay); // Задержка для формирования импульса
- digitalWrite(stepPin, LOW); // STEP сигнал LOW
- digitalWrite(ledPin, LOW); // Выключаем светодиод
- delayMicroseconds(stepDelay); // Задержка для формирования импульса
- }
- // Функция для установки частоты вращения
- void setStepFrequency(unsigned int frequency) {
- if (frequency > 0) {
- stepDelay = 1000000 / (2 * frequency); // Рассчитываем задержку на основе частоты
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment