Hola, estoy creando un robot con Arduino UNO que se mueva hacia delante hasta que vea una pared y entonces se pare (mas adelante ya haré que gire hacia un lado o otro) pero he creado el código y sin dar error el coche no se mueve, ya he comprobado si los pines están bien conectados y el coche funcionaba hasta que adapté el código al sensor de ultrasonido.
El código es el siguiente:
#define trigPin 3
#define echoPin 4
const int pinIN1 = 5;
const int pinIN2 = 6;
const int pinIN3 = 7;
const int pinIN4 = 8;
const int pinENA = 9;
const int pinENB = 10;
const int waitTime = 2000; //esperar
const int speed = 200; //velocidad de giro
const int pinMotorA[3] = {pinENA, pinIN1, pinIN2};
const int pinMotorB[3] = {pinENB, pinIN3, pinIN4};
void setup() {
pinMode(pinIN1, OUTPUT);
pinMode(pinIN2, OUTPUT);
pinMode(pinENA, OUTPUT);
pinMode(pinIN3, OUTPUT);
pinMode(pinIN4, OUTPUT);
pinMode(pinENB, OUTPUT);
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long duracion, distancia ;
digitalWrite(trigPin, LOW); // Nos aseguramos de que el trigger está desactivado
delayMicroseconds(2); // Para asegurarnos de que el trigger esta LOW
digitalWrite(trigPin, HIGH); // Activamos el pulso de salida
delayMicroseconds(10); // Esperamos 10µs. El pulso sigue active este tiempo
digitalWrite(trigPin, LOW); // Cortamos el pulso y a esperar el echo
duracion = pulseIn(echoPin, HIGH);
distancia = duracion / 2 / 29.1 ;
Serial.println(String(distancia) + " cm.");
int Limite = 200; // Medida en vacío del sensor
if ( distancia < Limite){
fullStop(pinMotorA);
fullStop(pinMotorB);
delay(waitTime);
}else
moveForward(pinMotorA, 180);
moveForward(pinMotorB, 180);
delay (500) ; // Para limitar el número de mediciones
/*
moveRight(pinMotorA, 180);
moveRight(pinMotorB, 180);
delay(waitTime);
moveLeft(pinMotorA, 180);
moveLeft(pinMotorB, 180);
delay(waitTime);
fullStop(pinMotorA);
fullStop(pinMotorB);
delay(waitTime);
*/
}
void moveForward(const int pinMotor[3], int speed) //mover hacia delante
{
digitalWrite(pinMotor[1], HIGH);
digitalWrite(pinMotor[2], HIGH);
analogWrite(pinMotor[0], speed);
}
void moveRight(const int pinMotor[3], int speed) //mover a la derecha
{
digitalWrite(pinMotor[1], HIGH);
digitalWrite(pinMotor[2], LOW);
analogWrite(pinMotor[0], speed);
}
void moveLeft(const int pinMotor[3], int speed) //mover a la izquierda
{
digitalWrite(pinMotor[1], LOW);
digitalWrite(pinMotor[2], HIGH);
analogWrite(pinMotor[0], speed);
}
void fullStop(const int pinMotor[3]) //parar
{
digitalWrite(pinMotor[1], LOW);
digitalWrite(pinMotor[2], LOW);
analogWrite(pinMotor[0], 0);
}
Gracias adelantadas.