What is digitalWrite() function in Arduino??
So digitalWrite is basically an in-built function used by Arduino to drive a DC motor, stepper motor, servo motor, buzzer, speaker, glowing a led, displaying values of LCD or OLED display, etc. in Arduino you can use the digital pin as input or output. If you are using the digital pin as output then you have to use the digital write function. The digitalWrite function is used to drive or control an external device. digitalWrite function makes digital pin HIGH & LOW which is used to make any sensor, module, or led turn ON or OFF. Digital pin configures the digital pin as HIGH & LOW. HIGH means 5v and LOW means 0v.
Digital input/output pins of Arduino are default set as inputs. If we have not set pins as OUTPUT in pin Mode() and we have connected an LED to a pin, then when we call the digital Write (11, HIGH) function inside the void loop, then the LED may appear dim. So without configuring pins in pin Mode(), digital Write() enabled the internal pull-up resistor, which acts like a large current-limiting resistor.
pinMode(11, OUTPUT)
It is mandatory to declare each
and every digital pin of Arduino as output in pin mode.
In Arduino, we have 14 digital pins 0 to 13 so we can use the digital write function for digital pins only, we cannot use the digital write function for analog pins of Arduino. We usually connect the signal pin of the sensor to the digital pin of Arduino. We normally don’t use 0 & 1 pins as they are transmitter (TX) & receiver pins (RX) for serial communications. ATmega328P pins provide 40 mA (source/sink) to other external devices. This is enough current to turn an LED with a limiting resistor but not enough current to drive most motors. Devices or motors which draw more current can damage or destroy Arduino pins. To control high voltage high current motors we need some driver circuits to interface between Arduino and motor.
If the Arduino digital pin is configured as INPUT_PULLUP in pin mode, then it will invert the behavior of the INPUT mode, which means HIGH will acts as an OFF (led will off) and LOW will act as an ON (led will on). The digitalWrite() function simply creates an interface control for Arduino with external devices.
analogWrite() has no
relation with Arduino analog pins. analogWrite() functions are not accessible
by all digital pins. Only a digital pin having PWM output can access the analogWrite()
function. the digital pin having the ~ symbol on Arduino boards is the PWM pin. By using
analogWrite() we can easily controlled the output power between 0v to 5v
example 1.5v or 2.5v etc. whereas in digitalWrite() we can only set the output voltage
1 (5v) or HIGH and 0(0v) or LOW. analogWrite() takes 0 to 255 integer values
which is represented from 0 to 5v. 0v means 0 and 5v means 255. If we want to
set output voltage means power deliver to the load 2.5v means we have to pass
128 in analog write(ledpin,125).
digitalWrite() is used with digital pins (0 to 13) of Arduino to configure these pins for an output operation. digitalWrite() only can drive the output ON or OFF, which means HIGH or LOW. We cannot have access to control the output power. In digitalWrite() we can assign only 5v (ON) or 0v (OFF). digitalWrite(ledpin,HIGH) is considered as turn ON or logic 1 whereas digitalWrite(ledpin,LOW) is considered as turn OFF or logic 0.
digitalWrite(pin,
value);
The digital write function has two parameters. To execute this
function we have to pass arguments in it.
Arguments are non-thing but actually real value that we are
passing in a function. digital write does not return any values.
digitalWrite(11, HIGH);
digitalWrite(11, LOW);
Here 11 is the pin of the Arduino and HIGH is a keyword. Keywords are reserved words that are used by Arduino to perform tasks.
Here keyword HIGH means assigning 5v to that digital pin and
keyword LOW means assigning 0v to that digital pin.
As we know in the digital systems 1 means HIGH and 0 means LOW.
We can use these numeric values also in the digital write function
digitalWrite(11, 1);
digitalWrite(11, 0);
So we will look at one basic example of digital write, we have connected one LED to our digital pin which we will turn ON or turn OFF using the digital write function.
Here is a schematic of the circuit. We have connected the LED at pin number 11 of our Arduino board & negative terminal to the Ground.
Code -
void setup()
{
pinMode(LEDPIN, OUTPUT); // declare led pin as output
Serial.begin(115200); // set a baud rate of 115200
}
void loop()
{
digitalWrite(LEDPIN, HIGH); // turn the LED on (HIGH is the voltage level)
Serial.println("LED turn ON");
delay(1000); // wait for a 1 second
digitalWrite(LEDPIN, LOW); // turn the LED off by making the voltage LOW
Serial.println("LED turn OFF");
delay(1000); // wait for a 1 second
}
Here we have declared a led pin which is connected at pin number 11 of Arduino. We have declared a baud rate of 115200 and LED pin as OUTPUT.
In the void loop, we have a passed argument inside the digital write function that is pin number we are passing a variable name as LEDPIN which corresponds to pin no 11 of Arduino and keywords. Here we are continuously turning ON and turning OFF an LED with help of HIGH and LOW keywords. We have introduced a small delay of 1 sec.
Now we used the serial monitor to observe the output. To open up the serial monitor, click on Tools > Serial Monitor or use the shortcut (SHIFT + CONTROL + M). You can see when we have printed the status of the led as “LED ON” and “LED OFF”.
Conclusion –
Today we learn about Arduino digital write, where to use the digital write function, how to use the digital write function, what the digital write function does in Arduino, syntax, and the parameters of the digital write function.
"I hope you find this IoT blog very helpful to you. In the upcoming lesson, we will see more about IoT sensors till then bye. See you all in my next blog."