/*** Included libraries ***/
#include <BitbloqSoftwareSerial.h>
/*** Global variables and function definition ***/
uint8_t boton = 52;
const int PinTrig = 48; // antes 2;
const int PinEcho = 49; // antes 7;
bqSoftwareSerial puerto_serie(0, 1, 9600);
uint8_t IN1izqatras = 3;
uint8_t IN2izqalante = 4;
uint8_t IN3dchAtras = 5;
uint8_t IN4dchAlante = 6;
uint8_t ENAiz = 8;
uint8_t ENBdch = 9;
float voy = 0;
float obstaculo = 0;
const float VelSon = 34000.0;
void LeoTrigger()
{
digitalWrite(PinTrig, LOW);
delayMicroseconds(2);
digitalWrite(PinTrig, HIGH);
delayMicroseconds(10);
digitalWrite(PinTrig, LOW);
unsigned long tiempo = pulseIn(PinEcho, HIGH);
obstaculo = tiempo * 0.000001 * VelSon / 2.0;
puerto_serie.print(obstaculo);
puerto_serie.print("cm");
puerto_serie.println(tiempo);
}
void pared() {
LeoTrigger();
while (obstaculo <= 10) {
digitalWrite(IN2izqalante, LOW);
digitalWrite(IN4dchAlante, LOW);
delay(200);
digitalWrite(IN1izqatras, HIGH);
delay(1200);
digitalWrite(IN1izqatras, LOW);
puerto_serie.println(obstaculo);
LeoTrigger();
}
}
/*** Setup ***/
void setup() {
pinMode(boton, INPUT);
puerto_serie.begin(9600);
pinMode(IN1izqatras, OUTPUT);
pinMode(IN2izqalante, OUTPUT);
pinMode(IN3dchAtras, OUTPUT);
pinMode(IN4dchAlante, OUTPUT);
pinMode(PinTrig, OUTPUT);
pinMode(PinEcho, INPUT);
pinMode(ENAiz, OUTPUT);
pinMode(ENBdch, OUTPUT);
analogWrite(ENAiz, 120);
analogWrite(ENBdch, 120);
}
/*** Loop ***/
void loop() {
if (digitalRead(boton) == 1) {
while (digitalRead(boton) == 1) {
}
if (voy == 0) {
voy = 1;
}
else {
voy = 0;
}
}
if (voy == 0) {
digitalWrite(IN2izqalante, LOW);
digitalWrite(IN4dchAlante, LOW);
}
else {
digitalWrite(IN2izqalante, HIGH);
digitalWrite(IN4dchAlante, HIGH);
pared();
}
}