#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define trig 23
#define echo 18
int microsPrevios;
int tiempoMax = 30000;
int tiempoDoble;
//int distance, duration;
byte conf[] = {3, 3, 3, 2, 2, 8, 0, 14, 0, 1, 0, 6};
byte tiempos[] = {15, 5, 1, 1, 1, 1, 1, 1};
bool rw = 0;
bool rs;
bool LED = 1;
byte pcf_addr = 0x27;
char mens1[] = "Cesar Rojas 7-8";
char mens2[] = "Distancia= mm";
byte cuen2=0;
byte pact;
byte uni, dec, cen, um, dm, cm, m;
long distancia, distt;
// void sendnibble(byte n, byte l, byte w, byte s) {
// byte dato = (n << 4) | (l << 3) | 0x04 | (w << 2) | s;
// Wire.beginTransmission(pcf_addr);
// Wire.write(dato);
// Wire.endTransmission();
// dato = dato & 0xfb;
// Wire.beginTransmission(pcf_addr);
// Wire.write(dato);
// Wire.endTransmission();
// }
// void sendbyte(char n) {
// byte dat = n >> 4;
// sendnibble(dat, LED, rw, rs);
// sendnibble(n, LED, rw, rs);
// }
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup(){
Serial.begin(115200);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
lcd.begin();
lcd.backlight();
lcd.print("Cesar Rojas 7-8");
lcd.setCursor(0,1);
lcd.print("Distancia: mm");
// Wire.begin();
// rs = 0;
// for (char i = 0; i <= 11; i++) {
// delay(tiempos[i]);
// sendnibble(conf[i], LED, rw, rs);
// }
// rs = 1;
// for (char i = 0; i < 15; i++) {
// sendbyte(mens1[i]);
// }
// updateDisplay();
// rs = 0;
// sendbyte(0xC0);
// rs = 1;
// for (char i = 0; i < 15; i++) {
// sendbyte(mens2[i]);
// }
// updateDisplay2();
// rs=0;
}
void loop(){
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
// // Medir la duración del pulso de eco
// duration = pulseIn(echo, HIGH);
// // Calcular la distancia en centímetros
// distance = (duration * 0.034) / 2;
// Serial.print(distance);
// Serial.print(" cm");
// Serial.println(" ");
microsPrevios=micros();
while(!digitalRead(echo)&&(micros()-microsPrevios)<=tiempoMax);
microsPrevios=micros();
while(digitalRead(echo)&&(micros()-microsPrevios)<=tiempoMax);
tiempoDoble=micros()-microsPrevios;
distancia=tiempoDoble*171/1000;
uni=distancia%10;
distt=distancia/10;
dec=distt%10;
distt=distt/10;
cen=distt%10;
distt=distt/10;
um=distt%10;
distt=distt/10;
dm=distt%10;
distt=distt/10;
cm=distt%10;
distt=distt/10;
m=distt%10;
distt=distt/10;
lcd.begin();
lcd.backlight();
lcd.print("Cesar Rojas 7-8");
lcd.setCursor(0,1);
lcd.print("Distancia: mm");
lcd.setCursor(10,1);
lcd.print(distancia);
Serial.print(distancia);
Serial.print("mm");
Serial.print(" ");
Serial.print(m);
Serial.print(" ");
Serial.print(cm);
Serial.print(" ");
Serial.print(dm);
Serial.print(" ");
Serial.print(um);
Serial.print(" ");
Serial.print(cen);
Serial.print(" ");
Serial.print(dec);
Serial.print(" ");
Serial.print(uni);
Serial.println(" ");
delay(1500);
// rs = 0;
// sendbyte(0x88); //0x88
// rs = 1;
// updateDisplay();
// rs=0;
// sendbyte(0xcc);
// rs=1;
// updateDisplay2();
}