#include <Wire.h>      // libreria para bus I2C
#include <Adafruit_GFX.h>   // libreria para pantallas graficas
#include <Adafruit_SSD1306.h>   // libreria para controlador SSD1306

#define ANCHO 128      // reemplaza ocurrencia de ANCHO por 128
#define ALTO 64       // reemplaza ocurrencia de ALTO por 64
#define OLED_RESET 4      // necesario por la libreria pero no usado

Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET);  // crea objeto

const int Trigger = 2;   //Pin digital 2 para el Trigger del sensor
const int Echo = 3;   //Pin digital 3 para el Echo del sensor

void setup() {
  Serial.begin(9600);//iniciailzamos la comunicación
  Wire.begin();      // inicializa bus I2C
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); // inicializa pantalla con direccion 0x3C
  
  pinMode(Trigger, OUTPUT); //pin como salida
  pinMode(Echo, INPUT);  //pin como entrada
  digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
}

void loop()
{
  float t; //timepo que demora en llegar el eco
  float d; //distancia en centimetros

  digitalWrite(Trigger, HIGH);
  delayMicroseconds(10);       //Enviamos un pulso de 10us
  digitalWrite(Trigger, LOW);
  
  t = pulseIn(Echo, HIGH);     //obtenemos el ancho del pulso
  d = t/59;                    //escalamos el tiempo a una distancia en cm

  oled.clearDisplay();         // limpia pantalla
  oled.setTextColor(WHITE);    // establece color al unico disponible (pantalla monocromo)
  oled.setTextSize(2);         // establece tamano de texto en 1
  oled.setCursor(0, 10);       // ubica cursor en origen de coordenadas 0,0
  oled.print("Distancia:");    // escribe texto
  oled.setCursor(38, 32);      // ubica cursor en coordenadas 0,16
  oled.print(d);               // escribe texto
  oled.setCursor(38, 48);      // ubica cursor en coordenadas 0,16 
  oled.print("[cm]");          // escribe texto
  oled.display();              // muestra en pantalla todo lo establecido anteriormente
  delay(500);                  //Hacemos una pausa de 100ms
}
