Since Cameron Hoerig is an engineering student at the University of Cincinnati, the idea of building a typical beer pong table was out of the question. "I'm an electrical engineering student, so I should have a table that stands out," says Hoerig.
He built an interactive table. On either end of the table - where the cups stand - there are 10 LED rings composed of eight LEDs each. In the middle of each ring there's a photocell. The Ping-Pong ball triggers the sensors and the gadget's software rotates the LEDs, giving the illusion of a light spinning around the cup.
It's impossible to read the documentation but I'm responding to your problem with inconsistent linearity of photocells. Yes, photocells are imprecise and non-linear. Much of the voltage appears across the limiting resistor. Consider putting a transistor as a constant current source in series with photocells, eliminating the resistor. The voltage across the transistor will be a consistent two diode drops. That way, all the voltage change appears across the photocell. I hope I have understood your problem.
One of the biggest walls in embedded software development is the integration of low-level drivers with higher-level middleware and application code, but silicon vendors are stepping up to bring it down.
Focus on Fundamentals consists of 45-minute on-line classes that cover a host of technologies. You learn without leaving the comfort of your desk. All classes are taught by subject-matter experts and all are archived. So if you can't attend live, attend at your convenience.