best way to protect a digital or analog input from 12volts
There are some suggestions at Protecting Inputs in Digital Electronics .

Amended answer

Testing of my earlier answer involving clamping diodes gave unsatisfactory results. Due to the small current flow the diodes allowed a considerable voltage to reach the input pin (like, 9 V).

The amended circuit below, tested with 12V input, satisfactorily keeps the Arduino input pin to 4.9 V, even with 12 V from the device. The current through R1 is around 7 mA which is what you would expect:

I = V / R
I = 7 / 1000
I = 7 mA


The 1N4733A is a 5.1 V, 1 W zener diode which can therefore handle dropping 5 V at 7 mA.

In case you are wondering where the number 7 comes from in the calculations above:


The input voltage is 12 volts
The desired output is 5 volts
Therefore we need to drop (12 - 5) volts over the resistor
Thus 7 volts are dropped over the resistor






Further reference material:


10 Ways to Destroy An Arduino
Protection
Microcontroller Input Protection Techniques