Ccc56:
I'm a marine electrician (I work on ships) and I'm having trouble trying to figure out why some people say it's better to use a pull up resistor for an input as opposed to a pull down resistor.
In my experience, switching neutral and/or negative only leads to problems, some which could be quite serious.
Well different worlds, AC neutral and DC negative. Also one is not switching voltage source wires when they talk of pull-ups or pull-down for arduino input pins.
Here is the thing, arduino input pins, if they have nothing wired to them are said to be in a 'floating condition', meaning they have no default electrical signal wired to them, therefore when executing a digitalRead() statement on a 'floating' input pin will return random HIGH or LOW results just due to circuit noise, emf, phase of the moon, etc.
So to read a typical manual switch contact input (button is a common term used) on a arduino digital input pin, there has to somehow be a default valid digital voltage source (either +5vdc or ground) applied to the pin when the switch contact is in the open condition. Wiring a say 10k ohm resistor to either ground or +5vdc and the other end to the input pin is one way to satisfy that condition. So if we wire a pull-up resistor to +5vdc and the input pin and also wire a switch contact between the input pin and ground, when the switch contact is open it will read as a HIGH and when the switch contact is closed the input will read as LOW. Conversly wiring a pull-down resistor to ground and the input pin, and the switch to the input pin and +5vdc, will result in a valid LOW when not pressed and a valid HIGH when pressed.
Now the reason to favor using a pull-up design over a pull-down design, is that the AVR chip used on the arduino has a software enabled option to apply an internal pull-up resistor to any digital input pin. So using that option allows one to simply wire a switch contact between the input pin and ground, when not pressed the internal pull-up supplies a valid logic voltage and when pressed the switch supplies a ground to the pin overriding the pull-up voltage and the pin will read as a valid logic level LOW. So one gets to use a required pull-up without actually needing a physical external resistor. Note that there is no software enable internal pull-down resistor option avalible.
So the choice of pull-up or pull-down is strictly up to you to decide what's best for your external circuit. However by utilizing the software enabled internal pull=up resistors for the input pins saves you one physical resistor for each input pin you are using. Note this only applies to reading switch contacts or open-collector transistors wired to input pins. Any electrical signal that is active low 0vdc, and active high, +5vdc can be wired directly to an input pin without the need of pull-up or down resistors, as the signal always has a valid logic voltage level, so the input pin never 'sees' a 'floating' input state. Note then when wiring a active electrical signal to a arduino pin there must also be a common ground wire run between the arduino and the external device suppling the signal to the input pin if that device is being powered by a different voltage source, rather then the +5vdc from the arduino board.
That make sense?
Lefty