Course Content
📘 MODULE 11 – Edge Avoiding Robot
📦 MODULE 12 – Smart Multi-Function Robot (Mega Project)
Arduino Hands-On Programming and Robotics Course

Lesson P13 – Digital Input and Output Programming

🎯 Learning Objectives

After completing this lesson, students will be able to:

✅ Understand Digital Input and Output

✅ Understand HIGH and LOW states

✅ Read push buttons and switches

✅ Control LEDs and relays

✅ Use digitalRead() and digitalWrite()

✅ Build interactive Arduino projects

✅ Understand pull-up and pull-down concepts


1. Introduction

Arduino interacts with the outside world using pins.

These pins can work in two modes:

Input

Arduino receives information.

Examples:

  • Push Button
  • Switch
  • IR Sensor
  • Vibration Sensor

Output

Arduino sends information.

Examples:

  • LED
  • Relay
  • Buzzer
  • Motor Driver

This process is called:

Digital Input and Output (Digital I/O)

Digital I/O is the foundation of almost every Arduino project.


2. What is Digital Signal?

A digital signal has only two states:

State Value
LOW 0
HIGH 1

or

State Voltage
LOW 0V
HIGH 5V

Arduino UNO understands only these two states for digital pins.


3. Real-Life Example

Imagine a room light switch.

Switch OFF

Light OFF


Switch ON

Light ON

Only two conditions exist.

This is a digital system.


4. Digital Output

When Arduino sends signals to a device, it acts as an Output.

Examples:

  • LED ON/OFF
  • Relay ON/OFF
  • Buzzer ON/OFF

5. Configuring Output Pins

Before using an output pin:

pinMode(pin, OUTPUT);

must be used.

Example:

pinMode(13, OUTPUT);

Pin 13 is now configured as an output.


6. digitalWrite()

Used to send HIGH or LOW.

Syntax:

digitalWrite(pin, state);

Turning LED ON

digitalWrite(13, HIGH);

Pin Output:

 
5V
 

LED turns ON.


Turning LED OFF

digitalWrite(13, LOW);

Pin Output:

0V

LED turns OFF.


Complete Example

void setup()
{
pinMode(13, OUTPUT);
}

void loop()
{
digitalWrite(13, HIGH);

delay(1000);

digitalWrite(13, LOW);

delay(1000);
}

Result:

LED blinks continuously.


7. Digital Input

When Arduino receives information from external devices, it acts as an Input.

Examples:

  • Push Button
  • Toggle Switch
  • IR Sensor
  • Limit Switch

Configuring Input Pins

Syntax:

pinMode(pin, INPUT);

Example:

pinMode(2, INPUT);

Pin 2 becomes an input.


8. digitalRead()

Used to read digital signals.

Syntax:

digitalRead(pin);

Returns:

HIGH

or

LOW
 

Example

 
int buttonState;

buttonState = digitalRead(2);
 

Arduino stores button status.


9. Push Button Working Principle

Button Released:

 
LOW
 

Button Pressed:

 
HIGH
 

Arduino continuously checks the state.


Example Program

 
void setup()
{
pinMode(2, INPUT);

Serial.begin(9600);
}

void loop()
{
int buttonState;

buttonState = digitalRead(2);

Serial.println(buttonState);

delay(200);
}
 

Output:

 
0
1
0
1
 

depending on button state.


10. Controlling LED Using Push Button

This is one of the most important beginner projects.


Logic

If button pressed

LED ON

Otherwise

LED OFF


Program

 
void setup()
{
pinMode(2, INPUT);

pinMode(13, OUTPUT);
}

