#include<math.h>
byte p1, p2, p3;
float n1, n2, n3, n4, n5, n6;
float s1, s2, s3, s4, s5, s6;
float e = 2.7182;
void setup()
{
Serial.begin(9600);
pinMode(9, INPUT);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(13, OUTPUT);
}
void loop() {
p1 = digitalRead(9);
p2 = digitalRead(8);
p3 = digitalRead(7);
/* primer capa 2 Neuronas */
n1 = p1 * (2.4921) + p2 * (-0.2800) + p3 * (-3.2742) + (-2.4633);
n2 = p1 * (-2.7251 ) + p2 * (3.2713) + p3 * (-0.5065) + (-2.2958);
n3 = p1 * (0.4206) + p2 * (3.5840) + p3 * (-0.5386) + (-2.4834);
/* Analisis Tansig */
s1 = tansig(n1);
s2 = tansig(n2);
s3 = tansig(n3);
/* segunda capa 3 Neuronas */
n4 = s1 * (0.3835) + s2 * (-0.5583) + s3 * (-1.3142) + (-2.1593);
n5 = s1 * (1.8138) + s2 * (-1.8921 ) + s3 * (1.9884) + (0.9345);
/* Analisis tansig */
s4 = tansig(n4);
s5 = tansig(n5);
/* tercera capa 1 Neurona */
n6 = s4 * (0.2282) + s5 * (0.6282) + (0.6041);
s6 = hardlim(n6);
Serial.println(s6);
digitalWrite(13,s6 > 0.2 ? HIGH : LOW);
}
/* funcion tansig */
float tansig(float x) {
float a;
a = (pow(e, x) - pow(e, -x)) / (pow(e, x) + pow(e, -x));
return a;
}
/* funcion logsig */
float logsig(float x) {
float a;
a = (1 / (1 + pow(e, -x)));
return a;
}
/* Función purelin */
float purelin(float x) {
return x;
}
float hardlim(float x) {
if (x >= 0) {
return 1;
} else {
return 0;
}
}