second section of code
//**************Set Hour*********************************************************************************************
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 2){tens = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.print(tens);
delay(keypad_delay);
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 9){ones = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.right();
RTC.stop();
RTC.set(DS1307_HR,tens * 10 + ones);
RTC.start();
lcd.setCursor(0,0);
hour = RTC.get(DS1307_HR,true);
if(hour < 10){
lcd.print(" ");
delay(keypad_delay);
}
lcd.print(hour);
delay(keypad_delay);
lcd.right();
//**************Set Minute*********************************************************************************************
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 6){tens = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.print(tens);
delay(keypad_delay);
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 9){ones = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.right();
RTC.stop();
RTC.set(DS1307_MIN,tens * 10 + ones);
RTC.start();
lcd.setCursor(0,3);
minute = RTC.get(DS1307_MIN,true);
if(minute < 10){
lcd.print("0");
delay(keypad_delay);
}
lcd.print(minute);
delay(keypad_delay);
//**************Set Month*********************************************************************************************
lcd.setCursor(1,0);
for (;;){
key = lcd.keypad();
if(key == 0 || key == 1){tens = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.print(tens);
delay(keypad_delay);
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 9){ones = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.right();
RTC.stop();
RTC.set(DS1307_MTH,tens * 10 + ones);
RTC.start();
lcd.setCursor(1,0);
month = RTC.get(DS1307_MTH,true);
if(month < 10){
lcd.print(" ");
delay(keypad_delay);
}
lcd.print(month);
delay(keypad_delay);
//**************Set Date*********************************************************************************************
lcd.setCursor(1,3);
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 3){tens = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.print(tens);
delay(keypad_delay);
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 9){ones = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.right();
RTC.stop();
RTC.set(DS1307_DATE,tens * 10 + ones);
RTC.start();
lcd.setCursor(1,3);
date = RTC.get(DS1307_DATE,true);
if(date < 10){
lcd.print(" ");
delay(keypad_delay);
}
lcd.print(date);
delay(keypad_delay);
//**************Set Year*********************************************************************************************
lcd.setCursor(1,8);
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 9){tens = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.print(tens);
delay(keypad_delay);
for (;;){
key = lcd.keypad();
if(key >= 0 && key <= 9){ones = key; break;}
}
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
lcd.right();
RTC.stop();
RTC.set(DS1307_YR,tens * 10 + ones);
RTC.start();
lcd.setCursor(1,6);
year = RTC.get(DS1307_YR,true);
if(year < 10){
lcd.print(" ");
delay(keypad_delay);
}
lcd.print(year);
delay(keypad_delay);
//**************Finish Up*********************************************************************************************
for (;;){
lcd.cursor_off();
lcd.setCursor(2,0);
lcd.print("Time & Date Set");
delay(keypad_delay);
lcd.setCursor(3,0);
lcd.print("Choose Mode A or B");
delay(keypad_delay);
if(lcd.keypad() == 100){set_time = 1; break;}
if(lcd.keypad() == 101){break;}
}
lcd.clear();
} //end while
} //end mode 101
//*************Normal Mode 100 and Feed Mode 102*************************************************************************************************
if(mode == 100 || mode == 102){
byte i;
byte present = 0;
byte data[12];
byte addr[8];
long ph_val;
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract, minute, hour, second, date, month, year, mil_time;
//int ph_read;
//Get time from DS1307**********************************************************************************************
hour = RTC.get(DS1307_HR,true); //This is in military time [0,23]
minute = RTC.get(DS1307_MIN,false);
second = RTC.get(DS1307_SEC,false);
// date = RTC.get(DS1307_DATE,false);
// month = RTC.get(DS1307_MTH,false);
// year = RTC.get(DS1307_YR,false);
mil_time = (hour * 100) + minute; //create military time output [0000,2400)
//Get temp data from DS18B20 ***************************************************************************************
if ( !ds.search(addr)) {
ds.reset_search();
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
delay(750); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
SignBit = TReading & 0x8000; // test most sig bit
if (SignBit) // negative
{
TReading = (TReading ^ 0xffff) + 1; // 2's comp
}
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
Tc_100 = (Tc_100 * 9/5) + 3200; //Convert to fahrenheit, comment this out to display in celcius
//Display current temperature*****************************************************************************
lcd.setCursor(0,0);
Whole = (Tc_100 / 100); // separate off the whole and fractional portions
Fract = (Tc_100 % 100);
lcd.print(Whole, DEC);
delay(keypad_delay);
lcd.print(".");
delay(keypad_delay);
if (Fract < 10)
{
lcd.print("0");
delay(keypad_delay);
}
lcd.print(Fract, DEC);
delay(keypad_delay);
lcd.write(0xDF);
delay(keypad_delay);
lcd.print("F ");
delay(keypad_delay);
//Display Time******************************************************************************************
lcd.setCursor(0,10);
if((hour < 10 && hour > 0) || (hour > 12 && hour - 12 < 10)){
lcd.print(" ");
delay(keypad_delay);
}
if(hour > 12){
lcd.print(hour - 12, DEC);
delay(keypad_delay);
}
if(hour == 0){
lcd.print(12, DEC);
delay(keypad_delay);
}
if(hour > 0 && hour < 13){
lcd.print(hour, DEC);
delay(keypad_delay);
}
lcd.print(":");
delay(keypad_delay);
if(minute < 10){
lcd.print("0");
delay(keypad_delay);
}
lcd.print(minute, DEC);
delay(keypad_delay);
lcd.print(":");
delay(keypad_delay);
if(second < 10){
lcd.print("0");
delay(keypad_delay);
}
lcd.print(second, DEC);
delay(keypad_delay);
if(hour < 12 || hour == 0){
lcd.print("AM");
delay(keypad_delay);
}
else{
lcd.print("PM");
delay(keypad_delay);
}
//Display High Temp***********************************************************************************
if(on_minute == 0){ //used so if bad data is sent for the first reading, it is not saved
lcd.setCursor(1,0);
if(Tc_100 > High){
High = Tc_100;
}
Whole = (High / 100); // separate off the whole and fractional portions
Fract = (High % 100);
lcd.print("H= ");
delay(keypad_delay);
lcd.print(Whole, DEC);
delay(keypad_delay);
lcd.print(".");
delay(keypad_delay);
if (Fract < 10)
{
lcd.print("0");
delay(keypad_delay);
}
lcd.print(Fract, DEC);
delay(keypad_delay);
lcd.write(0xDF);
delay(keypad_delay);
lcd.print(" ");
delay(keypad_delay);
}
//Display Low Temp***************************************************************************************
if(on_minute == 0){ //used so if bad data is sent for the first reading, it is not saved
if(Tc_100 < Low){
Low = Tc_100;
}
Whole = (Low / 100); // separate off the whole and fractional portions
Fract = (Low % 100);
lcd.print("L= ");
delay(keypad_delay);
lcd.print(Whole, DEC);
delay(keypad_delay);
lcd.print(".");
delay(keypad_delay);
if (Fract < 10)
{
lcd.print("0");
delay(keypad_delay);
}
lcd.print(Fract, DEC);
delay(keypad_delay);
lcd.write(0xDF);
delay(keypad_delay);
lcd.print(" ");
delay(keypad_delay);
}