//Bibliotecas
#include <HX711.h> //adiciona a biblioteca ao codigo
#include <Ultrasonic.h> // Declaração de biblioteca
#include <AccelStepper.h>

//Definições Globais
#define DISTANCIA_INICIAL 23 //23 cm
#define DISTANCIA_FINAL 9.50 //9.50 cm
#define TEMPO_ESPERA 1 //declaracao da variavel de espera
#define PASOS_CM 300 //quantos passos por cm

//Ultrassinico
Ultrasonic ultrasonic1(48, 49); // Instância chamada ultrasonic com parâmetros (trig,echo)
//Carga
const int PINO_DT = A1;
const int PINO_SCK = A0;
HX711 escala;
float fator_calibracao = -46500; //pre-definicao da variavel de calibracao
//Motor
AccelStepper stepper(3, 8, 9);
int incomingByte = 0; // variável para o dado recebido
boolean analise;

void setup () {
Serial.begin(9600);
Serial.println("InicioSistema");
escala.begin (PINO_DT, PINO_SCK); //inicializacao e definicao dos pinos DT e SCK dentro do objeto ESCALA
analise=false;

}

void loop(){

if(analise==true){
Serial.println("Passo:"+String(stepper.currentPosition())+" / Distancia:"+String(getUltrassom()) + "Carga:"+String(getCarga()));

stepper.run();
if (stepper.distanceToGo() == 0){
posicaoInicial();
}
}
if (Serial.available() > 0) {
// lê do buffer o dado recebido:
String letra = Serial.readString();

// responde com o dado recebido:
Serial.print("Recebido a Info: "+letra);

if(letra.charAt(0)=='a'){//letra a==97 calibracao
Serial.println("Recebeu - Calibração");
posicaoInicial();
}else if(letra.charAt(0)=='b'){//letra b==98
Serial.println("Recebeu - Análise");
analise=true;
stepper.moveTo(30000);
stepper.setMaxSpeed(1000);//1100
stepper.setAcceleration(100);
escala.tare();
}else if(letra.charAt(0)=='c'){//Letra c=99 cancelar
Serial.println("Recebeu - Cancelar");
analise=false;
posicaoInicial();
}
}



delay(10);
}

void posicaoInicial(){
Serial.println("Procedimento para posição inicial");
int passos=1;
Serial.println(abs(getUltrassom()- DISTANCIA_INICIAL));
stepper.setMaxSpeed(1000);//1100
stepper.setAcceleration(500);



while(abs(getUltrassom()- DISTANCIA_INICIAL)>2){
Serial.println(abs(getUltrassom()- DISTANCIA_INICIAL));
Serial.print("Distância:");
Serial.print(getUltrassom());
if(getUltrassom()>DISTANCIA_INICIAL){
Serial.println("Avançar");
if (stepper.distanceToGo() == 0){
stepper.setCurrentPosition (stepper.currentPosition());
stepper.moveTo(3000);
}
}
else{
Serial.println("Voltar");
if (stepper.distanceToGo() == 0){
stepper.setCurrentPosition (stepper.currentPosition());
stepper.moveTo(-3000);
}
}

stepper.run();
delay(1);
}
stepper.setCurrentPosition (stepper.currentPosition());
analise=false;
}

float getUltrassom() {
float cmMsec, inMsec;
long microsec = ultrasonic1.timing();
cmMsec = ultrasonic1.convert(microsec, Ultrasonic::CM);
return cmMsec;
}

float getCarga(){
escala.set_scale(fator_calibracao); //ajusta a escala para o fator de calibracao

return escala.get_units();
}

Estou usando essa codificação e não consigo fazer ele mudar de sentido, qualquer comando que eu coloco ele gira apenas para um lado, no caso sentido horário...

desde já agradeço!!!

Exibições: 193

Responder esta

Respostas a este tópico

Boa tarde CHS,

Recomendações:
   1.   Remova seu sketch da área de texto do seu tópico;
   2.   Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
   3.   Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada
          linha e facilita a ajuda.
   4.   Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
         com o seu sketch.

RV mineirin

Boa noite,

Você está usando a Biblioteca AccelStepper para controlar o  motor de passo: 

http://www.airspayce.com/mikem/arduino/AccelStepper/

Achei esse tutorial completíssimo sobre como usar o TB6600 com a  Biblioteca AccelStepper:

https://www.makerguides.com/tb6600-stepper-motor-driver-arduino-tut...

Estude-o, teste-o. Aprenda como controlar o motor.

Se tiver dúvida, informe. 

Depois que estiver entendo tudo, monte e teste o seu projeto. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço