#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

int golpe;


void setup() {
  Serial.begin(9600);
  mlx.begin();

  pinMode(8, OUTPUT);  //blanco
  pinMode(9, OUTPUT);  //gris, azul a 5 v

  pinMode(4, OUTPUT);  //blanco
  pinMode(5, OUTPUT);
}

void loop() {

  delay(1000);

  Serial.print("Ambiente = ");
  Serial.println(mlx.readAmbientTempC());
  Serial.print("ºC\tObjeto = ");
  Serial.print(mlx.readObjectTempC());
  Serial.println("ºC");
  delay(2000);



  if (mlx.readObjectTempC() > (mlx.readAmbientTempC() + 2)) {
    golpe = random(1, 3);
    Serial.println(golpe);
    if (golpe == 1) {
      derecho();
      Serial.println("golpe derecho");
      delay(5000);
    }
    if (golpe == 2) {
      izquierdo();
      Serial.println("golpe izquierdo");
      delay(5000);
    }
  }
}

void derecho() {

  digitalWrite(8, HIGH);
  delayMicroseconds(10);
  for (int i = 0; i < 450; i++) {
    digitalWrite(9, HIGH);
    delayMicroseconds(1000);  // conta mas bajo mas velocidad 590 mi-nimo
    digitalWrite(9, LOW);
  }
  delay(500);
  digitalWrite(8, LOW);
  delayMicroseconds(10);
  for (int i = 0; i < 450; i++) {
    digitalWrite(9, HIGH);
    delayMicroseconds(1000);
    digitalWrite(9, LOW);
  }
}
void izquierdo() {

  digitalWrite(4, LOW);
  delayMicroseconds(10);
  for (int i = 0; i < 350; i++) {
    digitalWrite(5, HIGH);
    delayMicroseconds(1000);  // conta mas bajo mas velocidad 590 mi-nimo
    digitalWrite(5, LOW);
  }
  delay(500);
  digitalWrite(4, HIGH);
  delayMicroseconds(10);
  for (int i = 0; i < 360; i++) {
    digitalWrite(5, HIGH);
    delayMicroseconds(1000);
    digitalWrite(5, LOW);
  }
}