Управление шаговым мотором по концевику
- Войдите на сайт для отправки комментариев
Втр, 02/05/2017 - 12:32
Здравствуйте форумчане!
Помогите пожалуйста начинающему, задача такая: управление шаговиком по концевику плата Уно.
Включаем ардуино считываем концевик, если нажат, то запускаем мотор до следующего нажатия и так по циклу. задача не по знаням пока, но если с вашей помощью...
#include<AccelStepper.h>
AccelStepper stepper1(4, 2, 3, 4, 5); //Мотор М1 оси Z
const int BUTTONSTART = 12; // концевик оси Z на 12 pin
boolean lastButtonStart = LOW; // Значение предыдущий статус кнопки
boolean currentButtonStart = LOW; // Значение текушего статуса кнопки
void setup()
{
stepper1.setMaxSpeed(106700); // Задаём максимальную скорость M1 двигателя
pinMode (BUTTON1, INPUT);
}
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTONSTART);
if (last != current)
{
delay(5);
current = digitalRead(BUTTONSTART);
return current;
}
}
void loop()
{
currentButtonStart = debounce(lastButtonStart);
if (lastButtonStart == LOW && currentButtonStart == HIGH)
{
stepper1.setSpeed(106700);
stepper1.runSpeed();
}
Вот дальше не могу
}
При нажатой кнопки шаговик крутится очень медленно
Так тоже работает но нет так как надо:
#include<AccelStepper.h> AccelStepper stepper1(4, 2, 3, 4, 5); //Мотор М1 оси Z const int BUTTONSTART = 12; // концевик оси Z на 12 pin boolean lastButtonStart = LOW; // Значение предыдущий статус кнопки boolean currentButtonStart = LOW; // Значение текушего статуса кнопки int a; void setup() { stepper1.setMaxSpeed(106700); // Задаём максимальную скорость M1 двигателя pinMode (BUTTONSTART, INPUT); } // boolean debounce(boolean last) //{ // boolean current = digitalRead(BUTTONSTART); // if (last != current) // { // delay(5); // current = digitalRead(BUTTONSTART); // return current; // } //} void loop() { currentButtonStart = digitalRead(BUTTONSTART); // считываем состояния кнопки if (currentButtonStart == HIGH) // если нажата то запускаем мотор { stepper1.setSpeed(106700); stepper1.runSpeed(); currentButtonStart = lastButtonStart; // меняем значение кнопки на LOW } if (currentButtonStart == HIGH && lastButtonStart == LOW) { digitalRead(BUTTONSTART) == HIGH; stepper1.setMaxSpeed(0); stepper1.setSpeed(0); } } // while (lastButtonStart == HIGH); // { // stepper1.setMaxSpeed(0); // stepper1.setSpeed(0); // } // }вы бы сначала с примерами библиотеки поигрались, да и на сайте описание самой библиотеки почитать не плохо
пока у вас каша