Motor de Passo 28BYJ-48 com Joystick - Velocidade + direção

Bom dia a todos! Primeiro gostaria de parabenizar os participantes deste fórum pelo brilhante trabalho de ajuda e compartilhamento de informação.

Sou novo no fórum, sou iniciante com Arduino e estou com uma dificuldade. até encontrei aqui no fórum alguns tópicos a respeito mas não se aplica exatamente à minha duvida:

Preciso através um módulo Joystick  com eixos X e Y controlar no Arduino dois motores de passo 28BYJ-48. Nos exemplos da biblioteca STEPPER da IDE somente consigo controlar a velocidade mas o que eu preciso é que o joystick além de determinar a direção do giro (Direira-Esquerda), também possa aumentar ou diminuir a velocidade de acordo com a sensibilidade aplicada no Joystick. em anexo segue foto com exemplo de Hardware que estou utilizando, com a diferença que preciso que o mesmo joystick controle os 02 motores: um no eixo X e outro no eixo Y. 

Espero ter conseguido explicar minha dificuldade. Desde já deixo meu abraço e gratidão a todos que poderem me ajudar.

Exibições: 966

Anexos

Responder esta

Respostas a este tópico

Obrigado José Gustavo! vou dar uma olhada nos tutoriais contidos no link que vc indicou (São vários... rs). Depois digo se consegui resolver. Forte abraço a todos.

Então José Gustavo! Obrigado pela ajuda... Vi os exemplos que vc me passou e o que mais se aproximou ao que eu preciso foi o que controla a velocidade com um potenciômetro. Mas como vou usar um Joystick o problema é o seguinte:

Gostaria que ao jogar o joystick para a direita o motor girasse para a direita mas na medida que fosse deitando a alavanca do joystick a velocidade fosse aumentando e o mesmo para o lado esquerdo. O problema é que o joystick vai de 0 a 1023 e precisa de algum cálculo que altere estes valores de leitura, porque na posição de descanso do joystick a leitura seria de 512 e o motor já inicia girando. Não estou conseguindo pensar em como alterar essa leitura para que com o joystick no meio o motor fique parado, pra esquerda o motor aumenta a velocidade no sentido anti-horario na medida em que a leitura do joystick cai de 512 a 0 e a na direita o motor aumenta no sentido horário na medida em que a leitura do joystick  aumenta de 512 a 1023.

Vi algo sobre a função map(sensorReading, 0, 1023, 0, 100) mas sou iniciante e não entendi a logica e não estou conseguindo assimilar isso ao que estou querendo.

Bom dia a todos aqui do forum.

Gostaria de agradecer a ajuda dos colegas e informar que consegui resolver a situação aqui. Não sei se é a forma mais correta mas aqui comigo funcionou.

Para ajudar à outros colegas que podem ter a mesma dificuldade, deixo abaixo o código fonte.

O Código ficou assim:

#include <Stepper.h>

const int stepsPerRevolution = 2050; // Número de passos por revolução do motor.
// for your motor


// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);

int stepCount = 0; // Variavel para contar os passos do motor para possível informação da posição

void setup() {
// nothing to do inside the setup
Serial.begin(9600);
}

void loop() {

// Lê o valor de A0 e atribui à variável sensorReading
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
// Com o eixo X do Joystick no centro a Leitura é 517
if(sensorReading > 515){
// Função map() que transforma a leitura de 551 a 1023 em 0 a 100 e atribui o valor à variável motorSpeed
int motorSpeed = map(sensorReading, 515, 1023, 0, 100);
// Verifica de o valor de motorSpeed é maior que 0
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed); // seta a Velocidade do motor com o valor de motorSpeed
myStepper.step(stepsPerRevolution / 100);
//stepCount = stepCount + stepsPerRevolution; // conta os passos à direita para um possível controle da posição do motor
}
}else if(sensorReading < 500){
// Função map() que transforma a leitura de 551 a 1023 em 0 a 100 e atribui o valor à variável motorSpeed
int motorSpeed = map(sensorReading, 500, 0, 0, 100);
// Verifica de o valor de motorSpeed é maior que 0
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed); // seta a Velocidade do motor com o valor de motorSpeed
myStepper.step(-stepsPerRevolution / 100);
//stepCount = stepCount - stepsPerRevolution; // conta os passos à esquerda para um possível controle da posição do motor
}
}
//Serial.println(stepCount);
}

Forte abraço a todos!!!

Beleza ! Obrigado por compartilhar. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço