не могу остановить шаговый двигатель

Yer
Offline
Зарегистрирован: 12.02.2016
Если значение а выше 500 ШД поварачивается вправо елси меньше 500 тогда на лево,в обе стороны крутит без
остановки.мне нужно чтобы меньше а 300 ШД остановился и если а больше 800 тогда тоже остановился 
int Enable1Pin=5;
int IN1Pin=6;
int IN2Pin=7;
int Enable2Pin=4;
int IN3Pin=3;
int IN4Pin=2;
int ButtonPin=8;
int tt;
boolean ButtonState;
int a=0;
void setup() {
  // 
  pinMode(Enable1Pin,OUTPUT);
  pinMode(Enable2Pin,OUTPUT);
  pinMode(IN1Pin,OUTPUT);
  pinMode(IN2Pin,OUTPUT);
  pinMode(IN3Pin,OUTPUT);
  pinMode(IN4Pin,OUTPUT);
  digitalWrite(Enable1Pin,LOW);
  digitalWrite(Enable2Pin,LOW);
   Serial.begin(9600);
}
 
void loop() {
  // put your main code here, to run repeatedly:
ButtonState=digitalRead(ButtonPin);
a=analogRead(1); \\аналоговы сигнал
  Serial.println(a);
  delay(20);
if (a<500)
{GoSteps(3,2948,1);
}
if (a>500)
{GoSteps(3,2948,0);
}
delay(2000);}
 
void GoSteps(int nSteps,int nSemiStepDelay,boolean dir)
{int i=nSteps;
digitalWrite(Enable1Pin,HIGH);
digitalWrite(Enable2Pin,HIGH);
while (i>0){
digitalWrite(IN1Pin,dir xor HIGH);
digitalWrite(IN2Pin,dir xor LOW);
digitalWrite(IN3Pin,HIGH);
digitalWrite(IN4Pin,LOW);
delayMicroseconds(nSemiStepDelay);
digitalWrite(IN1Pin,dir xor LOW);
digitalWrite(IN2Pin,dir xor HIGH);
digitalWrite(IN3Pin,HIGH);
digitalWrite(IN4Pin,LOW);
delayMicroseconds(nSemiStepDelay);
i=i-1;
if (i>0){
digitalWrite(IN1Pin,dir xor LOW);
digitalWrite(IN2Pin,dir xor HIGH);
digitalWrite(IN3Pin,LOW);
digitalWrite(IN4Pin,HIGH);
delayMicroseconds(nSemiStepDelay);
digitalWrite(IN1Pin,dir xor HIGH);
digitalWrite(IN2Pin,dir xor LOW);
digitalWrite(IN3Pin,LOW);
digitalWrite(IN4Pin,HIGH);
delayMicroseconds(nSemiStepDelay);
i=i-1;
}
}
digitalWrite(Enable1Pin,LOW);
digitalWrite(Enable2Pin,LOW);
 
}
James
Offline
Зарегистрирован: 26.02.2016
Вот примерно так, по портам не расписывал, просто алгоритм
if(a>300){
   if(a<800){
      if(a<500){
         go left;
         }
      else
         go right;
      }
    else
     stop;
    }
   else
     stop;
 }

 

Nosferatu
Offline
Зарегистрирован: 04.11.2012
  if (a < 500 && a > 300)
  { 
   ...
  }
  if (a > 500 && a < 800)
  { 
    ...
  }

 

Yer
Offline
Зарегистрирован: 12.02.2016

спасибо все заработала