16x128 Display Showing Date, Time, Temp, Humidity

3,866

38

35

Introduction: 16x128 Display Showing Date, Time, Temp, Humidity

This is my 1st instructable so I hope you find this helpful.

I know the struggles of finding the right code to do what you have planned in your head.

So here is one of my struggles that I have finished!

I am using 2 - 16x64 dot matrix display, 1 - RTCDS3231, 1 - DHT22 Temp Sensor and an Arduino Uno.

I have had these 2 16x64 displays for a while with no real code to run or do what I wanted.

I recently found a piece of code by Phil Kaziewicz and it was a great starting point for this project.

16x64 LED Matrix Display

RTC Module

DHT22 Temp Sensor

I have attached a short video of the scrolling display.

Step 1: Make Your Connections

2x8 Conn on 16x64 display Arduino UNO

Pin 1 ========================== GND (GND)

Pin 2 ==== No Connection (GND)

Pin 3 ==== No Connection (GND)

Pin 4 ========================== DI 2 (EN)

Pin 5 ========================== DI 8 (R1)

Pin 6 ========================== DI 9 (R2)

Pin 7 ==== No Connection (GND)

Pin 8 ==== No Connection (GND)

Pin 9 ========================== DI 10 (SK)

Pin 10 ========================= DI 7 (LT)

Pin 11 ==== No Connection (G2)

Pin 12 ==== No Connection (G1)

Pin 13 ========================= DI 6 (LD)

Pin 14 ========================= DI 5 (LC)

Pin 15 ========================= DI 4 (LB)

Pin 16 ========================= DI 3 (LA)



RTC3231SN Arduino UNO

GND ============================ GND

VCC ============================ 5V

SDA ============================ A4 (SDA)

SCL ============================ A5 (SCL)

SQW ==== No Connection

32K ==== No Connection1



DHT22 Arduino UNO

Pin 1============================== 5V

Pin 2 ============================== DI 11

Pin 3 ==== No Connection

Pin 4 ============================== GND

Also between Pin 1 and Pin 2 is a 10k Resistor!



Step 2: Code for This Project

load the Code and Run it.

Tried to paste code but came out all bunched together...

Maybe next time I will figure it out with some help from the form.

Step 3: About the Code

Here I have 2 displays tied together with cable supplied with purchase of display.

Time will be shown on upper half of left display.

Temperature and Humidity will alternate on upper half of right display.

Lower half of both displays will scroll current date from RTC.

Example: "Today is: Tuesday, 4/26/16"

You can adjust the time by Minutes (A0), Hours (A1), Display 12 or 24 hour format (A2) with Seconds showing during 24 hour format, and Daylight Savings ON/OFF (A3).

Time Adjustments are send and Saved on the RTC Module.

12/24 Hour Display and DST are sent to internal Ram and saved/Recalled if power goes out.

Always wanted to do that as we can adjust anything during the running of a program but if power goes out we get default setting restored so I send those setting to the Atmega328 RAM that gets recalled during "Setup".


Hope this helps many of you out there and feel free to ask any questions or improve any coding.

One thing I did want was a way to "Add" to the scrolling message any user input message and display it after the date, then repeat. I am working on adding a ESP8266 WIFI Module and letting the user set the Time, Date, and add a Message from their phone or tablet.

Enjoy...



First Time Author Contest 2016

Participated in the
First Time Author Contest 2016

1 Person Made This Project!

Recommendations

  • Battery Powered Contest

    Battery Powered Contest
  • Plywood Challenge

    Plywood Challenge
  • Plastic Contest

    Plastic Contest

35 Discussions

0
dancopy
dancopy

2 years ago

Hi Jeffreye, you wrote: "One thing I did want was a way to "Add" to the scrolling message any user input message and display it after the date, then repeat. I am working on adding a ESP8266 WIFI Module and letting the user set the Time, Date, and add a Message from their phone or tablet." So, did you do this or did you update something in this code?
I would also like to use it with ESP8266 Nodemcu but I do not know how to do it; Thank you

0
subroto
subroto

2 years ago on Step 3

Thanks for posting such a wonderful project. I didn't have any problems with the code and uploading it to the UNO. After doing all the wiring to the displays and the sensors when I applied power to the circuit only the first display is showing the scroll message and the temp and humidity. When the 2nd display unit is connected the entire display goes blank and two lines of led"s keep flashing. Secondly the characters displayed are in shadow that is those led's are not turning on but blacked out. Hope you have got what I want to say and may be you could advice as well.

