I’ve been investigating the calibration register of the RTC chip I used in the Binary Burst clock. While doing so, I discovered some design considerations that I didn’t manage to consider while laying out the board.
I pulled out the Binary Burst Clock and did some more work on the firmware. The big change is that I’m using a different library for the i2c communications. The one I started with had some issues and I didn’t want to work them out myself. Instead I grabbed Peter Fleury’s i2c library. He has two in the package, one is for chips with full TWI hardware (which is not the case with the ATtiny84 I’m using). The other is a software implementation written in assembly. It’s meant to be included in C projects and is super easy to work with.
I also implemented a test to see if the RTC oscillator is running. If not, a ‘first run’ function will start the oscillator and enable the backup battery. The buttons now work for setting the time, and I’ve migrated from a delay-based time keeping tick to one that uses TIMER1 (also used for debouncing the buttons).
At this point I would say the clock is fully functional. I still want to look into some things like how best to calibrate the oscillator for the RTC. Also of interest to me is a deeper menu system that would allow for things like intensity settings and alternate time displays.
The most up to date code is on the master branch of the repository.
I just wrote about a project over at Hackaday where a 16×4 character LCD was used to play Conway’s Game of Life. I’m fond of the game, and have dabbled in programming it myself. I thought it would be fun to take the idea and make the game board a bit bigger.
I’ve divided each character into two pixels by using custom characters. Originally I wanted to use four pixels per character, but the HD44780 protocol only allows for 8 customs and that’s not enough to map every possible combination of four pixels.
But what I ended up with works quite well. I used an Arduino with the LiquidCrystal library which comes with the IDE. The rows and columns wrap so that the game keeps going when it reaches the edge of the screen. I do seem to have one bug in my code which keeps generating garbage at column 0. I’m probably not going to take the time to squash this. It’s not a huge deal, and it keeps the game from becoming stagnant.
Check out my code repository if you’re interested.
I wrote about a project this morning that used a piece of tinfoil connected to an Arduino to simulate touchscreen presses on a tablet. I tried to do this myself but couldn’t get it to work reliably. I had already written this Android app which I intended to use with the interface technique had it work. I can’t unwrite that code so I’ve decided to share it. There’s a description in the video, and here’s a link to the code repository:
I finally got around to taking some pictures and shooting some video of my assembled clock project. Above you can see it displaying time. Minutes are tracked by the blue LEDs in binary code. Each spire has three digits, when the inner and outer digits are lit it shows a binary five and the next spire starts counting. Hours are displayed as a red LED corresponding to the positions on an analog clock. Here it is 12:54.
After the break you can see the video of the clock in action, as well as a description of what went into the build. You’ll also find some close-up pictures and a bit more info.