/*
Use a 16x2 LCD display.
The circuit:
* LCD VSS (pin 1) to GND
* LCD VDD (pin 2) to +5V
* LCD VO (pin 3) to wiper of 100K resistor (ends to +5V and GND)
* LCD RS (pin 4) to digital pin 12
* LCD RW (pin 5) to GND
* LCD E (pin 6) to digital pin 11
* LCD D4 (pin 11) to digital pin 7
* LCD D5 (pin 12) to digital pin 8
* LCD D6 (pin 13) to digital pin 9
* LCD D7 (pin 14) to digital pin 10
* LCD A (pin 15) to +5V
* LCD K (pin 16) to GND
*/
// include the library code:
#include <LiquidCrystal.h>
// Initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 7, d5 = 8, d6 = 9, d7 = 10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
/*
Use a DS3231 timer module.
The circuit:
* 32K is not connected
* SQW is not connected
* SCL is connected to SCL to analog pin 5
* SDA is connected to SDA to analog pin 4
* VCC is connected to +5V
* GND is connected to GND
*/
// include the library code:
#include <RTClib.h>
RTC_DS3231 rtc;
DateTime now;
/*
Use the DHT11 temperature and humidity module
The circuit:
* VCC is connected to +5V or +3V
* GND is connected to GND
* DATA is connected to digital pin 2
*/
// include the library code:
#include <SimpleDHT.h>
const int pinDHT11 = 2;
SimpleDHT11 dht11(pinDHT11);
byte temperature = 0;
byte humidity = 0;
void setup() {
// Set serial baud rate same as of Totem
Serial.begin(57600);
// Set up the LCD's number of columns and rows
lcd.begin(16, 2);
// set up the timer
Wire.begin();
if (! rtc.begin())
{
Serial.println("RTC Module not Present");
while (1);
}
if (rtc.lostPower())
{
Serial.println("RTC power failure, reset the time!");
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void display_welkom(int row) {
lcd.setCursor(0, row);
lcd.print("* Hello World! *");
}
void display_datum(int row) {
now = rtc.now();
lcd.setCursor(0, row);
lcd.print("Date: ");
if (now.day() < 10)
{
lcd.print('0');
}
lcd.print(now.day());
lcd.print('-');
if (now.month() < 10)
{
lcd.print('0');
}
lcd.print(now.month());
lcd.print('-');
lcd.print(now.year());
}
void display_tijd(int row) {
now = rtc.now();
lcd.setCursor(0, row);
lcd.print("Time: ");
if (now.hour() < 10)
{
lcd.print('0');
}
lcd.print(now.hour());
lcd.print(':');
if (now.minute() < 10)
{
lcd.print('0');
}
lcd.print(now.minute());
lcd.print(':');
if (now.second() < 10)
{
lcd.print('0');
}
lcd.print(now.second());
lcd.print(" ");
}
void display_temperatuur(int row) {
dht11.read(&temperature, &humidity, NULL);
lcd.setCursor(0, row);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" Celcius");
}
void display_vochtigheid(int row) {
dht11.read(&temperature, &humidity, NULL);
lcd.setCursor(0, row);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print(" % ");
}
void loop() {
lcd.clear();
display_welkom(0);
display_datum(1);
delay(2000);
display_datum(0);
display_tijd(1);
delay(2000);
display_tijd(0);
display_temperatuur(1);
delay(2000);
display_temperatuur(0);
display_vochtigheid(1);
delay(2000);
display_vochtigheid(0);
display_welkom(1);
delay(2000);
}