Умный контроллер шагового двигателя: управление скоростью и направлением с помощью Arduino Nano, потенциометра и SSD1336
Arduino Nano с использованием библиотеки для управления шаговым двигателем и дисплеем SSD1336.
Код для Arduino Nano
#include <AccelStepper.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Настройки шагового двигателя #define stepPin 3 #define dirPin 4 AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin); // Пины #define potPin A0 #define switchPin 2 // Переменные int potValue = 0; int motorSpeed = 0; bool motorDirection = true; // По умолчанию вращение по часовой стрелке void setup() { // Инициализация серийного подключения Serial.begin(9600); // Инициализация дисплея display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); // Настройка пина переключателя pinMode(switchPin, INPUT_PULLUP); // Настройка шагового двигателя stepper.setMaxSpeed(1000); } void loop() { // Чтение значения с потенциометра potValue = analogRead(potPin); motorSpeed = map(potValue, 0, 1023, 0, 1000); // Преобразование значения в диапазон скорости // Проверка состояния переключателя if (digitalRead(switchPin) == LOW) { motorDirection = !motorDirection; // Смена направления delay(200); // Антидребезг } // Установка направления вращения stepper.setSpeed(motorDirection ? motorSpeed : -motorSpeed); stepper.runSpeed(); // Выполнение движения // Отображение информации на дисплее display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.print("Speed: "); display.print(motorSpeed); display.print(" Steps/s"); display.setCursor(0, 10); display.print("Direction: "); display.print(motorDirection ? "CW" : "CCW"); display.display(); }
Объяснение кода:
- Импорт библиотек: Подключили необходимые библиотеки для работы с шаговым двигателем и OLED-дисплеем.
- Настройка пинов: Определены пины для подключения к шаговому двигателю, потенциометру и переключателю.
- Настройка: В функции setup() инициализируем дисплей и устанавливаем пины.
- Основной цикл (loop):
- Чтение значения с потенциометра и преобразование его в скорость.
- Проверка состояния переключателя для смены направления вращения.
- Установка скорости и направления для шагового двигателя.
- Обновление дисплея с отображением текущей скорости и направления.
Используемые компоненты:
- Arduino Nano
- Шаговый двигатель с драйвером (например, A4988)
- OLED-дисплей SSD1306
- Потенциометр
- Переключатель (кнопка)
Не забудьте подключить все компоненты согласно описанию в коде. Этот пример предполагает работу с библиотекой AccelStepper, которая полагается на наличие драйвера шагового мотора, и с библиотекой Adafruit для работы с OLED-дисплеем. Убедитесь, что все библиотеки установлены в вашей среде Arduino IDE.
Поиск информации по сайту мониторинга транспорта TREKBERRY
© TREKBERRY 2017-2024, Дмитрий В.М. Все права защищены.
Копирование материала без ссылки на источник запрещено. Информация размещенная на сайте не является публичной офертой.
Часть текстов написано нейросетью, может содержать не точности. На сайте может быть реклама и иметь рекламные вставки.