I have several calculator hardware projects on hold indefinitely while Doors CS 7, SourceCoder 2.5, and various other constructive projects are underway, but I got excited about this today and had to build it. The hardware took about 30 minutes to construct, and the software not much longer, so it's doable even for you beginner DIYers (or beginner z80 programmers, for that matter). I must give credit where credit is due to new Cemetech user HappyBobJr for emailing me a few days ago with the idea of a shakable calculator Etch-A-Sketch and asking how it could be implemented. I first suggested an analog accelerometer with a simple thresholding circuit connected to the I/O linkport of a calculator, which would pull a line low when shaken at or above a specific velocity. Today, I had the inspiration that the classic spring-and-pin motion detector, most known for their starring roll in light-up bouncy balls and light-up yo-yos, would be a much easier beginner solution to the problem, and suggested this design:
On my way home two hours ago, I decided I would build it, so I came up with the gadget at the link below, made out of 1/4 of a 4-AA battery case, a spring, a heavy-duty staple, hot glue, solder, a piece of a calculator link cable, and a piece of double-sided foam tape to hold it to the calculator. I wrote the software in pure z80 ASM, of course, programming purist that I am. The program supports moving in eight directions (eg, left, right, up, up-left, down-right, etc), clearing by pressing [CLEAR], and quitting by pressing [MODE]. In addition, it looks for the sensor and can perform what I'm calling "incremental erasing" when the calculator is shaken. In other words, since shaking a real Etch-a-Sketch does not instantly clear it, shaking the calculator erases 16 random columns and rows of the LCD. Shake it a few times, and the display is clear. Be sure to check out the (somewhat awkward) video below, and remember to keep us posted if you have any cool hardware projects, calculator or otherwise, in your project pipeline.