domingo, 26 de julio de 2015

Reloj DS1302 y LCD con Arduino

En este proyecto conectamos una pantalla LCD con  módulo IC2 a arduino y agregamos un reloj módulo DS1302.

La idea es mostrar en una pantalla LCD el reloj actual.

El módulo DS1302 se conecta al arduino de la siguiente manera:



Luego conectamos el LCD con el módulo IC2 siguiendo la ruta de los pines que están grabados en el IC2.





Este es el código para arduino:

#include <Wire.h>
#include "DHT.h" //cargamos la librería DHT
#include <LiquidCrystal_I2C.h>
#include <virtuabotixRTC.h>        

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

//EL RELOJ VA CONFIGURADO DE LA SIGUIENTE MANERA
//VCC va a 5V
//GND a GND
//CLK a PIN 6
//DAT a PIN 7
//RST a PIN 8

// Determina los pines ligados al modulo del reloj
// myRTC(clock, data, rst)
virtuabotixRTC myRTC(6, 7, 8);

void setup()
{    
  Serial.begin(9600);
lcd.begin(16,2);
  lcd.backlight();

}

void loop()
{
  // Le as informacoes do CI
  myRTC.updateTime();


  //Serial.print(myRTC.dayofmonth);
 // Serial.print("/");
 // Serial.print(myRTC.month);
 // Serial.print("/");
 // Serial.print(myRTC.year);
 // Serial.print("  ");
 lcd.print("Hora: ");
  // Adiciona um 0 caso o valor da hora seja <10
  if (myRTC.hours < 10)
  {
   lcd.print("0");
  }
  lcd.print(myRTC.hours);
  lcd.print(":");
  // Adiciona un 0 en caso quel valor de minutos sea <10
  if (myRTC.minutes < 10)
  {
    lcd.print("0");
  }
  lcd.print(myRTC.minutes);
  lcd.print(":");
  // Adiciona um 0 caso o valor dos segundos seja <10
  if (myRTC.seconds < 10)
  {
    lcd.print("0");
  }
  lcd.print(myRTC.seconds);

 funcionreloj(); //Esta es solo una funcion para mostrar el reloj en el Monitor de Arduino

if(myRTC.minutes == 22){
  Serial.println("ALARMA");

  }

  delay( 1000);
  lcd.clear();

}

void funcionreloj(){
String Reloj = "";

if (myRTC.hours < 10)
  {
   Reloj+="0";
  }
Reloj+= myRTC.hours;
Reloj+=":";
if (myRTC.minutes < 10)
  {
   Reloj+="0";
  }
Reloj+=myRTC.minutes;
Reloj+=":";
if (myRTC.seconds < 10)
  {
   Reloj+="0";
  }
Reloj+=myRTC.seconds;
 Serial.println(Reloj);
}



******************************************************************
Si deseamos configurar el reloj por primera vez colocamos el siguiente código en el void setup
 // (segundos, minutos, hora, dia da semana, dia del mes, mes, año)
myRTC.setDS1302Time(00, 28, 16, 2, 26, 07, 2015);