Thanks in advance

0
MuhammadH8
MuhammadH8

2 years ago

How can i make this clock 8x32 display could you please help me?

0
BALA55
BALA55

Question 2 years ago

i need code for this project

0
AQUARIUM55
AQUARIUM55

2 years ago

hi jeffreye
nice work
are u able to scroll the mesaage?

0
DennisB36
DennisB36

Question 2 years ago on Step 3

Has anyone found a way to turn down the brightness on this project?

0
dancopy
dancopy

3 years ago

Help!!!!

0
dancopy
dancopy

3 years ago

Has anyone here had this issue of Number of the Year, rather than 2017, show 2047? Looking forward to an answer.

0
dancopy
dancopy

3 years ago

Many thanks for the reply jeffreye!
I have not been able to sort out the part of the code that is showing the Year "47" instead of the Year "17" (ie 2017); I know you're very busy, but if you can give me a suggestion, I thank you very much,
Daniel

0
IrfanY3
IrfanY3

3 years ago

help me please

i make error """

'tmElements_t' was not declared in this scope"""

cougerstar@gmail.com

0
DennisB36
DennisB36

Reply 3 years ago

At the beginning of the sketch remove the #include <Time.h> entry, and re-include it. You should then have an "#include <Time.h>" and a "#include <TimeLib.h>". That should take care of the 'tmElements_t' error.

0
jeffreye
jeffreye

Reply 3 years ago

check the code, make sure it was not changed or a char "t" was not mistyped in to code.

Look at error message, it will give line number in code where error is and should also highlight it.

0
DennisB36
DennisB36

3 years ago

Jeffreye, Help! how the heck do you change the year in this sketch. There are a couple of us out here scratching our heads trying to figure out how to change the year. I've uploaded and incorporated your time setting code, and for the most part it works, thanks, but I can not for the life of me change the year in the date line.

0
dancopy
dancopy

3 years ago

Could someone tell me how I convert this code, the temperature from Fahrenheit to Celsius? Thank you all

0
jeffreye
jeffreye

Reply 3 years ago

In void Temp()

float f = dht.readTemperature(true); // Read temperature as Fahrenheit = (true), // //For Deg C >>> float f = dht.readTemperature()... Remove "true" inside braces

0
dancopy
dancopy

3 years ago

Hi jeffreye! I'm almost there but I still have three questions:
1)
I still have problems with the configuration of the Data that, even
when configuring in the library that you provided, the year does not
change; Continues to appear 47 at the time of year.
2) What this button necessarily does: A3 = DST Adjust
3) I could not change the temperature from Fahrenheit to Celsius
Thanks and congratulations for the program!

0
ve3joc
ve3joc

4 years ago

I have built this display on a breadboard to test it out and I have two
problems.

1 is that while I have two 64x16 display boards connected together with the
cable supplied, everything is being displayed on only the first display board.

2 The display is in reversed text. (the entire display is lit and the text
is unlit.)

Anyone have any ideas as to why?

Also, is there a way to change the temperature to display in Celsius rather
than Fahrenheit?

Thanks for any help.

0
ve3joc
ve3joc

Reply 3 years ago

Nobody has any suggestions on how to get normal text rather than reversed?

I have posted questions on 3 or 4 projects on this site and have never received an answer to any of them.

0
dancopy
dancopy

Reply 3 years ago

In the following lines:
PORTB | =! ((Buffer [index] >> (7-i)) & 0x01) << (data_R1-8); // top set of rows
If (HEIGHT == 32) PORTB | =! ((Buffer [index + 128] >> (7-i)) & 0x01) << (data_R2-8); // bottom set of rows

Try this:
PORTB | =! ((~ Buffer [index] >> (7-i)) & 0x01) << (data_R1-8); // top set of rows
If (HEIGHT == 32) PORTB | =! ((~ Buffer [index + 128] >> (7-i)) & 0x01) << (data_R2-8); // bottom set of rows

That is, add "~" before the words "Buffer" like this: ~Buffer

0
ve3joc
ve3joc

Reply 3 years ago

Thanks for the help jeffreye. I'll try your suggestions and let you know what happens.

Cheers.