I want to write a COUNT UP timer for my hothouse. Basically count the days from when I planted a particular plant/seed.
I did the basics using millis(). For this sketch by question is how to NOT use DELAY and only write to the monitor once the time changes.
// Crude COUNT UP TIMER for hothouse
//#include <Wire.h> //Arduino library
//#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
// Variables will change :
unsigned long NOW; // Storing the current Millis
unsigned long RunningDays; // Storing the Running Days
unsigned long RunningHrs; // Storing the Running Hrs
unsigned long RunningMin; // Storing the Running Min
// Constants that won't change :
void setup() {
Serial.begin(9600); // initialize serial communication:
// lcd.init(); // initialize the lcd
// lcd.backlight();
} // ****************************** END SETUP *************************************
void loop() {
NOW = millis();
RunningDays = (NOW / 86400000); //Determine how many Days in current milis
RunningHrs = ((NOW - (RunningDays * 86400000)) / 3600000); //Subtract Days in millis and determine how many hours left
RunningMin = ((NOW - (RunningDays * 86400000) - (RunningHrs * 3600000)) / 60000); //Subtract Days & Hrs in millis and determine how many Minutes left
Serial.print(RunningDays);
Serial.print(" Days ");
Serial.print(RunningHrs);
Serial.print(" Hrs ");
Serial.print(RunningMin);
Serial.println(" Min.");
delay(30000);
// lcd.setCursor(0,0); //Seting cursor position for Days
// lcd.print(RunningDays);
// lcd.setCursor(7,0); //Setting cursor position for Hrs
// lcd.print(RunningHrs);
//lcd.setCursor(12,0); //Setting cursor position for Min
//lcd.print(RunningMin);
} //*********************** End loop **********************************
Second Question.....Then I tried doing the same using the Time.h library
/*
Crude Count UP timer using Time Library
*/
#include <Time.h>
void setup() {
Serial.begin(9600);
const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013
}
void loop() {
Serial.print(day());
Serial.print(" ");
Serial.print(hour());
Serial.print(" ");
Serial.println(minute());
delay(1000);
}
Error code is
Arduino: 1.8.3 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"
C:\Users\Herman\Documents\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Users\Herman\Documents\Arduino\hardware -hardware C:\Users\Herman\AppData\Local\Arduino15\packages -tools C:\Users\Herman\Documents\Arduino\tools-builder -tools C:\Users\Herman\Documents\Arduino\hardware\tools\avr -tools C:\Users\Herman\AppData\Local\Arduino15\packages -built-in-libraries C:\Users\Herman\Documents\Arduino\libraries -libraries C:\Users\Herman\Documents\Arduino\My Scetches\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10803 -build-path C:\Users\Herman\AppData\Local\Temp\arduino_build_996901 -warnings=none -build-cache C:\Users\Herman\AppData\Local\Temp\arduino_cache_326436 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.2.1 -prefs=runtime.tools.avr-gcc.path=C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\5.4.0-atmel3.6.1-arduino2 -prefs=runtime.tools.avrdude.path=C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14 -verbose C:\Users\Herman\Documents\Arduino\My Scetches\CountUp_timer_Days_2\CountUp_timer_Days_2.ino
C:\Users\Herman\Documents\Arduino\arduino-builder -compile -logger=machine -hardware C:\Users\Herman\Documents\Arduino\hardware -hardware C:\Users\Herman\AppData\Local\Arduino15\packages -tools C:\Users\Herman\Documents\Arduino\tools-builder -tools C:\Users\Herman\Documents\Arduino\hardware\tools\avr -tools C:\Users\Herman\AppData\Local\Arduino15\packages -built-in-libraries C:\Users\Herman\Documents\Arduino\libraries -libraries C:\Users\Herman\Documents\Arduino\My Scetches\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10803 -build-path C:\Users\Herman\AppData\Local\Temp\arduino_build_996901 -warnings=none -build-cache C:\Users\Herman\AppData\Local\Temp\arduino_cache_326436 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.2.1 -prefs=runtime.tools.avr-gcc.path=C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\5.4.0-atmel3.6.1-arduino2 -prefs=runtime.tools.avrdude.path=C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14 -verbose C:\Users\Herman\Documents\Arduino\My Scetches\CountUp_timer_Days_2\CountUp_timer_Days_2.ino
Using board 'nano' from platform in folder: C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23
Using core 'arduino' from platform in folder: C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23
Detecting libraries used...
"C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\5.4.0-atmel3.6.1-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\cores\arduino" "-IC:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\variants\eightanaloginputs" "C:\Users\Herman\AppData\Local\Temp\arduino_build_996901\sketch\CountUp_timer_Days_2.ino.cpp" -o "nul"
Generating function prototypes...
"C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\5.4.0-atmel3.6.1-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\cores\arduino" "-IC:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\variants\eightanaloginputs" "C:\Users\Herman\AppData\Local\Temp\arduino_build_996901\sketch\CountUp_timer_Days_2.ino.cpp" -o "C:\Users\Herman\AppData\Local\Temp\arduino_build_996901\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Users\Herman\Documents\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Herman\AppData\Local\Temp\arduino_build_996901\preproc\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\Users\Herman\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\5.4.0-atmel3.6.1-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\cores\arduino" "-IC:\Users\Herman\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\variants\eightanaloginputs" "C:\Users\Herman\AppData\Local\Temp\arduino_build_996901\sketch\CountUp_timer_Days_2.ino.cpp" -o "C:\Users\Herman\AppData\Local\Temp\arduino_build_996901\sketch\CountUp_timer_Days_2.ino.cpp.o"
C:\Users\Herman\Documents\Arduino\My Scetches\CountUp_timer_Days_2\CountUp_timer_Days_2.ino: In function 'void loop()':
CountUp_timer_Days_2:13: error: 'day' was not declared in this scope
Serial.print(day());
^
CountUp_timer_Days_2:15: error: 'hour' was not declared in this scope
Serial.print(hour());
^
CountUp_timer_Days_2:17: error: 'minute' was not declared in this scope
Serial.println(minute());
^
exit status 1
'day' was not declared in this scope
I confirmed in the TimeLib which is included in Time.h that "day", 'Hour" and "minute' is declared.