step motor
- Войдите на сайт для отправки комментариев
Пт, 05/12/2014 - 16:38
Здравствуйте. методом проб и ошибок сваял код:
#include <Stepper.h>
const int stepsPerRevolution = 60;
int switchPin1 = 6;
int switchPin2 = 7;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
pinMode (switchPin1, INPUT);
pinMode (switchPin2, INPUT);
}
void loop() {
myStepper.setSpeed(180);
myStepper.step(stepsPerRevolution);
if (digitalRead(switchPin1)==HIGH || digitalRead(switchPin2) ==HIGH ) {
if (digitalRead(switchPin1)==HIGH) {
delay (100);
while(digitalRead(switchPin1)==HIGH){
myStepper.setSpeed(340);
myStepper.step(-stepsPerRevolution);
}
}
if (digitalRead(switchPin2)==HIGH) {
delay (100);
while(digitalRead(switchPin2)==HIGH){
myStepper.setSpeed(340);
myStepper.step(-stepsPerRevolution);
}
}
delay (2000);
}
}
степ мотор постоянно крутится в 1 сторону с 1 скоростью. при нажатии 1й кнопки начинает вращаться в другую с другой скоростью (со второй кнопкой тоже самое). отпускаем кнопку, и через 2 сек мотор вращается в нач направлении и с нач скоростью.
Собсно вопрос: как сделать, чтобы постоянно реагировало на кнопку, а не по завершении loop? например в 2х секундном промежутке(на случай если случайно отпустил)
помогите нубу пож-та)
Прерывания Вам в помощь
http://arduino.ru/Tutorial/Arduino_Interrupts
Благодарю. попробую разобраться.
Согласен с Zaliv.
Все эти stepper`ы и delay`и плохи тем, что существенно тратят процессорное время. Щас вот пытаюсь собрать робота-балансира. Решил делать на шаговых моторах, а там существенно важно тратить время проца не на вращение мотора а на просчет скорости его поворота и слежение за завалом.
Поэтому решил применить связку из step-dir драйвера и аппаратного 8-bit Timer/Counter2. Работает шустро, точно, почти не ест процессорное время компа и ножки arduino. есть микрошаг. Советую. Одни плюсы.