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.
main.cpp@1:515786c57c45, 2021-06-15 (annotated)
- 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?
User | Revision | Line number | New 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 |