Owake started from a simple question: why rely on a phone to wake up when you can build something better yourself?
It is a retro alarm clock, digital clock and chronometer that runs on AVR microcontrollers using the Arduino core. The whole thing is driven by a hierarchical finite state machine that manages every mode and transition cleanly, paired with a custom driver for HD44780-based LCD displays written from scratch — no bloated libraries, full control over timing and communication.
Features
- Alarm, digital clock and chronometer modes
- Smooth, responsive navigation through a three-button interface (down, up, ok)
- Custom I2C LCD driver for 16×2 HD44780 displays
- Hierarchical FSM architecture — states are composable and transitions are explicit
- Targets atmega328p and atmega32u4 out of the box
Hardware
You need a common AVR board (Arduino Nano, Uno, Leonardo, Mini, Micro or Mega), a 16×2 I2C LCD, three push buttons and a buzzer. The schematic is included in /resources/schem.png.
Building
Requires avr-binutils, avr-gcc, avr-libc and avrdude on your path. Windows users can get these through MSYS2.
make mcu=yourmcu # defaults to atmega328p
make flash mcu=yourmcu port=mcuport
The compiled firmware lands in build/binaries.
Licensed under the GNU General Public License v3.0.