Paso 5: sensores
Aquí son unas funciones que define para el sensor PING:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
duración larga sin signo, cm, pulgadas, dir; duración mide el tiempo entre PINGs
minsafe largo = 15; mínima distancia de seguridad delante de robot
int cuenta; utilizado para ayudar a identificar cuando el robot está en una esquina
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sin firmar largo be {//triggers el sensor ping una vez y devuelve el valor
pinMode (pingPin, salida); Hacer el Pingpin salida
digitalWrite (pingPin, LOW); Enviar un pulso bajo
delayMicroseconds(2); Espere dos microsegundos
digitalWrite (pingPin, HIGH); Enviar un pulso de alta
delayMicroseconds(5); esperar 5 segundos de micro
digitalWrite (pingPin, LOW); Enviar un pulso bajo
pinMode(pingPin,INPUT); Pingpin a la entrada del interruptor
duración = pulseIn (pingPin, HIGH); Escuchar para eco
/ * Convertir segundos micro pulgadas
*/
pulgadas = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.Print (cm);
Serial.Print ("CM");
Serial.println ();
volver cm;
}
largo microsecondsToInches(long microseconds) {}
volver microsegundos / 74 / 2;
}
largo microsecondsToCentimeters(long microseconds) {}
volver microsegundos / 29 / 2;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sin firmar largo leftping () {//records distancia a la izquierda del robot y lo devuelve al centro
int izquierda; utiliza para registrar la distancia medida por el (PING)
(IZQUIERDA);
retardo (420);
STOP ();
Delay(10);
Serial.Print ("izquierda:");
= izquierda (PING);
retardo (420);
(DERECHA);
retardo (420);
STOP ();
vuelta izquierda;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sin firmar largo rightping () {//records distancia a la derecha del robot y lo devuelve al centro
int derecha;
(DERECHA);
retardo (420);
STOP ();
Delay (10);
Serial.Print ("derecho:");
= derecha (PING);
retardo (420);
(IZQUIERDA);
retardo (420);
STOP();
volver a derecho;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
forwardping largo sin signo () {//essentiallhy PING
int medio;
STOP ();
Delay (10);
Serial.Print ("media:");
medio = (PING);
retorno medio;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sin firmar largo elegir () {//used a elegir entre nuestras funciones dos ping
leftping();
forwardping();
rightping();
if(leftping > rightping)
Si (leftping > forwardping)
(IZQUIERDA);
retardo (420);
STOP();
DIR = forwardping ();
Si (rightping > leftping)
Si (rightping > forwardping) {}
(DERECHA);
retardo (420);
STOP();
DIR = forwardping ();
} else
STOP ();
DIR = forwardping ();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////