//SUMO_Sin resticcion de desplazamiento. //Este programa funciona sobre cualquier pista ; el sumo ataca a su //contrincante indefinidamente.Inicialmente da vueltas hasta detecta //un contrincante. int motA0=8;// Pines para control de motores int motA1=9; int motB0=10; int motB1=11; int echo=6;//Sensor de obstaculos int triger=7; // Velocidad maxima 200. //Si el robot oscila mucho o pierde la linea puedes bajar un poco este valor, no menos de 100. int vel=150; void setup() { pinMode(motA0,OUTPUT);// Configuracion de pines pinMode(motA1,OUTPUT); pinMode(motB0,OUTPUT); pinMode(motB1,OUTPUT); pinMode(echo,INPUT); pinMode(triger,OUTPUT); digitalWrite(triger,LOW); digitalWrite(motA0,LOW); digitalWrite(motA1,LOW); digitalWrite(motB0,LOW); digitalWrite(motB1,LOW); } //Funcionamiento Sumo void loop() { if(distancia()<=30) { adelante(); delay(100); } else { izquierdaLento(); delay(10); } } long distancia() //Medicion de distancia { long t; long d; digitalWrite(triger, HIGH); delayMicroseconds(10); digitalWrite(triger, LOW); t = pulseIn(echo, HIGH); d = t/59; if (d<=3 || d>=25) { d=1000; } delay(10); return d; } void stopP() //Alto total { digitalWrite(motA0,HIGH); digitalWrite(motA1,HIGH); digitalWrite(motB0,HIGH); digitalWrite(motB1,HIGH); } void atras() //Reversa { digitalWrite(motA0,HIGH); digitalWrite(motA1,LOW); digitalWrite(motB0,HIGH); digitalWrite(motB1,LOW); } void adelante() //Avance { digitalWrite(motA0,LOW); digitalWrite(motA1,HIGH); digitalWrite(motB0,LOW); digitalWrite(motB1,HIGH); } void izquierdaLento() //Giro lento a la izquierda { digitalWrite(motA0,LOW); digitalWrite(motA1,LOW); digitalWrite(motB0,LOW); analogWrite(motB1,vel); } void derechaLento() //Giro lento a la derecha { digitalWrite(motA0,LOW); digitalWrite(motA1,vel); digitalWrite(motB0,LOW); analogWrite(motB1,LOW); }