Olá pessoal , estou desemvolvendo um projeto aqui com um Arduino uno 2 Drivers A4988 e 2 Motores de passo NEMA 17 e 5 botões, 3 ainda não adicionei nenhuma função ,coisa que era pra ser simples até funciona mas eu resolvi de implantar a biblioteca AccelsSepper aí a vaca foi pro brejo kkkkkk
Era pra se comportar da seguinte forma : quando aperto o botão "esquerdo" o motor1 dá 118 voltas (-23600 passos) enquanto o motor2 dá 10148 passos depois aperto o botão"direito" o motor1 dá mais 118 voltas no mesmo sentido (-23600 passos) e o motor2 dá -10148 passos voltando a sua posição inicial na primeira vez que eu aperto o botão independente de qual seja funciona tudo perfeitamente só que na segunda vês o motor1 inverte o sentido até usei a função currentposition() para ver pra onde ele vai e vai para uma posição que não tem nada a ver .
outra coisa que eu não consegui fazer é usar a função move().
Bom vou deixar o código a baixo e pedir que se possivel alguém me ajude kkkk por que deve ser um erro bem de principiante.
Tags:
Boa noite Sr. NC, (se não gosta que te chame pelas iniciais, avise),
gostaria muito de te ajudar, mas para isto recomendo as seguintes ações:
1. Remova seu sketch da área de texto do seu tópico;
2. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo"
e anexe o arquivo com o seu sketch;
3. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
4. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada
linha e facilita a ajuda.
RV
Muito obrigado pela orientação , já vou fazer isso.
Boa noite,
Você já estudou esses exemplos?
https://www.airspayce.com/mikem/arduino/AccelStepper/MultipleSteppe...
https://www.airspayce.com/mikem/arduino/AccelStepper/MultiStepper_8...
Sim hoje de manhã kkkk mas vou estudalos novamente , se o motor fosse voltar pra para a posição original não teria problema outra coisa que também notei é que se eu reduzir o número e passos de -23600 para -2360 funciona perfeitamente.
Ok, obrigado pela compreensão.
Vc usou um enable só para os 2 motores?
RV
Sim , ligado a o pino 8 do arduino por que os 2 sempre trabalham sincronizados .
inicio :
destino é = " valor não definido" suponho que pode ser 0.
motor1.currentPosition() é = suponho 0 também.
1a apertada
destino = motor1.currentPosition() - 23600; destino = -23600.
depois do movimento motor1.currentPosition() = -23600.
2a apertada
destino = motor1.currentPosition() - 23600; destino = -47200.
Como a variável destino é uma int, ela vai de -32767 até + 32767.
Na primeira apertada o valor dentro da variável fica -23600, mas na segunda ele
ficará 32767 -23600 = + 9167 e o motor rodará ao contrário.
Mude a variável destino para o formato unsigned long e teste se funciona correto.
RV
Bah me caiu os butiá do bolso agora kkkkk muito obrigado, vou mudar e depois conto os resultados .
Noooossssaaaa, caiu e quebrou?????
move() é uma função relativa e moveTo() é uma função absoluta.
Se o motor estiver em X e vc usar movo(X), ele não fara´nada.
Se o motor estiver em X e vc usar movoTo(X), ele movera X posições.
Acho que é assim.
RV.
Ficou perfeito RV muito obrigado !
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por