Académique Documents
Professionnel Documents
Culture Documents
INGENIERÍA MECATRÓNICA
DEBER NO. 1
FUNCIÓN TRIGONOMÉTRICA CON LÓGICA DIFUSA
MÉNDEZ KATHERINE
Para determinar los valores de las funciones de membresía se requiere conocer a profundidad la
función a analizar, por lo que se la representa en Excel.
Y=13sen(0.1*(x-pi/2))+13
27.5000
25.0000
22.5000
20.0000
17.5000
AMPLITUD
15.0000
12.5000
Series1
10.0000
7.5000
5.0000
2.5000
0.0000
-20.0000 -10.0000 0.0000 10.0000 20.0000 30.0000 40.0000 50.0000
GRADOS [rad]
Reglas determinadas
PROGRAMACIÓN EN ARDUINO
#include <LiquidCrystal.h>
//VARIABLES
//ang es angulo que se ingresa
double ang=0;
//son alfa 1 y alfa 2
double u1=0;
double u2=0;
double k1=0;
double k2=0;
char in='0';
char ou='0';
double out=0;
double c=0;
//L9
double L9(double x){
double u=-0.1274*(x)+2.8013;
return u;
}
//L10
double L10(double x){
double u=0.1274*(x)-1.8013;
return u;
}
//L11
double L11(double x){
float u=-(0.127226)*x+3.79771;
return u;
}
//L12
double L12(double x){
double u=(0.127226)*x-2.79771;
return u;
}
//L13
double L13(double x){
double u=-(0.127389)*x+4.80255;
return u;
}
double L14(double x){
double u=(0.127389)*x-3.80255;
return u;
}
double L15(double x){
double u=-(0.127389)*x+5.80255;
return u;
}
//FUNCIONES DE SALIDA
double K1(double y){
double k=-3.25*y+3.25;
return k;
}
//K2
double K2(double y){
double k=3.25*y;
return k;
}
//K3
double K3(double y){
float k=-3.25*y+6.5;
return k;
}
//K4
double K4(double y){
double k=3.25*y+3.25;
return k;
}
{
// Serial.print("NEGATIVOS");
//Serial.print("POSITIVOS");
u1=L5(ang);
u2=L6(ang);
}
u1=L7(ang);
u2=L8(ang);
u1=L9(ang);
u2=L10(ang);
}
u1=L11(ang);
u2=L12(ang);
u1=L13(ang);
u2=L14(ang);
u1=L15(ang);
u2=L16(ang);
c=0.00003*ang*ang*ang*ang-0.0018*ang*ang*ang-0.016*ang*ang+1.167*ang+15.037;
if (u1>=u2)
{out=u2;}
if (u2>u1)
{out=u1;}
//COMIENZA SERIAL
void setup() {
Serial.begin(9600);
}
void loop() {
// Serial.print("INGRESE EL ÁNGULO DE ENTRADA ");
if(Serial.available()>0){
String data = Serial.readStringUntil('\n');
//lo transforma a doble
ang=data.toDouble();
//se ingresa a CalcU el angulo doble
Serial.println("ANGULO= ");
Serial.println(ang);
CalcU(ang);
// Serial.print("LOS DATOS SON");
Serial.print("ALFA1= ");
Serial.println(u1);
Serial.print("ALFA2= ");
Serial.println(u2);
Serial.println("ALFA MIN=");
Serial.println(out);
CalcOut(out);
Serial.print("BETA1= ");
Serial.println(k1);
Serial.print("BETA2= ");
Serial.println(k2);
Serial.println("CENTROIDE");
Serial.println(c);
Serial.print("////////////////");