utlilizei o seguinte sktche:

// plataforma robótica com sensor ultrasonico

#include<Ultrasonic.h>// biblioteca de controle do sensor

 

 

int velocidadeM1=10;// pino PWM que é conectado ao  primeiro pino do L293 que controla a velocidade do motor1

int velocidadeM2=6;// controle da velocidade do motor2

int direcao1M1=9;// os pinos abaixo controlam as duas pontes H do L293D

int direcao2M1=8;

int direcao1M2=5;

int direcao2M2=4;

#define pino_trigger 3

#define pino_echo 2

//Inicializa o sensor nos pinos definidos acima

Ultrasonic ultrasonic(pino_trigger, pino_echo);

 int distancia;// armazena a distancia lida pelo sensor

 

 

void setup()

{

  pinMode(velocidadeM1,OUTPUT);

  pinMode(direcao1M1,OUTPUT);

  pinMode(direcao2M1,OUTPUT);

  pinMode(velocidadeM2,OUTPUT);

  pinMode(direcao1M2,OUTPUT);

  pinMode(direcao2M2,OUTPUT);

}

 

void loop() { // escreveremos as funções para os movimentos da plataforma robótica

  //Le as informacoes do sensor, em cm e pol

 

  long microsec = ultrasonic.timing();

  distancia = ultrasonic.convert(microsec, Ultrasonic::CM);

   frente();// inicializa seguindo para frente

if(distancia<=50){// aqui você pode alterar as distancias

  // AbAIXO FIZ UM EXEMPLO DE ROTINA AO ATINGIR A CONDIÇAO, PODE ALTERAR A VONTADE

  re();

  delay(1000);

  direita();

  delay(1000);

  frente();

 if(distancia>50){// PODERIA USAR um else{}

  frente();

 }

}

}

// definição das funçoes usadas no loop

void frente(){

  analogWrite(velocidadeM1,155);// pode alterar a veocidade do motor 1 e 2 de 0 a 255 ( se muito baixo ele não gira);

  analogWrite(velocidadeM2,155);

  digitalWrite(direcao1M1,HIGH);

  digitalWrite(direcao2M1,LOW);

  digitalWrite(direcao1M2,HIGH);

  digitalWrite(direcao2M2,LOW);

}

 

void re(){

  analogWrite(velocidadeM1,150);

  analogWrite(velocidadeM2,150);

  digitalWrite(direcao1M1,LOW);

  digitalWrite(direcao2M1,HIGH);

  digitalWrite(direcao1M2,LOW);

  digitalWrite(direcao2M2,HIGH);

}

 

void parar(){

  digitalWrite(direcao1M1,LOW);

  digitalWrite(direcao2M1,LOW);

  digitalWrite(direcao1M2,LOW);

  digitalWrite(direcao2M2,LOW);

}

void direita(){

  analogWrite(velocidadeM1,0);

  analogWrite(velocidadeM1,50);.......

Exibições: 142

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço