#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Pin de reset del OLED (o -1 si se comparte con el pin de reset del Arduino)
// Inicializar el objeto de pantalla OLED
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Variables para los pines para el sensor
int trigPin = 12;
int echoPin = 14;
// Variables para el cálculo de la medición
long duracion = 0;
int distancia = 0;
void setup() {
// Iniciar comunicación serial
Serial.begin(9600);
// Configurar los pines del sensor
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Iniciar el OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Dirección I2C 0x3C
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Limpiar el buffer de la pantalla OLED
display.clearDisplay();
}
void loop() {
// Activar el trigger con un pulso corto
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Medir el tiempo que tarda en llegar el eco
duracion = pulseIn(echoPin, HIGH);
// Calcular la distancia en centímetros
distancia = (duracion * 0.034 / 2) + 1;
// Limpiar la pantalla OLED
display.clearDisplay();
// Mostrar distancia en el OLED
display.setTextSize(1); // Tamaño del texto
display.setTextColor(SSD1306_WHITE); // Color del texto
display.setCursor(0, 0); // Posición del texto (x, y)
display.println("Distancia:"); // Texto a mostrar
display.println(distancia); // Mostrar la distancia
display.println("cm"); // Unidad de medida
display.display(); // Mostrar en la pantalla OLED
// Imprimir distancia en el monitor serial
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
// Esperar antes de la próxima medición
delay(500);
}