#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;
  }
}