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

Committer:
loarri
Date:
Tue Jun 15 22:03:39 2021 +0000
Revision:
1:515786c57c45
Parent:
0:2a445788550e
Example with F411RE, DS1302 and LCD16x2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loarri 0:2a445788550e 1 /*
loarri 0:2a445788550e 2 --------------------
loarri 1:515786c57c45 3 DS1302_test_with_STM32_and_LCD16x2
loarri 1:515786c57c45 4
loarri 0:2a445788550e 5 Author: L. Arrigoni
loarri 1:515786c57c45 6 June 2021
loarri 0:2a445788550e 7 --------------------
loarri 0:2a445788550e 8
loarri 1:515786c57c45 9 Simple test with RTC module driven by a STM32F411RE Nucleo board
loarri 1:515786c57c45 10 with 16x2 HD44780 LCD.
loarri 0:2a445788550e 11 DS1302 powered by 3.3 V without pull up resistor on I2C lines
loarri 1:515786c57c45 12 with callback.
loarri 1:515786c57c45 13 I2C line for LCD needs 2 pullup resitors 2.2K on SDA e SCL
loarri 1:515786c57c45 14 D3 (SDA) ,D6 (SCL)
loarri 1:515786c57c45 15
loarri 1:515786c57c45 16 Note: to reset/set the starting date supply the DS1302 with 5V
loarri 1:515786c57c45 17
loarri 0:2a445788550e 18
loarri 0:2a445788550e 19 */
loarri 0:2a445788550e 20
loarri 0:2a445788550e 21
loarri 0:2a445788550e 22 #define SCLK D15
loarri 0:2a445788550e 23 #define IO D14
loarri 0:2a445788550e 24 #define CE D8
loarri 0:2a445788550e 25
loarri 0:2a445788550e 26 //Comment this line if the DS1302 is already running
loarri 0:2a445788550e 27 //#define INITIAL_RUN
loarri 0:2a445788550e 28
loarri 0:2a445788550e 29 #include "mbed.h"
loarri 0:2a445788550e 30 #include "DS1302.h"
loarri 1:515786c57c45 31 #include "TextLCD.h"
loarri 1:515786c57c45 32
loarri 0:2a445788550e 33
loarri 0:2a445788550e 34 DS1302 clk(SCLK, IO, CE);
loarri 1:515786c57c45 35 // Set LCD
loarri 1:515786c57c45 36 I2C i2c_lcd(D3 ,D6); // SDA, SCL
loarri 1:515786c57c45 37 // LCD instantiation
loarri 1:515786c57c45 38 TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2);
loarri 0:2a445788550e 39
loarri 0:2a445788550e 40 int main() {
loarri 1:515786c57c45 41 lcd.setBacklight(TextLCD::LightOn);
loarri 1:515786c57c45 42 lcd.printf("Date&Time \nby L. Arrigoni");
loarri 1:515786c57c45 43 wait(3);
loarri 1:515786c57c45 44 lcd.cls();
loarri 1:515786c57c45 45
loarri 0:2a445788550e 46 #ifdef INITIAL_RUN
loarri 0:2a445788550e 47 //clk.set_time(1256729737);
loarri 1:515786c57c45 48 clk.set_time(1623792610); //from https://www.unixtimestamp.com/
loarri 0:2a445788550e 49 #endif
loarri 0:2a445788550e 50
loarri 0:2a445788550e 51 char storedByte = clk.recallByte(0);
loarri 0:2a445788550e 52 printf("\r\nStored byte was %d, now increasing by one\r\n", storedByte);
loarri 0:2a445788550e 53 clk.storeByte(0, storedByte + 1);
loarri 1:515786c57c45 54 char buffer[32],timebuf_dMyy[14];
loarri 0:2a445788550e 55 while(1) {
loarri 0:2a445788550e 56 time_t seconds = clk.time(NULL);
loarri 0:2a445788550e 57 printf("Date and time: %s\r", ctime(&seconds));
loarri 1:515786c57c45 58 strftime(buffer, 32, "%I:%M:%S %p\n", localtime(&seconds));
loarri 1:515786c57c45 59 strftime(timebuf_dMyy, 14, "%d-%b-%Y", localtime(&seconds));
loarri 1:515786c57c45 60 lcd.locate(0,0);
loarri 1:515786c57c45 61 lcd.printf("Date:%s",timebuf_dMyy);
loarri 1:515786c57c45 62 lcd.locate(0,1);
loarri 1:515786c57c45 63 lcd.printf("Time:%s", buffer);
loarri 0:2a445788550e 64 wait(1);
loarri 0:2a445788550e 65 }
loarri 0:2a445788550e 66 }
loarri 0:2a445788550e 67
loarri 0:2a445788550e 68