Introduction: Working Without a Pull-up/ Pull-down Resistor With Arduino

About: An Electrical Engineering Teacher in Athens Greece. Most of these small projects here, are constructed for enhancing the learning of the use of Arduino as well as basic electricity and electronics for students…

We can avoid using an external pull-up or pull-down resistors, simply by using the internal existing pull-up resistor within Arduino. This may makes life easier when we use pushbuttons.

In void setup() {} add digitalWrite(buttonPin1,HIGH); or digitalWrite(buttonPin1,INPUT_PULLUP)

Internally you set a pull up resistor to the pin. The state is HIGH when the button in unpressed, and LOW when it is pressed..
Try the circuit, I liked it alot for its simplicity.
In a previous instructable, I examend the pull-up and pull down resistors so we can have a better understanding whats going on even with simple things.
You can find here: https://www.instructables.com/id/Understanding-the-Pull-up-Resistor-With-Arduino/

Also check the reference of the Arduino site: https://www.arduino.cc/en/Tutorial/Foundations/DigitalPins

Step 1: The Circuit and the Code

/*
Working without the external pull-up or pull-down resistors,
and using the internal pull-up resistor in Arduino
This example demontrates the OR gate
*/
int buttonPin1 = 2;
int buttonPin2 = 3;
int ledPin = 8;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin1, INPUT);
digitalWrite(buttonPin1, HIGH); //Here you set internally a pull up resistor to the pin.
//The state is HIGH when the button in not pressed, and LOW when it is pressed.

// in the same manner you can set the pull - up resistor (digitalWrite(buttonPin1, INPUT_PULLUP);

pinMode(buttonPin2, INPUT);
digitalWrite(buttonPin2, HIGH);// the same as previous button
}
void loop(){
// so if the state of the buttons are LOW when pressed, to reverse this and make them HIGH we can use the Boolean Operator ! (not)
if ((!digitalRead(buttonPin1) == HIGH) || (!digitalRead(buttonPin2) == HIGH )) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}