не могу остановить шаговый двигатель
- Войдите на сайт для отправки комментариев
Пт, 26/02/2016 - 09:46
Если значение а выше 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);
}
спасибо все заработала