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
}
}
Tags:
As respostas para este tópico estão encerradas.
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!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por