frishkorn / timeclock Goto Github PK
View Code? Open in Web Editor NEWAn Arduino driven time clock with 16x2 multi-color LCD display, user input buttons, RTC, and SD card.
An Arduino driven time clock with 16x2 multi-color LCD display, user input buttons, RTC, and SD card.
Since the time functionality is working. Remove old debug code to simplify code.
v0.4.1 is ready for release.
Arduino won't allow multiple *.ino files sit in the same folder unless they are part of the same main sketch. Move the timeUtility.ino file into its own sub-folder.
Trim version history in timeClock.ino. Remove from start to release 1.0. It's grown large and if someone needs to find that information, they can look at the history in GitHub.
It's easy to forget what Project is recording. Have the Timer Screen periodically show the project or use LEFT / RIGHT buttons.
I did not write the code to handle this type of error. Set if undefined, then use Project 01, Project 02, etc.
Currently device displays !System Error!, but doesn't tell the user what the error is. Error type is displayed over serial interface.
Make another update to timeExample.xlsx.
Right now message states RTC Stopped. This might be confusing to a user. Change to say "RTC Not Set".
Time and date are from the RTC so preceding zeros are missing. Update code to use a function pointer that the LCD and the Log can utilize.
Provide instructions on how to use device.
Currently set to generic, would be nice to find another method for unique file-names.
When time is equal to 10 or 11 a 0 is preceded before the hours digit. Saw this issue with 11 AM, not sure if PM is affected.
Problem lies here
{
if (now.hour() == 12) { // Don't precede with a zero if it's noon.
lcd.print(now.hour(), DEC);
}
else {
lcd.print("0");
lcd.print(now.hour(), DEC);
}
}
Allow user to select from a set of projects and log information with timer.
During recording a RIGHT BUTTON press should show the current timer.
Version 2 shall support entering Time and Date manually. Currently has to be done when code is complied.
Move the last heartbeat line to the top of the file.
Currently the output to the log file is in milliseconds. Print it in hh:mm:ss.
While brushing up on the DS1307 RTC, I noticed that it contains 56 Bytes of Non-Voltage SRAM that is persistent as long as a battery is installed. Learn more about how to manipulate this and use it for a purpose.
When pressing the UP/DOWN buttons show the Project Title for 5 seconds.
RTC Time-Set code if not commented out, will cause time to reset to when code was complied every time the Arduino is reset. I think it would be better to split this out into it's own code that only sets the RTC and wipes NV_SRAM.
Set timeout to 2 seconds rather than 3 seconds.
Previously serial output was removed. However after using the device in the lab, messages could be beneficial.
Spreadsheet hasn't been updated since the timer issue has been fixed.
A timer shall start at first button press, and end at second button press. The log-file shall create an entry for each timer.
Since connecting via a serial connection resets the Arduino, the heartbeat is useless. Remove it from the code.
Add below Date.
When pressing UP when already on Project 1 or DOWN when already on Project 6, you get repeat notifications.
In case of power loss, every 5 secs write date and time to NV_SRAM.
now.month() = 02
now.day() = 03
now.year() = 04 High Byte
now.year() = 05 Low Byte
now.hour() = 06
now.minute() = 07
Add instructions on Right Button Press to Read me.
Add Left Button press functionality instructions in README.md.
Develop a way to read Project Names that are stored on the SD Card. This would eliminate the need to look up the project based off of what number it is.
Let users know that the log file time is always in 24 hour format.
If a timer is active it, device should not change project type.
Update code so that each projects.txt entry can be entered like,
Project1
Project2
etc...
Rather than, Project1Project2.
It should also handle newlines so that they don't have to contain whitespace characters to equal 8. Arrays should be null terminated.
Move both to button line and allow user to select them using left or right buttons. Primarily show the time but show the date periodically (interval TBD).
This would reduce code size by not having to subtract by 12 and print AM or PM. Chip is able to select from a variety of time formats. 12, 24, 10, PM/AM.
Datasheet http://datasheets.maximintegrated.com/en/ds/DS1307.pdf
Include how the added heartbeat in issue #36 functions.
Timing seems to be off in some cases. Right around a second. Check the button press code for collisions with the delay.
Display on LCD when timer starts and when timer stops which each press of the SELECT button.
There is a space before the time in the data-log. This prevents Excel from doing easy calculations. Need to work on testing and improving the timer if needed.
Define timeout globally in code to help prevent inconsistent timeouts.
Replace RTC Battery. Battery type is 3V Lithium CR1220.
Write instructions on how projects.txt should be formatted. Include and example file in the utility folder.
When the devices time is reset using timeUtility.ino, memory is set to 0xFF. To retain project memory the project and LCD back-light are fetched from memory. This causes them to be set to 255 which causes an issue until the user selects a project. Need an if statement to set these to default if the memory is equal to 0xFF.
Heartbeat is missing code to append a 0 to a number > 10.
Change sync interval to 10 seconds rather than 15.
When time is reset, heartbeat registers are set to 0xFF. Print 'none' instead of time using an if statement.
Red is now being used to notify user that timer is currently "recording". Need to update code to remove the option of selecting the color red as the backlight.
Function millis() doesn't seem to match time between button presses.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.