void loop()
{
if(digitalRead(2) == HIGH)
{
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
}
 

11. Pull-Up and Pull-Down Resistors

A common beginner problem:

Button not pressed

Random readings appear.

Why?

Because the input pin is floating.


Floating Input

A floating pin is not connected to HIGH or LOW.

Result:

Random values.

Example:

 
1
0
1
1
0
0
1
 

Solution

Use:

Pull-Up Resistor

or

Pull-Down Resistor


12. Internal Pull-Up Resistor

Arduino UNO contains built-in pull-up resistors.

Very useful.


Syntax

 
pinMode(2, INPUT_PULLUP);
 

Now external resistor is usually unnecessary.


Important Note

With INPUT_PULLUP:

Button State Reading
Released HIGH
Pressed LOW

Logic becomes reversed.


Example

 
if(digitalRead(2)==LOW)
{
digitalWrite(13,HIGH);
}
 

Button press gives LOW.


13. Relay Control

Relays are common digital output devices.

Arduino sends:

 
HIGH
 

or

 
LOW
 

to control a relay.


Example

 
digitalWrite(8,HIGH);
 

Relay ON.


 
digitalWrite(8,LOW);
 

Relay OFF.


Applications

  • Home Automation
  • Pump Control
  • Smart Appliances

14. IR Obstacle Sensor Example

IR Sensor Output:

Obstacle Present:

 
LOW
 

No Obstacle:

 
HIGH
 

(depends on sensor model)


Program Logic

 
if(digitalRead(2)==LOW)
{
Serial.println("Obstacle Detected");
}
 

15. Vibration Sensor Example

 
if(digitalRead(3)==HIGH)
{
Serial.println("Vibration Detected");
}
 

Applications:

  • Security Systems
  • Earthquake Monitoring
  • Machine Monitoring

16. Real Project Examples

Smart Door Alarm

Input:

Button Switch

Output:

Buzzer


Automatic Water Dispenser

Input:

IR Sensor

Output:

Relay + Pump


Home Security System

Input:

Vibration Sensor

Output:

Alarm


Smart Dustbin

Input:

IR Sensor

Output:

Servo Motor


17. Common Beginner Mistakes

Mistake 1

Forgetting pinMode()

Wrong:

 
digitalWrite(13,HIGH);
 

without:

 
pinMode(13,OUTPUT);
 

Mistake 2

Using wrong pin numbers.


Mistake 3

Ignoring pull-up requirements.


Mistake 4

Confusing HIGH and LOW logic.

Especially with INPUT_PULLUP.


18. Best Practices

✅ Define pin modes in setup()

✅ Use INPUT_PULLUP when possible

✅ Label pin connections

✅ Test inputs using Serial Monitor

✅ Use comments for clarity


📊 Summary

In this lesson, we learned:

✅ Digital Signals

✅ Digital Input

✅ Digital Output

✅ pinMode()

✅ digitalRead()

✅ digitalWrite()

✅ Push Button Control

✅ Pull-Up Resistors

✅ Relay Control

Digital I/O is the most fundamental concept in Arduino programming because almost every sensor and actuator communicates through digital signals.


📖 Key Terms

Digital Input

Receiving HIGH or LOW signals.

Digital Output

Sending HIGH or LOW signals.

HIGH

Logic 1 (5V).

LOW

Logic 0 (0V).

digitalRead()

Reads digital signals.

digitalWrite()

Writes digital signals.

INPUT_PULLUP

Enables internal pull-up resistor.

Floating Input

Input pin without a defined state.


🎯 Quiz

1. Which function reads a digital pin?

A. digitalWrite()

B. digitalRead() ✅

C. analogRead()

D. pinMode()


2. What voltage represents HIGH on Arduino UNO?

A. 0V

B. 3.3V

C. 5V ✅

D. 12V


3. Which function sends a digital signal?

A. digitalWrite() ✅

B. digitalRead()

C. analogRead()

D. Serial.print()


4. What does INPUT_PULLUP do?

A. Increases voltage

B. Enables internal pull-up resistor ✅

C. Starts communication

D. Controls PWM


5. Which device is a digital input?

A. LED

B. Relay

C. Push Button ✅

D. Buzzer


🏠 Assignment

Task 1

Create a program that turns an LED ON when a push button is pressed.

Task 2

Display button status in Serial Monitor.

Task 3

Control a relay using Arduino.

Task 4

Use an IR sensor to detect an object and display a message.

Task 5

Explain the difference between INPUT, OUTPUT, and INPUT_PULLUP with examples.


➡️ Next Lesson: P14 – Analog Input and PWM Programming (Detailed Practical Lesson), which connects directly to sensors like LDR, potentiometer, MQ gas sensor, and motor speed/LED brightness control.

Scroll to Top