Vou te ensinar um passo a passo detalhado de como fazer um robô que desvia de obstáculos.
Quem nunca quis ter um carrinho de controle remoto em? Agora estamos um passo à frente, um carrinho que anda sozinho.
Você vai aprender o esquema de ligação dos componentes e a programação.
Portanto, vamos direto aos materiais necessários:
- Arduino (foi usado o UNO neste projeto, porém, pode ser outro);
- Ponte-H L298N;
- Bateria de 7 à 12 VCC com corrente Mínima 3A;
- Sensor Ultrassônico HC – SR04;
- Kit Chassi 2WD
Neste projeto eu optei por usar um Kit Chassi 2WD que vem desmontado, além de fácil de montar, o custo é relativamente baixo.
A ligação dos componentes esta conforme na imagem a baixo (a imagem está em alta resolução)
Programação Como fazer um Robô
Para a utilização do sensor ultrassônico você precisa primeiramente baixar a biblioteca e instalar na IDE do arduino Clique aqui para Baixar
Para incluir esta biblioteca basta com a IDE do arduino aberta ir em Sketch> Incluir biblioteca> Adicionar biblioteca .ZIP e posteriormente selecionar o arquivo que você acabou de baixar.
Após ter montado e adicionado a biblioteca só falta a programação 😀
Para você saber o passo a passo de como fazer um robô que desvia de obstáculos
Leia cada anotação para entender melhor a programação.
-------------------------------------------------- //-- Sensor ultrassonico //Incluindo biblioteca Ultrasonic.h #include "Ultrasonic.h" //Criando objeto ultrasonic e definindo as portas digitais //do Trigger - 9 - e Echo - 10 Ultrasonic SensorUltrassonico(9, 10); long Microsegundos = 0;// Variável para armazenar o valor do tempo da reflexão do som refletido pelo objeto fornecido pela biblioteca do sensor float DistanciaemCM = 0;// Variável para armazenar o valor da distância a ser convertido por uma função da própria bilbioteca do sensor //---Motores Ponte H #define MotorDireito1 2 #define MotorDireito2 3 #define MotorEsquerdo1 4 #define MotorEsquerdo2 5 void setup() { //Definições de entrada e saída pinMode(MotorDireito1, OUTPUT); pinMode(MotorDireito2, OUTPUT); pinMode(MotorEsquerdo1, OUTPUT); pinMode(MotorEsquerdo2, OUTPUT); Serial.begin(9600);// Inicia a comunicação seria com velocidade de 9600 bits por segundo delay(4000);// Vamos dar um tempo de 4 segundos aqui o suficiente para ligar o carrinho e colocar no chao } void loop() { //Convertendo a distância em CM e mostrando da porta serial DistanciaemCM = SensorUltrassonico.convert(SensorUltrassonico.timing(), Ultrasonic::CM); Serial.print(DistanciaemCM); Serial.println(" cm"); if (DistanciaemCM <= 30) {// Se a distância lida pelo sensor for menor ou igual que 30 centimetros //Andar para trás // Motor lado esquerdo para trás digitalWrite(MotorEsquerdo1, HIGH); digitalWrite(MotorEsquerdo2, LOW); // Motor lado direito para trás digitalWrite(MotorDireito1, HIGH); digitalWrite(MotorDireito2, LOW); delay(1000);// Vá para trás durante 1 segundo // Após ir para tras rotacione // Motor lado esquerdo para frente digitalWrite(MotorEsquerdo1, HIGH); digitalWrite(MotorEsquerdo2, LOW); // Motor lado direito para trás digitalWrite(MotorDireito1, LOW); digitalWrite(MotorDireito2, HIGH); delay(200); //para o lado direito durante 200 milisegundos } else {// Se a distancia for maior que 30 centimetros o carrinho pode ir para frente ate encontrar um obstaculo //Ande para frente // Motor lado esquerdo para frente digitalWrite(MotorEsquerdo1, LOW); digitalWrite(MotorEsquerdo2, HIGH); // Motor lado direito para frente digitalWrite(MotorDireito1, LOW); digitalWrite(MotorDireito2, HIGH); } }
————————————————–
O Robô irá andar para frente até encontrar um objeto com a distância menor que 30 centímetros, desse modo, encontrando este obstáculo ele irá fazer uma conversão para direita, e ficando assim neste loop.
O que achou deste tutorial de como fazer um Robô?
Deixe seu comentário dizendo o que achou, e se gostou nos recomende para seus amigos. 😎
Dá uma olhadinha em nossos outros posts aposto que vai adorar.
Link permanente
Link permanente
Link permanente
Ola quando vou programar a IDE diz ‘distanciamentoCM’ was not declared in this scope, pode me ajudar estou com tudo montado só falta programar grato Jorge.
Link permanente
O nome da variável é DistanciaemCM e não ‘distanciamentoCM’
Confere por favor e me fala se vai funcionar… Tmj
Link permanente
Dúvida: A bateria tem mesmo 3A ou 3mA. caso seja 3A onde encontrar ?
Link permanente
Opa Paulo Blz?
O recomendado é acima de 2 ou 3 A, pois assim dura mais tempo.
Tipo essa aqui https://produto.mercadolivre.com.br/MLB-1702366334-bat-carrinho-72v-aa-2700mah-com-conector-tamiya-_JM
Só envie o link para ter como referência ok?
Não conheço o vendedor.
Link permanente
`
boa tarde
seu codigo da um erro bem aqui
DistanciaemCM = SensorUltrassonico.convert(SensorUltrassonico.timing(), Ultrasonic::CM);
Arduino: 1.8.18 (Windows 10), Placa:”Arduino Nano, ATmega328P”
sketch_dec21c:36:37: error: ‘class Ultrasonic’ has no member named ‘convert’
DistanciaemCM = SensorUltrassonico.convert(SensorUltrassonico.timing(), Ultrasonic::CM);
O que pode ser
Link permanente
Provavelmente é biblioteca, existem alguns modelos da biblioteca do ultrassônico.
Confere se é a mesma que estou utilizando nesta programação, qualquer coisa deleta e reinstala.
E confere se o modelo da placa Arduino está certinho também.