#include #include #define DS3231_I2C_ADDRESS 104 // initialize the library with the numbers of the interface pins LiquidCrystal lcd (8, 9, 4, 5, 6, 7); // variables int  seconds, minutes, hours, dia, date, month, year, Volts, lectura; String weekDia; int horas = 0; int minutos = 0; int segundos = 0; int decimas = 0; long milisegundos = 0; void setup() {  Wire.begin(9600);  lcd.begin(16, 2); //setDate(30,21,13,03,16,8,17);  //setDate(segundos (0-59), minutos (0-59), horas (0-23), día (1-7), fecha (0-31), mes (1-12) 99)) } void loop() { lcd.clear();  // get date from DS3231  getDate();  // display time and date  cronometro();  cronometro();  cronometro();  cronometro();  cronometro();  cronometro();  cronometro();  cronometro();  cronometro();  delay(2000);  lcd.setCursor(0,0);  lcd.print(weekDia);  lcd.print(" ");  if(date<10)    lcd.print("0");  lcd.print(date);  lcd.print("/");  if(month<10)    lcd.print("0");  lcd.print(month);  lcd.print("/2017     ");  lcd.print(year);  lcd.setCursor(4,1);  lcd.print(hours);  lcd.print(":");  if(minutes<10)    lcd.print("0");  lcd.print(minutes);  lcd.print(":");  if(seconds<10)    lcd.print("0");  lcd.print(seconds);  delay(3000);  ihscompany();  lcd.clear();  // get date from DS3231  getDate();  // display time and date  lcd.setCursor(0,0);  lcd.print(weekDia);  lcd.print(" ");  if(date<10)    lcd.print("0");  lcd.print(date);  lcd.print("/");  if(month<10)    lcd.print("0");  lcd.print(month);  lcd.print("/2017    ");  lcd.print(year);  lcd.setCursor(4,1);  lcd.print(hours);  lcd.print(":");  if(minutes<10)    lcd.print("0");  lcd.print(minutes);  lcd.print(":");  if(seconds<10)    lcd.print("0");  lcd.print(seconds);  delay(3000);  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  telefonoihs();  lcd.clear();  // get date from DS3231  getDate();  // display time and date  lcd.setCursor(0,0);  lcd.print(weekDia);  lcd.print(" ");  if(date<10)    lcd.print("0");  lcd.print(date);  lcd.print("/");  if(month<10)    lcd.print("0");  lcd.print(month);  lcd.print("/2017    ");  lcd.print(year);  lcd.setCursor(4,1);  lcd.print(hours);  lcd.print(":");  if(minutes<10)    lcd.print("0");  lcd.print(minutes);  lcd.print(":");  if(seconds<10)    lcd.print("0");  lcd.print(seconds);  delay(3000);  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  publicidadihs();  lcd.clear();  // get date from DS3231  getDate();  // display time and date  lcd.setCursor(0,0);  lcd.print(weekDia);  lcd.print(" ");  if(date<10)    lcd.print("0");  lcd.print(date);  lcd.print("/");  if(month<10)    lcd.print("0");  lcd.print(month);  lcd.print("/2017    ");  lcd.print(year);  lcd.setCursor(4,1);  lcd.print(hours);  lcd.print(":");  if(minutes<10)    lcd.print("0");  lcd.print(minutes);  lcd.print(":");  if(seconds<10)    lcd.print("0");  lcd.print(seconds);  delay(3000);  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  clienteizquierda();  lcd.clear();  // get date from DS3231  getDate();  // display time and date  lcd.setCursor(0,0);  lcd.print(weekDia);  lcd.print(" ");  if(date<10)    lcd.print("0");  lcd.print(date);  lcd.print("/");  if(month<10)    lcd.print("0");  lcd.print(month);  lcd.print("/2017    ");  lcd.print(year);  lcd.setCursor(4,1);  lcd.print(hours);  lcd.print(":");  if(minutes<10)    lcd.print("0");  lcd.print(minutes);  lcd.print(":");  if(seconds<10)    lcd.print("0");  lcd.print(seconds);  delay(3000);  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  equipoderecha();  lcd.clear();  // get date from DS3231  getDate();  // display time and date  lcd.setCursor(0,0);  lcd.print(weekDia);  lcd.print(" ");  if(date<10)    lcd.print("0");  lcd.print(date);  lcd.print("/");  if(month<10)    lcd.print("0");  lcd.print(month);  lcd.print("/2017    ");  lcd.print(year);  lcd.setCursor(4,1);  lcd.print(hours);  lcd.print(":");  if(minutes<10)    lcd.print("0");  lcd.print(minutes);  lcd.print(":");  if(seconds<10)    lcd.print("0");  lcd.print(seconds);  delay(3000);  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  contactoihs();  lcd.clear();  // get date from DS3231  getDate();  // display time and date  lcd.setCursor(0,0);  lcd.print(weekDia);  lcd.print(" ");  if(date<10)    lcd.print("0");  lcd.print(date);  lcd.print("/");  if(month<10)    lcd.print("0");  lcd.print(month);  lcd.print("/2017    ");  lcd.print(year);  lcd.setCursor(4,1);  lcd.print(hours);  lcd.print(":");  if(minutes<10)    lcd.print("0");  lcd.print(minutes);  lcd.print(":");  if(seconds<10)    lcd.print("0");  lcd.print(seconds);  delay(3000);  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();  bateria ();    delay(2000); } void getDate() {  // Send request to DS3231 to receive the date  Wire.beginTransmission(DS3231_I2C_ADDRESS);  Wire.write(0x00);  // start at register 00h (seconds)  Wire.endTransmission();  Wire.requestFrom(DS3231_I2C_ADDRESS, 7);   // Request 7 bytes (00h - 001h)  while(Wire.available())  {    seconds = Wire.read();    minutes = Wire.read();    hours = Wire.read();    dia = Wire.read();    date = Wire.read();    month = Wire.read();    year = Wire.read();        // convert BCD to decimal    seconds = (((seconds >> 4) * 10) + (seconds & B00001111));    minutes = (((minutes >> 4) * 10) + (minutes & B00001111));    hours = ((((hours & B00110000) >> 4) * 10) + (hours & B00001111));    dia= (dia & B00000111);    month = ((((month & B00010000) >> 4) * 10) + (month & B00001111));    date = ((((date & B00110000)>> 4) * 10) + (date & B00001111));      year = (((year >> 4) * 10) + (year & B00001111));  }   switch (dia)  {    case 1:      weekDia = "Lun";      break;    case 2:      weekDia = "Mar";      break;    case 3:      weekDia = "Mie";      break;    case 4:      weekDia = "Jue";      break;    case 5:      weekDia = "Vie";      break;    case 6:      weekDia = "Sab";      break;      case 7:      weekDia = "Dom";      break;      default: break;  } } void setDate(byte seconds, byte minutes, byte hours, byte dia, byte date, byte month, byte year) {  // convert DEC to BCD  seconds = (seconds % 10) + ((seconds / 10) << 4);  minutes = (minutes % 10) + ((minutes / 10) << 4);  hours = (hours % 10) + ((hours / 10) << 4);  date = (date % 10) + ((date / 10) << 4);  month = (month % 10) + ((month / 10) << 4);  year = (year % 10) + ((year / 10) << 4);  Wire.beginTransmission(DS3231_I2C_ADDRESS);  Wire.write(0x00);  Wire.write(seconds);  Wire.write(minutes);  Wire.write(hours);  Wire.write(dia);  Wire.write(date);  Wire.write(month);  Wire.write(year);  Wire.endTransmission(); } // Las ocho rutinas de IHS void ihscompany() {  lcd.clear();// Borra pantalla  lcd.setCursor(5, 0); // Cursor en columna 5 fila 0  lcd.print("I H S");// Imprime algo de texto  lcd.setCursor(1, 1); // Cursor en columna 5 fila 0  lcd.print("C O M P A N Y");// Imprime algo de texto  delay(5000); } void telefonoihs() {  lcd.clear(); // Borra pantalla  lcd.setCursor(2, 0); // Cursor en columna 5 fila 0  lcd.print("TELEFONO IHS:");// Imprime algo de texto  lcd.setCursor(3, 1); // Cursor en columna 5 fila 0  lcd.print("55-53605692");// Imprime algo de texto  for (int x = 0; x < 3; x++) { // ciclo 3 veces    lcd.noDisplay(); // Apaga display    delay(1000);    lcd.display(); // Prende display otra vez    delay(3000);  } } void publicidadihs() {  lcd.clear(); // Borra pantalla  lcd.setCursor(0, 0); // Cursor en columna 5 fila 0  lcd.print("Manejo de carga"); // Imprime texto  delay(2000);  lcd.clear(); // Borra pantalla  lcd.setCursor(0, 0); // Cursor en columna 5 fila 0  lcd.print("Instrumentos ");  delay(500);  lcd.setCursor(5, 1); // Cursor en columna 10 fila 1  lcd.print("de Medicion");  delay(2000);  lcd.clear(); // Borra pantalla  lcd.setCursor(2, 0); // Cursor en columna 5 fila 0  lcd.print("Reparaciones");  delay(1000);  lcd.setCursor(2, 1); // Cursor en columna 10 fila 1  lcd.print("Calibraciones");  delay(3000);  lcd.clear(); // borra pantalla  lcd.setCursor(1, 0); // Cursor en columna 5 fila 0  lcd.print("Visita nuestra");  delay(1000);  lcd.setCursor(3, 1); // Cursor en columna 10 fila 1  lcd.print("pagina web");  delay(3000);  lcd.clear(); // Borra pantalla  lcd.setCursor(16, 0);  lcd.print("www.ihscompany.com");  delay(1000);  for (int x = 0; x < 34; x++) {    lcd.scrollDisplayLeft(); // desplaza pantalla izquierda 16 veces    delay(400);  }  delay(500);  lcd.clear();// Borra pantalla  lcd.setCursor(3, 0); // Cursor en columna 5 fila 0  lcd.print("pagina web");// Imprime algo de texto  lcd.setCursor(1, 1); // Cursor en columna 5 fila 0  lcd.print("ihscompany.com");// Imprime algo de texto  delay(5000); } void clienteizquierda() {  {    lcd.clear(); // Borra pantalla    lcd.setCursor(4, 0); // Cursor en columna 5 fila 0    lcd.print("Cliente:");    delay(1000);    lcd.clear(); // Borra pantalla    lcd.setCursor(16, 0);    lcd.print("SIGMA ALIMENTOS");    lcd.setCursor(20, 1);    lcd.print("Xalostoc");    delay(1000);    for (int x = 0; x < 31; x++) {      lcd.scrollDisplayLeft(); // desplaza pantalla izquierda 16 veces      delay(400);    }    delay(500);    lcd.clear();// Borra pantalla    lcd.setCursor(0, 0); // Cursor en columna 5 fila 0    lcd.print("SIGMA ALIMENTOS");// Imprime algo de texto    lcd.setCursor(4, 1); // Cursor en columna 5 fila 0    lcd.print("Xalostoc");// Imprime algo de texto    delay(5000);  } } void equipoderecha() {  {    lcd.clear(); // Borra pantalla    lcd.setCursor(3, 0); // Cursor en columna 5 fila 0    lcd.print("Elevador ");    lcd.setCursor(3, 1);    lcd.print("Electrico");    delay(3000);    lcd.clear(); // Borra pantalla    lcd.setCursor(0, 0); // Cursor en columna 5 fila 0    lcd.print("Modelo:");    lcd.setCursor(0, 1);    lcd.print("CQD35 IHS");    delay(3000);    for (int x = 0; x < 16; x++) {      lcd.scrollDisplayRight(); // desplaza pantalla derecha 16 veces      delay(400);    }    delay(500);    lcd.clear();// Borra pantalla    lcd.setCursor(0, 0); // Cursor en columna 5 fila 0    lcd.print("Numero de Serie:");// Imprime algo de texto    lcd.setCursor(0, 1); // Cursor en columna 5 fila 0    lcd.print("CQD3479621234548");// Imprime algo de texto    delay(5000);  } } void contactoihs() {  lcd.clear(); // borra pantalla  //lcd.blink(); // Cursor parpadeando  lcd.setCursor(4, 0); // Cursor en columna 5 fila 0  lcd.print("Contacto:");  delay(3000);  lcd.clear(); // Borra pantalla  lcd.setCursor(16, 0);  lcd.print("ihs@ihscompany.com");  lcd.setCursor(17, 1);  lcd.print("Ing. Jorge Diaz");  delay(1000);  for (int x = 0; x < 34; x++) {    lcd.scrollDisplayLeft(); // desplaza pantalla izquierda 16 veces    delay(400);  }  delay(500);  lcd.clear();// Borra pantalla  lcd.setCursor(0, 0); // Cursor en columna 5 fila 0  lcd.print("ihs@ihscompany.com");// Imprime algo de texto  lcd.setCursor(0, 1); // Cursor en columna 5 fila 0  lcd.print("Ing. Jorge Diaz");// Imprime algo de texto  delay(5000); } void bateria() {  lectura = analogRead(A3);  Volts = ((14.5 * lectura) / 1023);  lcd.clear();  lcd.setCursor (4,0);  lcd.print("BATERIA");  lcd.setCursor (0,1);  lcd.print("Voltaje:");  lcd.setCursor (10,1);  lcd.print (Volts);    //delay(4000);  if (Volts >= 13.5)  {    digitalWrite(13, HIGH);  //led rojo    digitalWrite(12, LOW);   //led verde    digitalWrite(11, LOW);   //led azul  }  if( (Volts <=13.4) && (Volts >=11.2))  {   digitalWrite(13, LOW);   //led rojo   digitalWrite(12, HIGH);  //led vede   digitalWrite(11, LOW);   //led azul  }  if (Volts <= 10.8)  {  digitalWrite(13, LOW);    //led rojo  digitalWrite(12, LOW);    //led verde  digitalWrite(11, HIGH);   //led azul  }   delay(1000); } void cronometro(){   milisegundos = millis();  if(milisegundos % 100 == 0){ //Only enter if it has passed tenth of a second    decimas++;    if(decimas == 10){ //When it has passed 10 tenths of a second it count one second      decimas = 0;      segundos++;    }    if(segundos == 60){ //When it has passed 60 seconds it count one minute      segundos = 0;      minutos++;    }    if(minutos == 60){ //When it has passed 60 minutes it count one hour      minutos = 0;      horas++;    } lcd.clear(); // Borra pantalla    lcd.setCursor(1, 0); // Cursor en columna 5 fila 0    lcd.print("Tiempo de uso:");    lcd.setCursor(3,1);    if(horas < 10){      lcd.print("0");    }    lcd.print(horas);    lcd.print(":");    lcd.setCursor(6,1);    if(minutos < 10){      lcd.print("0");    }    lcd.print(minutos);    lcd.print(":");    lcd.setCursor(9,1);    if(segundos < 10){      lcd.print("0");    }    lcd.print(segundos);    lcd.print(":");    lcd.setCursor(12,1);    lcd.print(decimas);  } }