/*********************************************************************
INCLUDE SECTION
**********************************************************************/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
/*********************************************************************
DEFINE SECTION
**********************************************************************/
#define lcdPrint(strings) lcd.print(strings)
#define lcdCursor(param1,param2) lcd.setCursor(param1,param2);
/*********************************************************************
GLOBAL VARIABLES SECTION
**********************************************************************/
LiquidCrystal_I2C lcd(0x27,20,4);
RTC_DS1307 rtc;
/*********************************************************************
MAIN SECTION
**********************************************************************/
void setup() {
LCD2004_Init();
RTCDS1307_Init();
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
/*********************************************************************
LOW LAYER SECTION
**********************************************************************/
/*
@fn void outputHigh(int pin)
@brief set an output high
@param [in] int pin: pin name or number
@return: none
*/
void outputHigh(int pin)
{
digitalWrite(pin,HIGH);
}
/*
@fn void outputLow(int pin)
@brief set an output low
@param [in] int pin: pin name or number
@return: none
*/
void outputLow(int pin)
{
digitalWrite(pin,LOW);
}
/*
@fn void outputToggle(int pin)
@brief toggle output
@param [in] int pin: pin name or number
@return: none
*/
void outputToggle(int pin)
{
int status = digitalRead(pin);
digitalWrite(pin,!status);
}
/*
@fn void delay_ms(unsigned )
@brief delay
@param [in] unsigned: value in milliseconds
@return: none
*/
void delay_ms(unsigned int time)
{
unsigned int ms = millis();
while((millis()-ms) <= time);
}
/*********************************************************************
MEDIUM LAYER SECTION
**********************************************************************/
void LCD2004_Animation(void)
{
for(int j = 0; j < 1; j++)
{
for(int i = 0; i < 20; i++)
{
lcdCursor(i,2);
lcdPrint("*");
delay_ms(20);
lcdCursor(i,2);
lcdPrint(" ");
}
for(int i = 19; i >= 0; i--)
{
lcdCursor(i,2);
lcdPrint("*");
delay_ms(20);
lcdCursor(i,2);
lcdPrint(" ");
}
}
}
/*
@fn void LCD2004_Init(void)
@brief initialize LCD
@param [in]: none
@return: none
*/
void LCD2004_Init(void)
{
lcd.begin(20, 4);
lcd.backlight();
lcd.clear();
lcdCursor(1,0);
lcdPrint("System initialized");
LCD2004_Animation();
}
/*
@fn void RTCDS1307_Init(void)
@brief initialize RTC
@param [in]: none
@return: none
*/
void RTCDS1307_Init(void)
{
lcd.clear();
delay_ms(100);
if (!rtc.begin()) {
lcdCursor(1,0);
lcdPrint("failInit RCT");
abort();
}
else{
lcdCursor(1,0);
lcdPrint("RTC initialized");
}
LCD2004_Animation();
}
/*********************************************************************
HIGH LAYER SECTION
**********************************************************************/