Ir ao conteúdo
  • Cadastre-se

Italo Resende

Membro Júnior
  • Posts

    8
  • Cadastrado em

  • Última visita

Reputação

0
  1. Pessoal, bom dia. Estou com um grande problema e queria ver se alguém já passou por isso aqui. Vamos lá! Estou realizando a programação de um carro seguidor de linha e que desvia de obstáculos, o que acontece é o seguinte, estava tudo funcionando corretamente, o seguidor de linha ok, as baterias estão com uma duração satisfatória, até que resolvi colocar o ultrassônico. Após colocar o sensor ultrassônico, adicionei algumas coisas ao código que já estava pronto e percebi que ele estava obedecendo os comandos, pelo serial monitor, pude notar que estava medindo as distâncias corretamente e então decidi começar as comparações, primeiramente, decidi colocar que se a distância fosse maior que 10cm ele iria seguir a linha normalmente, caso contrário, quando chegasse a 10cm ou menos do objeto ele ia voltar pra trás, realizei apenas para testes, se tudo corresse bem eu iria realizar a rota para desvio. Ao realizar a programação e testar na bancada, percebi que estava ok, eu passava um papel abaixo dos sensores de linha e eles reagiam, quando colocava um obstáculo o sensor ultrassônico também reagia, resolvi tirar da bancada e testar no chão, foi aí que veio o problema, ao remover o cabo USB do arduino, ele simplesmente parou de andar, parou de rodar ou realizar qualquer ação. Rapidamente me veio a cabeça que era bateria, coloquei duas baterias novas, de 3.7V, 8800mah, nada de funcionar, coloquei mais duas baterias em paralelo, duas para o arduino e duas para a ponte, nada de funcionar, deixei apenas duas baterias novamente, voltei com o carro pra bancada, deixei todas as linhas referente ao ultrassom comentadas no código e voltei a testar, o carro seguiu linha normalmente, com as mesmas baterias, voltei de novo pra bancada, apliquei o código do ultrassom de novo e nada, mesmo problema, quando está na bancada, o serial monitor faz a medição, o comando obedece à distância, mas quando tiro o cabo USB que liga o arduino no computador, ele para de funcionar na hora. Estou iniciando agora no arduino, queria uma ajuda se possível, o modelo do ultrassônico é o HC-SR04. Abaixo estou enviando o código. #define ir_dir 4 //configura o sensor direito no pino 4 #define ir_esq 2 //configura o sensor esquerdo no pino 2 #define echo_pin 8 //recebe o pulso do echo pino 8 #define trig_pin 7 //envia o pulso para gerar o echo pino 7 long distanciag = 0; int sensor_ir_esq; int sensor_ir_dir; int MR1 = 5; //ligado pino 5 arduino int MR2 = 6; //ligado pino 6 arduino int ML1 = 12; //ligado pino 12 arduino int ML2 = 13; //ligado pino 13 arduino int speedpinA = 11; //define ENA pino 11 (aceleracao) int speedpinB = 10; //define ENB pino 10 (aceleracao) void setup () { Serial.begin(9600); pinMode(echo_pin, INPUT); //entrada recebe pinMode(trig_pin, OUTPUT); //saída envia //configura sensores pinMode (ir_esq, INPUT); pinMode (ir_dir, INPUT); //configura motores pinMode (MR1, OUTPUT); //pino 5 pinMode (MR2, OUTPUT); //pino 6 pinMode (ML1, OUTPUT); //pino 12 pinMode (ML2, OUTPUT); //pino 13 pinMode (speedpinA, OUTPUT); //pino 11 pinMode (speedpinB, OUTPUT); //pino 10 } void loop () { distanciag = distancia(); Serial.print("Distância em CM: "); Serial.println(distanciag); if(distanciag < 10) { //andar pra tras digitalWrite (MR1, HIGH); digitalWrite (MR2, LOW); digitalWrite (ML1, HIGH); digitalWrite (ML2, LOW); } else { sensor_ir_esq = digitalRead (ir_esq); sensor_ir_dir = digitalRead (ir_dir); if((sensor_ir_esq==1)&&(sensor_ir_dir==1)) //frente { frente(); analogWrite (speedpinA, 70); analogWrite (speedpinB, 70); } if((sensor_ir_esq==0)&&(sensor_ir_dir==1)) //esquerda { esquerda(); analogWrite (speedpinA, 200); analogWrite (speedpinB, 200); } if((sensor_ir_esq==1)&&(sensor_ir_dir==0)) //direita { direita(); analogWrite (speedpinA, 200); analogWrite (speedpinB, 200); } if((sensor_ir_dir==0)&&(sensor_ir_esq==0)) //parar { analogWrite (speedpinA, 0); analogWrite (speedpinB, 0); } } } // Funcoes long distancia() { digitalWrite(trig_pin, LOW); //seta o pino como desligado //delayMicroseconds(2); digitalWrite(trig_pin, HIGH); //seta o pino como ligado //delayMicroseconds(10); long duration = pulseIn(echo_pin, HIGH); //pulseIn lê o tempo entre a chamada e o pino entrar em high long distancia = duration /29 /2; //calculo baseado em s=v.t, tempo dobrado pois é ida e volta do ultrasom return(distancia); } int frente() { digitalWrite (MR1, LOW); digitalWrite (MR2, HIGH); digitalWrite (ML1, LOW); digitalWrite (ML2, HIGH); } int direita() { digitalWrite (MR1, HIGH); digitalWrite (MR2, LOW); digitalWrite (ML1, LOW); digitalWrite (ML2, HIGH); } int esquerda() { digitalWrite (MR1, LOW); digitalWrite (MR2, HIGH); digitalWrite (ML1, HIGH); digitalWrite (ML2, LOW); }

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...