step motor

sparrow
Offline
Зарегистрирован: 04.12.2014

Здравствуйте. методом проб и ошибок сваял код:



#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х секундном промежутке(на случай если случайно отпустил)

помогите нубу пож-та)

Zaliv
Offline
Зарегистрирован: 05.03.2011

Прерывания Вам в помощь

http://arduino.ru/Tutorial/Arduino_Interrupts

sparrow
Offline
Зарегистрирован: 04.12.2014

Благодарю. попробую разобраться.

An25
Offline
Зарегистрирован: 19.09.2014

Согласен с Zaliv.

Все эти  stepper`ы и delay`и плохи тем, что существенно тратят процессорное время. Щас вот пытаюсь собрать робота-балансира. Решил делать на шаговых моторах, а там существенно важно тратить время проца не на вращение мотора а на просчет скорости его поворота и слежение за завалом.

Поэтому решил применить связку из step-dir драйвера и аппаратного 8-bit Timer/Counter2. Работает шустро, точно, почти не ест процессорное время компа и ножки arduino. есть микрошаг. Советую. Одни плюсы.