int PinIN1 = 13;
int PinIN2 = 12;
int PinIN3 = 11;
int PinIN4 = 10;
int PinIN5 = 9; //Entradas//
int PinIN6 = 8;
int PinIN7 = 7;
int PinIN8 = 6;
const int Trigger = 4;
const int Echo = 5;
long t; //tiempo que demora en llegar el eco
long d; //distancia en centimetros
#include <Servo.h>
Servo myservo; //creamos un objeto servo
int angulo;
void setup() {
Serial.begin(9600); //inicializamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW); //Inicializamos el pin con 0
pinMode(PinIN1, OUTPUT);
pinMode(PinIN2, OUTPUT);
pinMode(PinIN3, OUTPUT);
pinMode(PinIN4, OUTPUT);
pinMode(PinIN5, OUTPUT);
pinMode(PinIN6, OUTPUT);
pinMode(PinIN7, OUTPUT);
pinMode(PinIN8, OUTPUT);
myservo.attach(3); // asignamos el pin 3 al servo.
Serial.begin(9600); // iniciamos el puerto serial
}
void loop()
{
sensor ();
if (d>15){
adelante();//condicional para que avanze hasta encontrar un objeto
Serial.println("adelante");
}
else if (d<=10){
MotorStop();
delay(1000);// condicional para detenerse al encontrar un objeto a 15cm de distancia
Serial.println("stop");
servo();
}
}
void MotorStop()
{
digitalWrite (PinIN1, 0);
digitalWrite (PinIN2, 0);
digitalWrite (PinIN3, 0);
digitalWrite (PinIN4, 0);
digitalWrite (PinIN5, 0);
digitalWrite (PinIN6, 0);
digitalWrite(PinIN7, 0);
digitalWrite (PinIN8, 0);
}
void adelante()
{
digitalWrite (PinIN1, 0);
digitalWrite (PinIN2, 1);
digitalWrite (PinIN3, 1);
digitalWrite (PinIN4, 0);
digitalWrite (PinIN5, 0);
digitalWrite (PinIN6, 1);
digitalWrite (PinIN7, 1);
digitalWrite (PinIN8, 0);
}
void derecha()
{
digitalWrite (PinIN1, 0);
digitalWrite (PinIN2, 1);
digitalWrite (PinIN3, 0);
digitalWrite (PinIN4, 1);
digitalWrite (PinIN5, 0);
digitalWrite (PinIN6, 1);
digitalWrite (PinIN7, 0);
digitalWrite (PinIN8, 1);
}
void izquierda()
{
digitalWrite (PinIN1, 1);
digitalWrite (PinIN2, 0);
digitalWrite (PinIN3, 1);
digitalWrite (PinIN4, 0);
digitalWrite (PinIN5, 1);
digitalWrite (PinIN6, 0);
digitalWrite (PinIN7, 1);
digitalWrite (PinIN8, 0);
}
void atras()
{
digitalWrite (PinIN1,1);
digitalWrite (PinIN2, 0);
digitalWrite (PinIN3, 0);
digitalWrite (PinIN4, 1);
digitalWrite (PinIN5, 1);
digitalWrite (PinIN6, 0);
digitalWrite (PinIN7, 0);
digitalWrite (PinIN8, 1);
}
void sensor ()
{
digitalWrite(Trigger, 1);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, 0);
t = pulseIn(Echo, 1); //obtenemos el ancho del pulso
d = t/59; //escalamos el tiempo a una distancia en cm
Serial.println(d);
}
void servo()
{
angulo=90;
myservo.write(angulo);
Serial.print("ángulo: ");
Serial.println(angulo);
delay(2000);
angulo= 0;
myservo.write(angulo);
Serial.print("ángulo: ");
Serial.println(angulo);
delay(2000);
angulo=90 ;
myservo.write(angulo);
Serial.print("ángulo: ");
Serial.println(angulo);
delay(2000);
angulo= 180;
myservo.write(angulo);
Serial.print("ángulo: ");
Serial.println(angulo);
delay(2000);
}
Necesito hacer que mi arduino guarde la distancia en cada giro del servo para despues decidir a donde girar.