Hola,llevo un mes con Arduino y he montado un 2wd con L298N, arduino uno con shield v5.0, con un módulo de bluetooh y sensor de ultrasonidos, para que no se chocara, pero no sé como pararlo antes que se choque, solo he conseguido que funcione adelante y atrás.No sé que estoy haciendo mal, este es el código:
#include <NewPing.h>
char estado;
int ENB = 5;
int IN1 = 7;
int IN2 = 8;
int IN3 = 9;
int IN4 = 11;
int ENA = 6;
int vel = 255;
int ECO = A1;
int TRIG = A0;
#define MAX_DISTANCE 200
NewPing sonar(TRIG, ECO, MAX_DISTANCE);
void setup() {
pinMode (ENB, OUTPUT);
pinMode (ENA, OUTPUT);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
pinMode(TRIG, OUTPUT);
pinMode(ECO, INPUT);
Serial.begin(9600);
}
void loop() {
delay(50);
Serial.print("Ping: ");
Serial.print(sonar.ping_cm());
Serial.println("cm");
if (Serial.available() > 0) {
delay(100);
while (Serial.available()) {
estado = Serial.read();
if (estado == 'f') {
analogWrite (ENA, HIGH);
analogWrite (ENB, HIGH);
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
if (estado == 'l') {
analogWrite (ENA, vel);
analogWrite (ENB, vel);
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
if (estado == 's') {
analogWrite (ENA, 0);
analogWrite (ENB, 0);
digitalWrite (IN1, 0);
digitalWrite (IN2, 0);
digitalWrite (IN3, 0);
digitalWrite (IN4, 0);
}
if (estado == 'r') {
analogWrite (ENA, vel);
analogWrite (ENB, vel);
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
if (estado == 'b') {
analogWrite (ENA, vel);
analogWrite (ENB, vel);
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
else {
analogWrite (ENA, vel);
analogWrite (ENB, vel);
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
}
}
}