will be read-only starting December 31st, 2018. For more info please look at this Forum Post

Under Development

Digital Input Output

Digital signals are the way computers, microcontrollers, a.o. communicate with each other at a very low level. Digital signals coming into/from microcontrollers like the Arduino I/O board can only take two possible values: HIGH or LOW . Each one of those is characterized by a voltage equivalent. In the Arduino board HIGH is equivalent to 5volts, while LOW is 0volts.

HIGH and LOW are not only having voltage equivalents, but also others at more logical and cognitive levels. The different equivalences for HIGH and LOW are described in the following table:


Voltage Value

Logical Value

Cognitive Value

Machine Code











Remembering these relationships makes easier to understand the way digital electronics work and how also how to program for the different types of sensors to be used with Arduino.

Basic Example: Blink an LED

LED stands for Light Emmitting Diode, a type of component that transforms energy into light in a very efficient way. LEDs have polarity, meaning that it matters how to plug it. LEDs have one pin longer than the other marking the positive pin or anode. The negative pin is also known as cathode.

Having polarity (thus a positive and a negative pin) means only that one of them has to be connected closer to the positive end of our battery or power plug, while the negative one has to be closer to ground or 0V.

Yet another characteristic of the LEDs is that they use a constant voltage between their pins. Each LED is different, even two coming from the exact same manufacturer and same production batch. It is impossible to make them the same. We speak about typical voltage values for LEDs. Usually they use 0.5V, 0.7V, 1.2V, etc.

When willing to connect an output of the Arduino board to an LED, we have to keep in mind that the possible values are LOW (0V) or HIGH (5V). There is a difference in voltage between what Arduino delivers and what an LED can take. The thing that may happen when plugging the LED directly to an output of the Arduino board is that we may shorten the LED's lifespan. To avoid this problem we use resistors, which are components that transform energy (electricity) into heat. If the LED takes e.g. 1.2V, the resistor will take the rest up to 5V; 3.8V in this case.

Resistors can take many values, and the way to calculate the exact one for each type of LED is not in the scope of this text. The typical LEDs used in simple Physical Computing experiments resistors take values between 100Ohm and 330Ohm. If you are interested in getting to know more about resistors and LEDs, we recommend you to check (this link)

<<picture of components for experiment 1>>

We are now ready to start with the first experiment.

References & Examples