Clock With Termometer Using Arduino I2c 16x2 LCD D
Clock With Termometer Using Arduino I2c 16x2 LCD D
Clock With Termometer Using Arduino I2c 16x2 LCD D
Living
Outside
Play
Technology
Workshop
Clock with thermometer using Arduino, i2c 16x2 lcd, DS1307 RTC and DHT11
sensor.
by Timofte Andrei on January 16, 2014
Table of Contents
Clock with thermometer using Arduino, i2c 16x2 lcd, DS1307 RTC and DHT11 sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Intro: Clock with thermometer using Arduino, i2c 16x2 lcd, DS1307 RTC and DHT11 sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Advertisements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/
Intro: Clock with thermometer using Arduino, i2c 16x2 lcd, DS1307 RTC and DHT11 sensor.
Hello! It's been a while I've didn't posted anything on Instructables, but now I made a simple project that I've seen on internet in various forms. I managed to build a code
using other codes I've found on internet and I got to say it's working good.
For this project you need:
- Arduino Uno
- 16x2 LCD with i2c module
- DS1307 RTC
- DHT11 temperature and humidity sensor
- a bread board
- some wires for connections.
As you can see the RTC is homemade because I had a DS1307 chip and a battery extracted from an old german electronic cash registering device.
So the connections are very simple:
The RTC and the i2c LCD are connected to A4 pin (SDA) and A5(SCL) and DHT11 sensor is connected to D2 pin. DHT11 has 4 pins, but only 3 are actually used. First
pin is Vcc, the second is for data and the forth pin is for ground. As I said, connect data pin of the sensor to D2 on Arduino.
Now, the hardest part: the code. https://www.dropbox.com/s/ycgh1sa88tqq8r8/termometru_dht11_cu_ceas.ino
I've tried some sketches I've found on internet, but there were alot of errors caused by incompatible libraries and so on. I managed to build a code made from parts of
other codes and it's working like a charm now. There is a single problem though. You can find in the sketch a bit of code for displaying first 3 letters of the week day, but
for some reason it doesn't work. Instead of those letters it shows some unknown characters and it's pretty ugly. I suspect that is a problem caused by i2c communication
because in standard connection (4bits) it works without problems.
My inspiration came from this page http://arduino-info.wikispaces.com/PROJECT-Temp-Humidity-Display , and this page http://www.ucontrolit.tv/184/
This is the library used for this project http://arduino-info.wikispaces.com/file/view/DHT11.zip/390039522/DHT11.zip and don't forget to use the new LCD library that can
be found right here https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads (when you add this new library in the folder, delete the old LiquidCrystal folder!)
And this is the code:
________________________________________________________________________________________________
/* YourDuino.com Example Software Sketch
DHT11 Humidity and Temperature Sensor test
Displayed on I2C LCD Display
Credits: Rob Tillaart
http://arduino-info.wikispaces.com/PROJECT-Temp-Humidity-Display
terry@yourduino.com
Combined with:
Mark Johnson's code
http://uControlIt.tv
December 2012
License: GNU General Public License
Modiffied by Timofte Andrei ( http://timofteandreidiy.wordpress.com )
January 2014
*/
/*-----( Import needed libraries )-----*/
#include
#include
#include
#include
#include
//const char* zile[] =
// { "Lun", "Mar", "Mie", "Joi", "Vin", "Sam", "Dum"}; //days of the week in romanian (not used)
const char* luni[] =
{"Dec", "Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Noi" }; //months of the week also in romanian
byte termometru[8] = //icon for termometer
{
B00100,
B01010,
B01010,
B01110,
B01110,
B11111,
B11111,
B01110
};
byte picatura[8] = //icon for water droplet
{
B00100,
B00100,
B01010,
B01010,
B10001,
B10001,
B10001,
B01110,
};
/*-----( Declare objects )-----*/
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE); // Set the LCD I2C address
dht11 DHT11;
/*-----( Declare Constants, Pin Numbers )-----*/
#define DHT11PIN 2 //dht11 signal pin connected to D2
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Wire.begin();
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
lcd.backlight();
lcd.clear();
lcd.createChar(1,termometru);
lcd.createChar(2,picatura);
// part code from http://tronixstuff.wordpress.com/
Wire.beginTransmission(0x68);
Wire.write(0x07); // move pointer to SQW address
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
Wire.endTransmission();
// end part code from http://tronixstuff.wordpress.com/
setSyncProvider(RTC.get);
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
afisare_temperatura(); //displaying temperature
data_si_ora(); //displaying date and time
}
void afisare_temperatura()
{
int chk = DHT11.read(DHT11PIN);
lcd.setCursor(1, 1);
lcd.write(1);
lcd.setCursor(3, 1);
lcd.print((float)DHT11.temperature, 0);
lcd.setCursor(5, 1);
lcd.print((char)223); //degree sign
lcd.print("C");
lcd.setCursor(9, 1);
lcd.write(2);
lcd.setCursor(11, 1);
lcd.print((float)DHT11.humidity, 0);
lcd.print("%");
delay(2000);
}
void data_si_ora()
{
tmElements_t tm;
(RTC.read(tm));
lcd.setCursor(0, 0);
afisare2cifre(tm.Hour);
lcd.print(":");
afisare2cifre(tm.Minute);
lcd.setCursor(7,0);
afisare2cifre(tm.Day);
lcd.print(" ");
lcd.print(tm.Month[luni]);
lcd.print(" ");
lcd.print(tmYearToCalendar(tm.Year)-2000);
// lcd.setCursor(12,1); // this code is used for displaying day of the week
// lcd.print(tm.Wday[zile-2]); //it's disabled because for some reason it doesn't work on i2c display
}
void afisare2cifre(int numar) { //this adds a 0 before single digit numbers
if (numar >= 0 & numar < 10) {
lcd.write('0');
}
lcd.print(numar);
}
/* ( THE END ) */
____________________________________________________________________________________________________
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/
Image Notes
1. RTC DS1307
2. i2c convertion module for lcd
3. DHT11
4. colorful spaghetti on breadboard
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/
Image Notes
1. 3V even after 12 years. awesome, huh?
Related Instructables
Weekend
project clock
date
thermometer
and humidity
with Arduino
mega by arick
Mostrar
Temperatura en
Display con
Sensor DHT11 y
Arduino by
ElectroCrea
Arduino for
Greenhouse,
Garden or
Growbox by
diy_bloke
I2C LCD
Controller Part II Arduino
Portable
by verdelj
Weather
Monitor,
altimeter,
temperature,
humidity, using
DHT11 and
BMP85 with
LCD using only
3 pins by
animes25
Arduino Real
Time Clock
(DS1307) by
Naren_Murali
Advertisements
Comments
34 comments Add Comment
AdrianF2 says:
pvalyk says:
kantona80 says:
Here is a ZIP archive with all libraries and the right sketch that works with LCD I2C
YwRobot LCM1602 IIC (mine works on 0x27 address)
https://drive.google.com/file/d/0B0rVZYzj6RpOYm9vU...
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/
kantona80 says:
kantona80 says:
I think that the NEGATIVE issue shown by Arduino IDE could be related to a different LiquidCrystal_I2C library version...
airfoil233 says:
Ch?cN says:
I have error 'class DS1307RTC' has no member named 'get' and error with setSyncProvider(RTC.get);
help me please
refill71 says:
If you have a error in class DS1307RTC, please add the Time library.
http://www.pjrc.com/teensy/td_libs_Time.html
Ch?cN says:
airfoil233 says:
HI ChucN:
Maybe this will help!
http://forums.adafruit.com/viewtopic.php?f=31&t=36...
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/
Ch?cN says:
Ch?cN says:
I have error 'class DS1307RTC' has no member named 'get' and error with setSyncProvider(RTC.get);
help me please
diy_bloke says:
Well done ,but needs an H in the title so we can find it with search engine. "termometer"
kf5qgf says:
mukundans says:
Hi kf5qgf ,
greetings, iam a noob just getting to play with Arduino mini pro.Would appreciate if you email me your sketch (vu3smz@gmail.com) in english so
that i can try and build a clock.
thanks
muks
Thanks for sharing ! I won't be using this at this time but did keep the link for future reference. CHEERS!!!!
teaMJPx says:
This is awesome! I was making this on my own but... With your instructable... WOW! Thanks for this!
cts_casemod says:
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/
Ch?cN says:
I have error 'class DS1307RTC' has no member named 'get' and error with setSyncProvider(RTC.get);
help me please
Ch?cN says:
jmsl100 says:
samumar82 says:
quinto says:
guitarans says:
http://www.instructables.com/id/Clock-with-termometer-using-Arduino-i2c-16x2-lcd-D/