preciso fazer com dois motores de passo se posicione de maneira independente."

enquanto   a primeira comparaçao de movimento     if (esquerda>direita ) for false o resto do programa td vai bem ou seja o M1 gira p esquerda.e  as comparaçoes de superior e inferior funciona muito bem

if (direita < esquerda)   funciona

 if (superior >inferior)  funciona

 if (superior <inferior)  funciona

mas se a primeira comparaçao de movimento    if (esquerda>direita ) for true so ela e executada ou seja M1 gira p direita e o resto para . ja tentei varias opçoes e nao vai.

se alguem puder me ajudar eu agradeço.

segue o codigo.

Exibições: 399

Anexos

Responder esta

Respostas a este tópico

ainda tem problema nessa parte?

tenho  um pequeno problema quando os dois ldr estao =>que 800 era p zerar o motor mas ele fica dando uns pulsos meio bobo nas bobinas

provavel q tenha q usar um artificio de deboucing.. mas como vc sabe usar aquela estratégia do millis,, tempo bem pequenino ali

if (direita>=800&& esquerda >=800){
// aqui nesta linha usa a funcao milis, que seria um delay p executar o comando
digitalWrite (MOTORINTERNO1,0);
digitalWrite (MOTORINTERNO2,0);
digitalWrite (MOTORINTERNO3,0);
digitalWrite (MOTORINTERNO4,0);
}

acho q pode resolver.. abraço

 o problema é aquele esquema q vc me explicou ontem

eu criei um impasse, bem aki.

if (direita && esquerda >=800){ //condicional "se" o valor for igual ou maior que o pré determinado//
digitalWrite (MOTORINTERNO1,0);
digitalWrite (MOTORINTERNO2,0);
digitalWrite (MOTORINTERNO3,0);
digitalWrite (MOTORINTERNO4,0);
}

e tem horas que:

if (direita> esquerda){ //condicional "se" o valor da “direita” for maior que a “esquerda” o motor girará para a direita//
Serial.println(direita);

if (step_motor1_H==0 && temp1_on==false){
temp1=millis(); // carrega o temp1 com o tempo atual
temp1_on=true; // liga o timer 1
digitalWrite( MOTORINTERNO4,false);//define valor para a saída//
digitalWrite( MOTORINTERNO1,true);//define valor para a saída//
digitalWrite( MOTORINTERNO2,true);//de

em alguns casos direita é > que 800, a situaçao que eu tinha mandado parar

quando direita é 820>esquerda810

if (direita && esquerda >=800) aqui manda parar

if (direita> esquerda){ aqui manda ir  p direita

acho que resolvi. mudando as comparacoes

invés de   if (direita> esquerda){ 

fica if ((direita> esquerda)&&(esquerda<800)){ 

bom

teste proteus

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço