Robot Sumo Arduino (Programación)
Robot Sumo Arduino (Programación)
h>
Servo servito;
int echoPin = 2;
int initPin = 3;
int
int
int
int
SS4Pin=A0;
SS1Pin=A1;
SS3Pin=A2;
SS2Pin=A3;
int
int
int
int
S4Pin=0;
S1Pin=0;
S3Pin=0;
S2Pin=0;
int
int
int
int
MOTDaPin=10;
MOTDbPin=11;
MOTIaPin=13;
MOTIbPin=12;
cuadrante
cuadrante
cuadrante
cuadrante
4
1
3
2
int i=0;
unsigned long pulseTime = 0;
onds
unsigned long distance = 0;
unsigned long distancia = 50;
int angulo=0;
int sentido=0;
int LED = 8;
in 8
long ultrasonico(){
digitalWrite(initPin, HIGH);
delayMicroseconds(10);
urning off
digitalWrite(initPin, LOW);
pulseTime = pulseIn(echoPin, HIGH);
hould be high as the pulse goes low-high-low
distance = pulseTime/58;
convert to cm.
return (distance);
}
void localizacion(){
distancia=ultrasonico();
leerSensor();
while(distancia>=20&&S1Pin<=400&&S2Pin<=400&&S3Pin<=400&&S4Pin<=400){
leerSensor();
distancia=ultrasonico();
digitalWrite(LED,LOW);
if(sentido==0){
servito.write(angulo);
angulo=angulo+10;
if(angulo==180)
sentido=1;
}
if(sentido==1){
servito.write(angulo);
angulo=angulo-10;
if(angulo==0)
sentido=0;
}
delay(75);
adelante();
}
preguntar();
ataque();
}
////////////////////////////////////////////////MOTOREEEEEEES///////////////////
//////////////////////////////////
void izquierda1(){
digitalWrite(MOTIaPin,LOW);
digitalWrite(MOTIbPin,LOW);
digitalWrite(MOTDaPin,HIGH);
digitalWrite(MOTDbPin,LOW);
delay(100);
}
void izquierda2(){
digitalWrite(MOTIaPin,LOW);
digitalWrite(MOTIbPin,HIGH);
digitalWrite(MOTDaPin,HIGH);
digitalWrite(MOTDbPin,LOW);
delay(100);
}
void derecha1(){
digitalWrite(MOTIaPin,HIGH);
digitalWrite(MOTIbPin,LOW);
digitalWrite(MOTDaPin,LOW);
digitalWrite(MOTDbPin,LOW);
delay(100);
}
void derecha2(){
digitalWrite(MOTIaPin,HIGH);
digitalWrite(MOTIbPin,LOW);
digitalWrite(MOTDaPin,LOW);
digitalWrite(MOTDbPin,HIGH);
delay(100);
}
void contrataque(){
for(i=0;i<4;i++){
digitalWrite(MOTIaPin,HIGH);
digitalWrite(MOTIbPin,LOW);
digitalWrite(MOTDaPin,LOW);
digitalWrite(MOTDbPin,HIGH);
delay(200);
digitalWrite(MOTIaPin,LOW);
digitalWrite(MOTIbPin,HIGH);
digitalWrite(MOTDaPin,HIGH);
digitalWrite(MOTDbPin,LOW);
delay(200);
}
digitalWrite(MOTIaPin,HIGH);
digitalWrite(MOTIbPin,LOW);
digitalWrite(MOTDaPin,HIGH);
digitalWrite(MOTDbPin,LOW);
delay(500);
}
void adelante(){
digitalWrite(MOTIaPin,HIGH);
digitalWrite(MOTIbPin,LOW);
digitalWrite(MOTDaPin,HIGH);
digitalWrite(MOTDbPin,LOW);
}
/////////////////////////////////////////ATAQUEEEEEE////////////////////////////
///////////////////////////////////
void ataque(){
//while(millis()<1000){
while(S1Pin<=400&&S2Pin<=400&&S3Pin<=400&&S4Pin<=400){
if(angulo==90){
servito.write(90);
while(ultrasonico()>20){
// WHILE PENDIENTE X ROMPER
derecha2();
ultrasonico();
}
adelante();
}
if(angulo>90){
servito.write(90);
while(ultrasonico()>30){
// WHILE PENDIENTE X ROMPER
izquierda2();
ultrasonico();
}
adelante();
}
if(angulo<90){
servito.write(90);
while(ultrasonico()>30){
derecha2();
ultrasonico();
}
adelante();
}
leerSensor();
digitalWrite(LED,HIGH);
}
//previousMillis=0;
//}
}
/////////////////////////////////////////PREGUNTAAA/////////////////////////////
///////////////////////////////////
void preguntar(){
if(S1Pin<=400&&S2Pin<=400&&S3Pin<=400&&S4Pin>400){
izquierda1();
}
if(S1Pin>400&&S2Pin<=400&&S3Pin<=400&&S4Pin<=400){
izquierda2();
}
if(S1Pin>400&&S2Pin<=400&&S3Pin<=400&&S4Pin>400){
izquierda2();
}
if(S1Pin<=400&&S2Pin>400&&S3Pin<=400&&S4Pin<=400){
derecha2();
}
if(S1Pin<=400&&S2Pin>400&&S3Pin<=400&&S4Pin>400){
izquierda2();
}
if(S1Pin>400&&S2Pin>400&&S3Pin<=400&&S4Pin<=400){
izquierda2();
}
if(S1Pin<=400&&S2Pin<=400&&S3Pin>400&&S4Pin<=400){
derecha1();
}
if(S1Pin<=400&&S2Pin<=400&&S3Pin>400&&S4Pin>400){
contrataque();
}
if(S1Pin>400&&S2Pin<=400&&S3Pin>400&&S4Pin<=400){
derecha2();
}
if(S1Pin<=400&&S2Pin>400&&S3Pin>400&&S4Pin<=400){
derecha2();
}
}
void leerSensor(){
S1Pin=analogRead(SS1Pin);
S2Pin=analogRead(SS2Pin);
S3Pin=analogRead(SS3Pin);
S4Pin=analogRead(SS4Pin);
}
void setup() {
servito.attach(9);
pinMode(LED, OUTPUT);
pinMode(initPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(S1Pin, INPUT);
pinMode(S2Pin, INPUT);
pinMode(S3Pin, INPUT);
pinMode(S4Pin, INPUT);
delay(1000);
}
// execute
void loop()
{
localizacion();
}