Sky Pointer
This is a device for more easily finding objects in the sky, such as satellites, visible planets, and the moon and sun. I've seen people build pointers that always point at the International Space Station, and I wanted to extend this for more easily tracking any satellite at night (for viewing), or during the day (for antenna tracking). While doing some testing on tracking satellites at night, I found that I would often move my device, misaligning the pointer. The moon, sun, and planets made for good reference points, so I eventually added tracking for them as well.
The heart of the device lies in translating coordinate systems into Horizon coordinates. This is the local viewing conditions of an observer on the earth's surface; when given GPS coordinates and a time and date, the device calculates which compass heading to face, and how high above the horizon the object is. My code is based on two existing projects: Grady Hillhouse's ISS pointer[1] for the satellites (modified to switch between many satellites instead of permanently tracking just one), and Practical Astronomy with your Calculator or Spreadsheet 4th Edition[2] which is an excellent textbook that walks you through all the calculations needed to calculate the positions of the stars and planets. I translated several of the methods presented in this book into C code.
The current version is awaiting a rebuild of the pointer mechanics (and now that my 3D printer is working well, this will likely happen soon)
Source
This is the source for the original version: File:Skypointer-v1.zip