Ir ao conteúdo
  • Cadastre-se

Bola02

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

  1. Oi pessoal desculpe a demora para responder é que eu estava com o tempo meio apertado esses dias (muita prova).... vou passar a programação que a gente usou um cara ajudou a gente dar uma arrumada e que deu certo para o carrinho : #include <Servo.h> #include <Ultrasonic.h> Servo myservo; int pos = 90; //posição inicial do servo int echopin = 9; // a saido echo do SRF05 liga no pin 9 int trigerpin = 8; // a saida triger do SRFo5 liga no pin 8 int BUZZER = 11; // Ligar o buzzer (Som) no pino 11 int in1 = 4; // pino 1 do motor 1 int in2 = 5; // pino 2 do motor 1 int in3 = 6; // pino 1 do motor 2 int in4 = 7; // pino 2 do motor 2 unsigned long pulsetime = 0; // Variavel que faz a leitura do pulso unsigned long distancia = 0; //Variavel que que armazena a distancia void stopMotor() { //para os motores digitalWrite(in1, LOW); digitalWrite(in2, LOW); //delay(500); digitalWrite(in3, LOW); digitalWrite(in4, LOW); //delay(500); } void setup() { pinMode(BUZZER,OUTPUT);// define o pino do buzzer como saída. myservo.attach(10); // anexa o servo lógico ao fisico no pino 10 pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(trigerpin, OUTPUT); // define o pino triger como saída pinMode(echopin, INPUT); // define o pino echo como entrada } void loop() { distancia = leiaDistancia(); //executa a funcao que retorna a distancia em cm if (distancia > 16) // se a distancia for maior que 16 cm { andeParaFrente(); //continua andando. } else { //senão, lógico, a distancia frontal é MENOR ou IGUAL a 16. stopMotor(); //pare o motor delay(1000); //aguarde 1 segundo int distEsquerda = 0; int distDireita = 0; myservo.write(175); //gira o servo a 175 graus delay(1000); // tem que ser ajustado para esperar o servo chegar no 175 distEsquerda = leiaDistancia(); myservo.write(90); //gira o servo para 90 graus - deve ser a posicao inicial ou central. //vamos analisar o que foi lido na Esquerda if (distEsquerda > 16) // se a distancia ESQUERDA for maior que 16 cm { giraParaEsquerda(3000); //invoca a funcao que gira para ESQUERDA por 3 segundos. Favor ajustar esse valor. } else { //senão, lógico, a distancia esquerda é MENOR ou IGUAL a 16. Vamos analisar a DIREITA, então. myservo.write(5); delay(1000);//tem que esperar o servo chegar em 5 graus. distDireita = leiaDistancia(); // lendo a distancia da DIREITA myservo.write(90); //gira o servo para 90 graus - deve ser a posicao inicial ou central. if(distDireita > 16){ giraParaDireita(3000); // mesma coisa. ajute esse TEMPO para que o robo gire os 5 graus. } if(distDireita <= 16) { girar180graus(3000); } } } } int leiaDistancia(){ //funcao que devolve a distancia em cm digitalWrite(trigerpin, HIGH); delayMicroseconds(50); digitalWrite(trigerpin,LOW); pulsetime = pulseIn(echopin, HIGH); return pulsetime/58; // converte para cm } void andeParaFrente(){ digitalWrite(in1, LOW); // apenas pinos secundarios em HiGH, definindo o movimento para frente digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } void giraParaEsquerda(long tempo){//funcao para girar a esquerda. Observe o tempo em millissegundos. digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(tempo); //o motor só deve ficar ligado esse tempo. stopMotor(); //agora eu desligo. } void giraParaDireita(long tempo){//funcao para girar a direita. Observe o tempo em millissegundos. digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(tempo); //o motor só deve ficar ligado esse tempo. stopMotor(); //agora eu desligo. } void girar180graus(long tempo){//funcao para girar 180 graus. Observe o tempo em millissegundos. tone(11,300,300); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(1000); //o motor só deve ficar ligado esse tempo. tone(11,300,300); stopMotor(); //agora eu desligo. }
  2. Valeu pessoal pela ajuda deu certo.
  3. Opa já ajudou bastante vou modificar umas coisas e ver se funciona.
  4. eu e uns amigos do curso estamos tentando montar um carrinho com arduino e l298 mais não ta funcionando, tipo ele só anda para a frente vou postar o codigo que estou usando e como fiz a ligação: OBS:tipo se eu ligar o enable no 5 e 6 como está no codigo ele nem anda só o sensor que se move. Se alguem puder me dar uma luz eu agradeço.... desculpem o incomodo a programação não é muito o meu forte.. #include <Servo.h> #include <Ultrasonic.h> Servo myservo; int pos = 90; //posição inicial do servo int echopin = 9; // a saido echo do SRF05 liga no pin 9 int trigerpin = 8; // a saida triger do SRFo5 liga no pin 8 int in1 = 2; // pino 1 do motor 1 int in2 = 3; // pino 2 do motor 1 int in3 = 4; // pino 1 do motor 2 int in4 = 7; // pino 2 do motor 2 int enable1 = 5; // define a velociadade do motor 1 int enable2 = 6; // define a velocidade do motor 2 unsigned long pulsetime = 0; // Variavel que faz a leitura do pulso unsigned long distancia = 0; //Variavel que que armazena a distancia void stopMotor() { //para os motores analogWrite(enable1, 0); analogWrite(enable2, 0); } void setup() { myservo.attach(10); // anexa o servo lógico ao fisico no pino 10 pinMode(enable1, OUTPUT); // define todos os pinos como saída pinMode(enable2, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(trigerpin, OUTPUT); // define o pino triger como saída pinMode(echopin, INPUT); // define o pino echo como entrada } void loop() { distancia = leiaDistancia(); //executa a funcao que retorna a distancia em cm if (distancia > 16) // se a distancia for maior que 16 cm { andeParaFrente(); //continua andando. } else { //senão, lógico, a distancia frontal é MENOR ou IGUAL a 16. stopMotor(); //pare o motor delay(1000); //aguarde 1 segundo int distEsquerda = 0; int distDireita = 0; myservo.write(175); //gira o servo a 175 graus delay(1000); // tem que ser ajustado para esperar o servo chegar no 175 distEsquerda = leiaDistancia(); myservo.write(90); //gira o servo para 90 graus - deve ser a posicao inicial ou central. //vamos analisar o que foi lido na Esquerda if (distEsquerda > 16) // se a distancia ESQUERDA for maior que 16 cm { giraParaEsquerda(3000); //invoca a funcao que gira para ESQUERDA por 3 segundos. Favor ajustar esse valor. } else { //senão, lógico, a distancia esquerda é MENOR ou IGUAL a 16. Vamos analisar a DIREITA, então. myservo.write(5); delay(1000);//tem que esperar o servo chegar em 5 graus. distDireita = leiaDistancia(); // lendo a distancia da DIREITA myservo.write(90); //gira o servo para 90 graus - deve ser a posicao inicial ou central. if(distDireita > 16){ giraParaDireita(3000); // mesma coisa. ajute esse TEMPO para que o robo gire os 5 graus. } } } } int leiaDistancia(){ //funcao que devolve a distancia em cm digitalWrite(trigerpin, HIGH); delayMicroseconds(50); digitalWrite(trigerpin,LOW); pulsetime = pulseIn(echopin, HIGH); return pulsetime/58; // converte para cm } void andeParaFrente(){ analogWrite(enable1, 255); // velocidade do motor 1 analogWrite(enable2, 255); // velocidade do motor 2 digitalWrite(in1, LOW); // apenas pinos secundarios em HiGH, definindo o movimento para frente digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } void giraParaEsquerda(long tempo){//funcao para girar a esquerda. Observe o tempo em millissegundos. analogWrite(enable1, 255); analogWrite(enable2, 0); // gira para esquerda digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(tempo); //o motor só deve ficar ligado esse tempo. stopMotor(); //agora eu desligo. } void giraParaDireita(long tempo){//funcao para girar a esquerda. Observe o tempo em millissegundos. analogWrite(enable1, 0); // girar a direta analogWrite(enable2, 255); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(tempo); //o motor só deve ficar ligado esse tempo. stopMotor(); //agora eu desligo. }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!