En esta pequeña entrada estaré testeando la librería de Henning hecha para el RTC DS1302, los datos serán mostrados en una LCD 16x2, todo esto como parte de las pruebas que se están realizando para llevar a cabo nuestra incubadora.
Circuito:
Se preguntaran porque se esta usando un DS1302, simplemente por que era el que se tenia a mano, aunque pudo haber sido otro sin problemas. Para la LCD ya se hablo de la conexión en otro post y con respecto al RTC puede que se use el modulo que ya venden, por por ejemplo he armado todo en la protoboard y he usado el circuito que se propone en la hoja de datos, por lo que ha quedado de la siguiente forma.
Con respecto al código es muy sencillo. ya que la librería esta bien trabajada y cuenta con todas as funciones disponibles, para ello el autor deja instructivo de como usarlas, así que queda de la siguiente forma:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************************* | |
* | |
* Mostrar datos del DS1302 en LCD16x2 | |
* | |
******************************************************************************* | |
* FileName: NANO_DS1302_LCD16x2.ino | |
* Processor: ATmega328 | |
* Complier: Arduino v1.8.3 | |
* Author: Pedro Sánchez (MrChunckuee) | |
* Blog: http://mrchunckuee.blogspot.com/ | |
* Email: mrchunckuee.psr@gmail.com | |
* Description: Ejemplo basico para mostrar datos leidos del DS1302 | |
* en una LCD16x2. | |
******************************************************************************* | |
* Rev. Date Comment | |
* v0.0.0 29/09/2019 Creación del firmware | |
******************************************************************************/ | |
#include <Wire.h> | |
#include <DS1302.h> | |
#include <LiquidCrystal_I2C.h> | |
DS1302 rtc(2, 3, 4); // Init the DS1302 | |
LiquidCrystal_I2C lcd(0x27,16,2); //Dirección 0x27 y 16 columnas x 2 filas | |
// Variables will change: | |
const int pinLed = 13; | |
int ledState = LOW; // ledState used to set the LED | |
long previousMillis = 0; // will store last time LED was updated | |
long interval = 1000; // interval at which to blink (milliseconds) | |
void setup(){ | |
pinMode(pinLed, OUTPUT); | |
// Setup Serial connection | |
Serial.begin(9600); | |
// Set the clock to run-mode, and disable the write protection | |
rtc.halt(false); | |
rtc.writeProtect(false); | |
// The following lines can be commented out to use the values already stored in the DS1302 | |
rtc.setDOW(SUNDAY); // Set Day-of-Week to SUNDAY | |
rtc.setTime(11, 35, 0); // Set the time to 12:00:00 (24hr format) | |
rtc.setDate(29, 9, 2019); // Set the date to September 29th, 2019 | |
lcd.init();// Inicializar el LCD | |
lcd.backlight();//Encender la luz de fondo. | |
lcd.clear(); | |
// Escribimos el Mensaje en el LCD. | |
lcd.print("DS1302 + LCD16x2"); | |
lcd.setCursor(0,1); | |
lcd.print(" MrChunckuee! "); | |
delay(1000); | |
} | |
void loop(){ | |
unsigned long currentMillis = millis(); | |
if(currentMillis - previousMillis > interval) { | |
// save the last time you blinked the LED | |
previousMillis = currentMillis; | |
// if the LED is off turn it on and vice-versa: | |
if (ledState == LOW){ | |
ledState = HIGH; | |
lcd.clear(); | |
lcd.print("Time:"); | |
lcd.setCursor(6,0); | |
lcd.print(rtc.getTimeStr()); | |
lcd.setCursor(0,1); | |
lcd.print("Date:"); | |
lcd.setCursor(6,1); | |
lcd.print(rtc.getDateStr()); | |
} | |
else | |
ledState = LOW; | |
// set the LED with the ledState of the variable: | |
digitalWrite(pinLed, ledState); | |
} | |
} |
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.
Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.
Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.
- Henning Karlsen, "Library: DS1302", http://www.rinkydinkelectronics.com/library.php?id=5
- Main Integrated, "DS1302 Trickle-Charge Timekeeping Chip", https://datasheets.maximintegrated.com/en/ds/DS1302.pdf
- Pedro Sánchez Ramírez, "Arduino: Uso básico de LCD16x2 con modulo I2C", https://mrchunckuee.blogspot.com/2019/07/Arduino-NANO-LCD12x6-I2C-test.html
0 Comentarios