помогите! шд не оживает

OniL
Offline
Зарегистрирован: 12.05.2015

Подскажите,что делаю не так! задаю данные,а ШД не крутится(

#include <AccelStepper.h>
 
AccelStepper stepper1(1, 5, 4);
int a ; 
int b ;
 
byte OneOrTwo = 0;
void setup(){
  Serial.begin(9600);
  stepper1.setMaxSpeed(600);
}
void loop()
{
  if(Serial.available())
  {
    if(OneOrTwo==0)
    {
      a = Serial.parseInt();
      Serial.print("a=");
      Serial.println(a);
      OneOrTwo=1;
      return;
      
    }
    if(OneOrTwo==1)
    {
      b = Serial.parseInt();
      Serial.print("b=");
      Serial.println(b);    
      OneOrTwo=0;
    }
   
    if(a>0&&b>0){
    stepper1.moveTo(1024);
    stepper1.setSpeed(600);
    stepper1.runSpeedToPosition();  
  }}
    
}
Vad33
Vad33 аватар
Offline
Зарегистрирован: 02.06.2015

Попробуйте сначала напрямую покрутить. Может не в программе дело...



#include <AccelStepper.h>
 
AccelStepper stepper1(1, 5, 4);

void setup(){
  stepper1.setMaxSpeed(600);
}
void loop()
{
 
    stepper1.moveTo(1024);
    stepper1.setSpeed(600);
    stepper1.runSpeedToPosition();  
    while(true){}
 }

 

OniL
Offline
Зарегистрирован: 12.05.2015

Vad33 пишет:

Попробуйте сначала напрямую покрутить. Может не в программе дело...



#include <AccelStepper.h>
 
AccelStepper stepper1(1, 5, 4);

void setup(){
  stepper1.setMaxSpeed(600);
}
void loop()
{
 
    stepper1.moveTo(1024);
    stepper1.setSpeed(600);
    stepper1.runSpeedToPosition();  
    while(true){}
 }

 

ну если while убрать,то работает! так что проблема в коде(

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Третья строка снизу, перенесите одну скобку выше над if и посмотрите что будет. Чтобы выполнение условия не зависило от наличия данных в сериале

Vad33
Vad33 аватар
Offline
Зарегистрирован: 02.06.2015

А вывод чисел обратно в мониторе отображается?

 

OniL
Offline
Зарегистрирован: 12.05.2015

Vad33 пишет:

А вывод чисел обратно в мониторе отображается?

 

да,вся логика была на светодиодах отработана

OniL
Offline
Зарегистрирован: 12.05.2015

Penni пишет:

Третья строка снизу, перенесите одну скобку выше над if и посмотрите что будет. Чтобы выполнение условия не зависило от наличия данных в сериале

пока что заработало) спасибо

OniL
Offline
Зарегистрирован: 12.05.2015
#include <AccelStepper.h>
 
AccelStepper stepper1(1, 7, 5);
AccelStepper stepper2(1, 6, 4);
int a ; 
int b ;
 
byte OneOrTwo = 0;
void setup(){
  Serial.begin(9600);
  stepper1.setMaxSpeed(600);
}
void loop()
{
  if(Serial.available())
  {
    if(OneOrTwo==0)
    {
      a = Serial.parseInt();
      Serial.print("a=");
      Serial.println(a);
      OneOrTwo=1;
      return;
      
    }
    if(OneOrTwo==1)
    {
      b = Serial.parseInt();
      Serial.print("b=");
      Serial.println(b);    
      OneOrTwo=0;
    }
  }
    if(a>0&&b>0){
    stepper1.moveTo(1024*a);
    stepper2.moveTo(1024);
    
    stepper1.setSpeed(600);
    stepper2.setSpeed(600);
    stepper1.runSpeedToPosition();  
    stepper2.runSpeedToPosition(); 
  }
    
}

если один заработал,то вот с двумя теперь проблема! один отрабатывает,а второму все равно( не могу поняьт почему