Bem, eu estou fazendo um robô, ja contrui ele e tudo, mas a programação esta difícil, estou a muito tempo tentando e não consigo, aqui está o código:
#include <Ultrassonico.h>
#include <Servo.h>
#define motoE1 6 //faz o motor Esquerdo ir para traz
#define motoE2 7 //faz o motor Esquerdo ir para frente
#define motoD1 8//faz o motor direito ir para traz
#define motoD2 9//faz o motor direito ir para frente
#define p_trigger 5 // dispara o som que vai ser rebatido
#define p_echo 4 // recebe a onda de som
int viraservo;
int viradireita;
int viraesquerda;
Servo sensor,garra; //servos da garra e da base do sensor
float dist_cm;
Ultrassonico ultrassonico(p_trigger, p_echo);
void setup() {
sensor.attach(2);
garra.attach(3);
viradireita = 180;
viraesquerda = 0;
pinMode(motoE1, OUTPUT);
pinMode(motoE2, OUTPUT);
pinMode(motoD1, OUTPUT);
pinMode(motoD2, OUTPUT);
digitalWrite (motoE1, LOW);
digitalWrite (motoE2, LOW);
digitalWrite (motoD1, LOW);
digitalWrite (motoD2, LOW);
sensor.write(90);
garra.write(60);
delay(100);
}
void loop() {
dist_cm=ultrassonico.ditancia_cm();
if (dist_cm >= 14.00 ){
digitalWrite (motoE2, HIGH);
digitalWrite (motoD2, HIGH);
}else{
digitalWrite (motoE2, LOW);
digitalWrite(motoD2, LOW);
if(dist_cm <=14.00){
viraservo = viradireita;
sensor.write(viraservo);
if(dist_cm >14.00){
digitalWrite(motoE2, HIGH);
digitalWrite(motoD1,HIGH);
delay(500);
}else {
viraservo = viraesquerda;
sensor.write(viraservo);
if(dist_cm >14.00){
digitalWrite(motoE1, HIGH);
digitalWrite(motoD2,HIGH);
delay(500);
}
}
}
}
}
O que eu queria fazer era o robô seguir em frente mas quando chegar a 14.00 cm da parede ele parar virar o sensor para a direita e caso tenha distancia o suficiente ele virar para a direita, caso contrario ele vira o sensor para a esquerda e caso tenha distância suficente ele vira para a esquerda, o robo possui 3 rodas 2 com motor e uma roda guia, coloquei uma placa H l298 que permite que o motor vire para os dois lados, e até a parte de chegar na parede e parar eu consegui porém depois disso o sensor fica maluko virando de um lado para o outro, Eu agradeceriam s alguem podesse me dar uma ideia de como resolver isso