example with F411RE, DS1302 and LCD16x2

Dependencies:   mbed DS1302 TextLCD

This is a simple example how to display date and time stored into a DS1302 module. I used a F411RE Nucleo board and a HD44780 LCD 16x2.

https://os.mbed.com/media/uploads/loarri/20210615_235344.jpg

main.cpp

Committer:
loarri
Date:
2021-06-15
Revision:
1:515786c57c45
Parent:
0:2a445788550e

File content as of revision 1:515786c57c45:

/*
--------------------
DS1302_test_with_STM32_and_LCD16x2

Author: L. Arrigoni
June 2021
--------------------

Simple test with RTC module driven by a STM32F411RE Nucleo board
with 16x2 HD44780 LCD.
DS1302 powered by 3.3 V without pull up resistor on I2C lines
with callback.
I2C line for LCD needs 2 pullup resitors 2.2K on SDA e SCL
D3 (SDA) ,D6 (SCL)

Note: to reset/set the starting date supply the DS1302 with 5V


*/


#define SCLK    D15
#define IO      D14
#define CE      D8

//Comment this line if the DS1302 is already running
//#define INITIAL_RUN

#include "mbed.h"
#include "DS1302.h"
#include "TextLCD.h"


DS1302 clk(SCLK, IO, CE);
// Set LCD
I2C i2c_lcd(D3 ,D6); // SDA, SCL
// LCD instantiation 
TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2);      

int main() {
    lcd.setBacklight(TextLCD::LightOn);
    lcd.printf("Date&Time \nby L. Arrigoni");
    wait(3);
    lcd.cls();

    #ifdef INITIAL_RUN
    //clk.set_time(1256729737);
    clk.set_time(1623792610);  //from https://www.unixtimestamp.com/
    #endif
    
    char storedByte = clk.recallByte(0);
    printf("\r\nStored byte was %d, now increasing by one\r\n", storedByte);
    clk.storeByte(0, storedByte + 1);
    char buffer[32],timebuf_dMyy[14];
    while(1) {
        time_t seconds = clk.time(NULL);
        printf("Date and time: %s\r", ctime(&seconds));
        strftime(buffer, 32, "%I:%M:%S %p\n", localtime(&seconds));
        strftime(timebuf_dMyy, 14, "%d-%b-%Y", localtime(&seconds));
        lcd.locate(0,0);
        lcd.printf("Date:%s",timebuf_dMyy);
        lcd.locate(0,1);
        lcd.printf("Time:%s", buffer);
        wait(1);
    }
}