Advertisement
Villalba2006

POST_58

Nov 28th, 2016
3,031
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.35 KB | None | 0 0
  1. /*  TITULO: Reloj en tiempo real Tiny RTC I²C con LCD 2004.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     Con este programa obtenemos un reloj en tiempo real gracias al Tiny RTC I²C que mostrará los valores
  14.     de hora y fecha a través de un display LCD 2004 que hemos conectado a nuestro Arduino mediante
  15.     comunicación I²C al igual que el RTC.
  16.    
  17.  
  18.     ESQUEMA DE CONEXION
  19.    
  20.                                       +-----+
  21.          +----[PWR]-------------------| USB |--+
  22.          |                            +-----+  |
  23.          |         GND/RST2  [ ][ ]            |
  24.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |  SCL del LCD 2004 / SCL del Tiny RTC I²C  
  25.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |  SDA del LCD 2004 / SDA del Tiny RTC I²C
  26.          |                             AREF[ ] |
  27.          |                              GND[ ] |
  28.          | [ ]N/C                    SCK/13[ ] |  
  29.          | [ ]IOREF                 MISO/12[ ] |  
  30.          | [ ]RST                   MOSI/11[ ]~|  
  31.          | [ ]3V3    +---+               10[ ]~|  
  32.          | [ ]5v    -| A |-               9[ ]~|  
  33.          | [ ]GND   -| R |-               8[ ] |  
  34.          | [ ]GND   -| D |-                    |
  35.          | [ ]Vin   -| U |-               7[ ] |  
  36.          |          -| I |-               6[ ]~|  
  37.          | [ ]A0    -| N |-               5[ ]~|  
  38.          | [ ]A1    -| O |-               4[ ] |  
  39.          | [ ]A2     +---+           INT1/3[ ]~|  
  40.          | [ ]A3                     INT0/2[ ] |  
  41.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  42.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  43.          |            [ ] [ ] [ ]              |
  44.          |  UNO_R3    GND MOSI 5V  ____________/
  45.           \_______________________/
  46.  
  47.   NOTAS:
  48.    - La alimentación y la masa del módulo LCM 2004 I²C V1 van directamente conectadas a +5V y GND
  49.      respectivamente.
  50.    - La alimentación y la masa del Tiny RTC I²C también van directamente conectadas a +5V y GND
  51.      respectivamente.
  52. */
  53.  
  54.   // Importar librerías
  55.   #include <Wire.h> // Librería para la comunicación I²C
  56.   #include <LiquidCrystal_I2C.h> // Librería para el LCD I²C
  57.   #include "RTClib.h" // Librería para el RTC
  58.  
  59.   // Declaración del objeto para el LCD 2004 I²C
  60.   // Poner la dirección del LCD a 0x20 para display 20x4 (A0=0, A1=0, A2=0)
  61.   // Terminales de conexión del LCD
  62.   //                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
  63.   LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  64.  
  65.   // Declaración del objeto para el RTC
  66.   RTC_DS1307 RTC;
  67.  
  68.   void setup ()
  69.   {
  70.    lcd.begin(20,4); // Inicializamos el LCD para 20x4    
  71.    Wire.begin(); // Inicializamos la comunicación I²C para el RTC
  72.    RTC.begin(); // Inicializamos el RTC
  73.    
  74.    // Si quitamos el comentario de la línea siguiente, se ajusta la hora y la fecha con la del PC
  75.    // RTC.adjust(DateTime(__DATE__, __TIME__));
  76.    
  77.    lcd.clear();
  78.    lcd.setCursor(0,0);
  79.    lcd.print("RELOJ EN TIEMPO REAL");
  80.    lcd.setCursor(0,1);
  81.    lcd.print("********************");
  82.   }
  83.    
  84.   void loop ()
  85.   {
  86.    // Obtenemos la hora y la fecha del Tiny RTC I²C  
  87.    DateTime now = RTC.now();
  88.    
  89.    lcd.setCursor(0,2);
  90.    // Imprimimos la hora (HH:MM:SS)
  91.    lcd.print("> HORA: ");
  92.    // Imprimimos las HORAS
  93.    if(now.hour()<=9)
  94.    {
  95.      lcd.print("0");
  96.    }
  97.    lcd.print(now.hour(), DEC);
  98.    lcd.print(':');
  99.    // Imprimimos los MINUTOS
  100.    if(now.minute()<=9)
  101.    {
  102.      lcd.print("0");
  103.    }
  104.    lcd.print(now.minute(), DEC);
  105.    lcd.print(':');
  106.    // Imprimimos los SEGUNDOS
  107.    if(now.second()<=9)
  108.    {
  109.      lcd.print("0");
  110.    }
  111.    lcd.print(now.second(), DEC);
  112.    
  113.    lcd.setCursor(0,3);
  114.    // Imprimimos la fecha (DÍA/MES/AÑO)
  115.    lcd.print("> FECHA: ");
  116.    // Imprimimos el DÍA
  117.    if(now.day()<=9)
  118.    {
  119.      lcd.print("0");
  120.    }
  121.    lcd.print(now.day(), DEC);
  122.    lcd.print('/');
  123.    // Imprimimos el MES
  124.    if(now.month()<=9)
  125.    {
  126.      lcd.print("0");
  127.    }
  128.    lcd.print(now.month(), DEC);
  129.    lcd.print('/');
  130.    // Imprimimos el AÑO
  131.    lcd.print(now.year(), DEC);
  132.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement