//************************************
#include <NewPing.h> // Libreria
#include <EEPROM.h> // Libreria

#define TRIGGER_PIN 9  // Pin de trigger conectado al pin 9
#define ECHO_PIN 10     // Pin de echo conectado al pin 10
#define MAX_DISTANCE 200 // Distancia máxima que quieres medir en centímetros
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
//************************************
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

const int redPin = 13;    // Pin para el color rojo del LED RGB
const int greenPin = 12;  // Pin para el color verde del LED RGB
const int bluePin = 11;   // Pin para el color azul del LED RGB

void setup()
{
  Serial.begin(115200);
  //*********************************
  lcd.init();
  lcd.backlight();

  // Configurar los pines del LED RGB como salidas
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop()
{
  delay(2000);
  unsigned int uS = sonar.ping(); // Obtenemos la distancia en microsegundos

  // Convertimos la distancia de microsegundos a centímetros
  float cm = sonar.convert_cm(uS);

  // Guardar la distancia en la EEPROM
  EEPROM.put(0, cm);

  // Mostrar la distancia en el LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Distancia:");
  lcd.setCursor(11, 0);
  lcd.print(cm);
  lcd.setCursor(16, 0);
  lcd.print(" cm");

  // Encender y apagar el LED RGB
  digitalWrite(redPin, HIGH);
  delay(500);
  digitalWrite(redPin, LOW);
  delay(500);

  digitalWrite(greenPin, HIGH);
  delay(500);
  digitalWrite(greenPin, LOW);
  delay(500);

  digitalWrite(bluePin, HIGH);
  delay(500);
  digitalWrite(bluePin, LOW);
  delay(500);
}