Professional Documents
Culture Documents
h>
#include <Servo.h>
#include <EEPROM.h>
#include <Depecabot3.h>
Depecabot robot;
#define SERVO_INIT_POS 90
// Conjuntos de Entradas //
#define LEJOS_ATRAS 0
#define MEDIO_ATRAS 1
#define CERCA_ATRAS 2
#define CORRECTO 3
#define CERCA_ALANTE 4
#define MEDIO_ALANTE 5
#define LEJOS_ALANTE 6
// Conjuntos de Salida //
#define RETROCESO_RAPIDO -200
#define RETROCESO_MEDIO -30
#define RETROCESO_LENTO -5
#define PARADO 0
#define AVANCE_LENTO 5
#define AVANCE_MEDIO 30
#define AVANCE_RAPIDO 200
void Fuzzyfication(int X)
{
char i;
for(i=LEJOS_ATRAS;i<=LEJOS_ALANTE;i++)
Pertenencias[i]=0;
for(i=LEJOS_ATRAS;i<=LEJOS_ALANTE;i++)
{
if(X > (-30+(10*i)) && X <= (-20+(10*i)))
{
Pertenencias[i]=(-10*X+(-200+(100*i)));
Pertenencias[i+1]=(10*X+(300-(100*i)));
}
}
int DeFuzzyfication()
{
char i;
long sumatorio_salidas=0, sumatorio_activacion=0;
for(i=0;i<7;i++)
{
sumatorio_salidas+=Salidas[i];
sumatorio_activacion+=Pertenencias[i];
}
return (sumatorio_salidas/sumatorio_activacion);
}
void setup()
{
robot.init ();
robot.servo1.attach(SERVO); //Inicializacion servo
robot.servo1.write(SERVO_INIT_POS);
robot.lcd.clear();
}
void loop()
{
robot.lcd.setCursor(0,0);
if(millis()-timerLCD>200)
{
timerLCD=millis();
robot.lcd.clear();
robot.lcd.setCursor(10,0);
robot.lcd.print(distancia);
robot.lcd.setCursor(40,0);
robot.lcd.print(motor);
robot.lcd.setCursor(0,2);
robot.lcd.print(Pertenencias[LEJOS_ATRAS]);
robot.lcd.setCursor(22,2);
robot.lcd.print(Pertenencias[MEDIO_ATRAS]);
robot.lcd.setCursor(44,2);
robot.lcd.print(Pertenencias[CERCA_ATRAS]);
robot.lcd.setCursor(66,2);
robot.lcd.print(Pertenencias[CORRECTO]);
robot.lcd.setCursor(0,4);
robot.lcd.print(Pertenencias[CERCA_ALANTE]);
robot.lcd.setCursor(22,4);
robot.lcd.print(Pertenencias[MEDIO_ALANTE]);
robot.lcd.setCursor(44,4);
robot.lcd.print(Pertenencias[LEJOS_ALANTE]);
}
if(millis()-timerGP2D>2)
{
timerGP2D=millis();
distancia=robot.gp2dmm(GP2);
ERROR=CONSIGNA-distancia;
Fuzzyfication(ERROR);
motor=(DeFuzzyfication())*-1;
robot.motores(motor,motor);
}
}