Ola, Pessoal sou novo aqui no site gostaria que alguém me ajuda se no meu projeto estou com um erro e não consigo resolver.

ERRO: Estou fazendo um sistema para controlar motores de passo com controle remoto de tv , fiz uma programação bem básica só para girar um motor e em seguida outro motor, mas meu problema é que o motor só gira para um lado, li na net que para girar para outro lado com a biblioteca (<Stepper.h>) tem que colocar um sinal negativo mais mesmo assim não gira no outro sentido. Peço a ajuda de vocês porque não sei o que fazer mais. Obrigado pela atenção.

#include <IRremote.h>
#include <Stepper.h>

const int stepsPerRevolution = 500;
const int stepsPerRevolution2 = 400;
Stepper myStepper(stepsPerRevolution, 5,4,3,2); //base
Stepper myStepper2(stepsPerRevolution, 11,10,9,8); //prato ou braço
int RECV_PIN = A0;
IRrecv irrecv(RECV_PIN);
decode_results results;
long VALOR_BOTAO = 22132703;
long VALOR_BOTAO1 = 1210501493;

void setup()
{
myStepper.setSpeed(30);
myStepper2.setSpeed(30);
Serial.begin(9600);
irrecv.enableIRIn();
}

void loop(){
if (irrecv.decode(&results)) {
if((results.value) == VALOR_BOTAO){
myStepper2.step(1200);
delay(1000);
myStepper2.step(-stepsPerRevolution2);
delay(1000);


}
else{
myStepper.step(0);
myStepper.step(-0);
}
/*
if (irrecv.decode(&results)) {
if((results.value) == VALOR_BOTAO1){
myStepper2.step(-1000);
delay(1000);
myStepper2.step(1000);
delay(1000);
}
else{
myStepper2.step(0);
myStepper2.step(-0);
}
}
*/
irrecv.resume(); // Receive the next value
}
}

Exibições: 572

Anexos

As respostas para este tópico estão encerradas.

Respostas a este tópico

Veja se este link te ajuda a entender melhor.

http://blog.filipeflop.com/motores-e-servos/controlando-um-motor-de...

Abs.

Obrigado.

Oi Bruno. boa noite,

verifiquei o seu code e fiquei em dúvida sobre alguns pontos.

Voce define que o motor(1) precisará de 500 steps para dar uma volta completa  "stepsPerRevolution = 500;",

depois mandou 1200 steps para este motor, ou seja 2,2 voltas.

Não sei o tempo que este motor levará para realisar este comando.

Apesar de o ref do arduino disser que esta função, "step(x)", é "blocking" ou seja só passa para a próxima linha de código qdo o motor chegar onde foi enviado, não sei se isto é valido pra mais de uma volta completa.

Depois voce espera 1 seg e manda o motor voltar uma volta completa no sentido contrário.   " myStepper2.step(-stepsPerRevolution2);"

e espera por mais 1 seg.

Recomendo que primeiro voce faça um code simples para testar se está usando

a função para o motor do modo correto.

Rui

Segue um code simples prar testar a rotina.

#include <Stepper.h> // Biblioteca de Steppmotor
Stepper myStepper(500, 5,4,3,2); // Sequencia das fases
void setup()
{
myStepper.setSpeed(30); // Velocidade do motor
}
void loop()
{
myStepper.step(1200); // Motor Step 1200
delay(1000); // Delay 1seg
myStepper.step(-500); // Motor step - 500
delay(1000); // Delay 1seg
}

Muito obrigado amigo consegui resolver. Ajudou muito!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço