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. есть микрошаг. Советую. Одни плюсы.