On Friday 3/28/14 a friend tweeted
Can someone make an augmented reality iPhone app for color blind people that helps them identify colors? I'd be forever indebted to youOn the drive home I thought up this circuit.
It uses an Arduino controller to measure the resistor value and then send commands to the Speakjet to say the value and colors. 4 or 5 resistors are compared to the unknown resistor one at a time. To do this the IO pins on the Arduino are initially set as inputs. As inputs they are high resistance. Then one of the IO pins is set as an output and a LOW value is written. This makes the end of the selected resistor close to 0 volts. The unknown resistor and the selected resistor form a potential divider and the voltage where they join is read using an analog input.
Switching the known resistorsThe software tries to find the known resistor that is closest to the unknown one. It does this by selecting each known resistor one at a time and measuring the voltage. The analog input returns a number between 0 and 1024. So the number 512 should mean 2.5 volts. Each known resistor is connected to a digital IO pin. Initially each IO pin is set as an input. As an input it is a high resistance and effectively disconnects the resistor. The one at a time, an IO pin is changed to an output and set LOW. This connects the known resistor to about 0 volts. The analog input is read and then the IO pin is set back to an input. This repeats for each of the known resistors. The measured value that is closest to 512 is used to select the known resistor that is closest to the unknown one.
To use these sources create a folder called res_meter and download the following files into it.
Updated meter circuit