Since these logs have been started quite a bit after we started working on this project, I will try to summarize the progress that we have made up to now:
Software:
The code has been divided into libraries. Some libraries are platform-specific (atmega328 being the platform) and some others are platform-independent.
Platform-specific Libraries:
- rotary-encoder Library: This library contains the rotary encoder functionality. Every timer you press or rotate the encoder, an interrupt gets triggered, an event gets queued, and every event is processed in the main loop.
- rtc Library: This library contains the configuration of the timer interrupt that gets triggered every second.
- millis Library: This library contains a function that counts milliseconds based on a second timer interrupt. This library is useful for things like "switch debouncing" or identifying double-presses on the switch.
- toneAC library: This library contains tones when we create melodies for the buzzer.
- display Library: [TODO]
- max72xx Library: [TODO]
- led-counter Library: This library contains some functions that allow us to test functionality with simple LEDs on our breadboards.
- UART Library: This contains the UART configuration and functions to read and write to and from the serial monitor.
Platform-independent Libraries:
- uint8-queue Library: This library contains the functionality to create queues of uint8_t elements. Those elements are added to the queue during the operation of the timer and processed (or dequeued) on the main loop.
- state-machine Library: This library contains the state machine that defines what happens and when it happens.
- str-helper Library: This library contains some functions to handle strings and was built to support the UART library.
- timer Library: This library contains the timer class and its functions. The idea is that one of these objects will be created every time a new timer is set up.
Mechanics:
Our design will be very similar to the reference project. These are some of the differences:
- To push the button, the user will push the whole device, unlike the reference project where the push button is part of the rotary encoder.
- The brim will cover the edges of the front panel.
Electronics:
We have not started working on a PCB. All the testing is done on breadboards.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.