We read a digital input pin to know if it is ON or OFF, like checking if a button is pressed.
Reading digital input pin state in Embedded C
int pinState = digitalRead(pinNumber);pinNumber is the number of the input pin you want to read.
digitalRead() returns HIGH (1) if the pin is ON, or LOW (0) if it is OFF.
buttonState.int buttonState = digitalRead(2);
if block.if (digitalRead(5) == HIGH) { // do something when pin 5 is ON }
This program reads the state of a button connected to pin 7. It prints "Button is PRESSED" when the button is pressed, otherwise it prints "Button is NOT pressed" every half second.
#include <Arduino.h> const int buttonPin = 7; // input pin number void setup() { pinMode(buttonPin, INPUT); // set pin as input Serial.begin(9600); // start serial communication } void loop() { int buttonState = digitalRead(buttonPin); // read pin state if (buttonState == HIGH) { Serial.println("Button is PRESSED"); } else { Serial.println("Button is NOT pressed"); } delay(500); // wait half a second before reading again }
Make sure to set the pin mode to INPUT before reading the pin.
Use pull-up or pull-down resistors to avoid random readings (floating pins).
digitalRead() only reads digital signals: ON (HIGH) or OFF (LOW).
Use digitalRead(pin) to check if a digital input pin is ON or OFF.
Always set the pin as INPUT before reading.
Reading digital pins helps detect buttons, switches, and sensors.
Practice
digitalRead(pin) do in embedded C programming?Solution
Step 1: Understand the purpose of digitalRead
The function digitalRead(pin) is used to check the current electrical state of a digital input pin, which can be either HIGH (on) or LOW (off).Step 2: Differentiate from other pin functions
Unlike functions that set pin modes or write signals, digitalRead only reads the pin's state without changing it.Final Answer:
Reads the current state (HIGH or LOW) of a digital input pin. -> Option CQuick Check:
digitalRead reads pin state = D [OK]
- Confusing digitalRead with pinMode or digitalWrite
- Thinking digitalRead sets pin mode
- Assuming digitalRead writes output signals
Solution
Step 1: Identify the function to set pin mode
pinMode(pin, mode) is used to configure a pin as INPUT or OUTPUT.Step 2: Choose the correct mode for reading input
To read a digital input pin, it must be set as INPUT using pinMode(pin, INPUT).Final Answer:
pinMode(pin, INPUT); -> Option BQuick Check:
Set pin as INPUT before reading = A [OK]
- Setting pin as OUTPUT before reading input
- Calling digitalRead before setting pin mode
- Using digitalWrite to set pin mode
pinMode(7, INPUT);
int buttonState = digitalRead(7);
if (buttonState == HIGH) {
printf("Button is pressed\n");
} else {
printf("Button is not pressed\n");
}Solution
Step 1: Analyze pin mode and reading
The pin 7 is set as INPUT, so digitalRead(7) correctly reads the pin state.Step 2: Check condition for pressed button
If the button is pressed, the pin reads HIGH, so the if condition is true and prints "Button is pressed".Final Answer:
Button is pressed -> Option AQuick Check:
Pressed button = HIGH = prints pressed [OK]
- Forgetting to set pinMode before reading
- Confusing HIGH and LOW states
- Assuming digitalRead returns boolean true/false
int pin = 5;
int state;
state = digitalRead();
if(state == HIGH) {
// do something
}Solution
Step 1: Check digitalRead usage
digitalRead requires the pin number as an argument, but here it is called without any argument.Step 2: Verify other parts of code
Pin mode setting is missing but not the main error asked; the if condition syntax is correct.Final Answer:
Missing pin number argument in digitalRead function. -> Option DQuick Check:
digitalRead needs pin argument = B [OK]
- Calling digitalRead without pin argument
- Setting pin as OUTPUT before reading input
- Misunderstanding return type of digitalRead
Solution
Step 1: Set correct pin modes
Pin 3 is input for the switch, so pinMode(3, INPUT). Pin 13 is output for the LED, so pinMode(13, OUTPUT).Step 2: Read switch and control LED
If digitalRead(3) is HIGH (switch ON), turn LED on with digitalWrite(13, HIGH), else turn it off with digitalWrite(13, LOW).Final Answer:
pinMode(3, INPUT); pinMode(13, OUTPUT); if (digitalRead(3) == HIGH) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } -> Option AQuick Check:
Input pin read controls output pin write = A [OK]
- Setting input pin as OUTPUT or vice versa
- Reading wrong pin for switch state
- Not controlling LED pin properly
Ready to prove it?
Pass the test and this pattern moves unknown
