/*
El origen de la pantalla está en la parte superior izquierda.
La pantalla se encuentra en el primer cuadrante, con el eje x hacia la derecha
*/
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <SPI.h>
const int pinSDA = 6;
const int pinSCL = 5;
const int pinTrigger = 38;
const int pinEcho = 37;
double Distancia;
Adafruit_SSD1306 Pantalla(128,64,&Wire,-1);
void setup() {
Serial.begin(115200);
//Inicialización pantalla
Wire.begin(pinSDA,pinSCL);
Pantalla.begin(SSD1306_SWITCHCAPVCC,0x3C);
//Inicialización pines sensor ultrasónico
pinMode(pinTrigger,OUTPUT);
pinMode(pinEcho,OUTPUT);
//Valores iniciales
Pantalla.setTextSize(1); //Cambio en el tamaño del texto
Pantalla.setTextColor(WHITE); //Cambio en el color del texto
Pantalla.clearDisplay(); //Limpieza del buffer (Antes de mostrar en la pantalla)
Pantalla.setCursor(0,32); //Ubicación del cursor para imprimir. Se manda los datos al buffer (Antes de mostrar en la pantalla)
Pantalla.print("Incializando"); //Se muestran los datos almacenados en el buffer en la pantalla
Pantalla.display();
}
void loop() {
Distancia = LeerDistancia();
ImprimirDistancia(Distancia);
}
double LeerDistancia(){
double TiempoDeDuracionEco;
//Pulso incial
digitalWrite(pinTrigger,LOW);
delay(2);
digitalWrite(pinTrigger,HIGH);
delay(10);
digitalWrite(pinTrigger,LOW);
//Obtención de la distancia
TiempoDeDuracionEco = pulseIn(pinEcho, HIGH); //Determina cuánto tiempo la señal pasa en HIGH en microsegundos
return TiempoDeDuracionEco*0.034/2; //Distancia en cm. Velocidad del sonido en cm/us
}
void ImprimirDistancia(double Distancia){
Pantalla.clearDisplay();
Pantalla.setCursor(0,32);
Pantalla.printf("Distancia: %.3lf cm",Distancia);
Pantalla.display();
}