Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programar en Arduino
Entradas y salidas digitales
Síntesis
En esta unidad veremos cómo interactuar con las entradas y salidas digitales
presentes en la placa Arduino, como leer pulsadores y que son los circuitos pull-up y
pull-down y cómo usarlos.
[https://commons.wikimedia.org/wiki/File:Señal_analógica.jpg]
Una señal Digital se diferencia de una analógica porque la Digital sólo puede tener
dos valores posibles en cualquier intervalo que tomemos. Un ejemplo de señal digital
es el estado de una lámpara en el tiempo. La lámpara sólo puede estar encendida o
apagada
En la siguiente imagen podemos ver ambas señales juntas y ver las diferencias.
Programar en Arduino| 1
[https://commons.wikimedia.org/wiki/File:Señales_analogica-digital.png]
Para esto utilizamos el comando pinMode() en el bloque de setup de nuestro código, con
el cual indicaremos si el pin en cuestión es de entrada o de salida. La sintaxis de este
comando es la siguiente:
pinMode(pin, Modo);
pin: debemos indicar el número de pin que queremos configurar como entrada. Puede
ser un valor numérico, una variable o una constante.
Modo: indicamos el modo que va a tener el pin. Puede ser INPUT para entradas o
OUTPUT para salidas.
En Arduino los valores de alimentación habituales son 0V y 5V. Por lo que los valores
entre 0 a 2,5V Arduino devolverá una lectura de 0 o LOW, y si medimos un valor en,re
2,5V y 5V, devolverá un 1 o HIGH.
Supongamos que queremos emplear Arduino para conectarlo con un led en una salida,
por ejemplo, la 8, y queremos realizar un parpadeo (Blink).
Para esta tarea necesitamos utilizar el comando digitalWrite(), que nos permitirá indicar
el estado que queremos para una salida.
La sintaxis de este comando es:
digitalWrite(pin, estado);
pin: es el pin que queremos definir un estado.
estado: Es el estado que queremos definir en pin. Puede ser HIGH (1) o LOW(0)
Programar en Arduino| 2
El circuito a usar sería el siguiente:
void setup()
{
pinMode(led, OUTPUT);//Configuramos el pin 8 como salida
}
void loop()
{
digitalWrite(led, HIGH);//Ponemos el pin 8 en HIGH
delay(1000); // Esperamos 1 segundo
digitalWrite(led, LOW);//Ponemos el pin 8 en LOW
delay(1000); // Esperamos 1 segundo
}
Las entradas digitales nos permiten leer estados de sensores o circuitos que tengan
estados definidos (“0” o “1”). Debemos tener en cuenta que cuando definimos estos
pines como entradas están en estado de alta impedancia, es decir, se comportan como
resistencias de muy elevado valor (del orden de 100 Megaohms). Por tanto, por ellos
circula una intensidad despreciable. Otro dato importante para tener en cuenta es que
el comando digitalRead hace una lectura instantánea, es decir que al momento de hacer
la lectura obtenemos el valor de ese instante y lo almacenamos, pero no podemos
asegurar que ese valor sea igual cuando queramos hacer una nueva lectura.
Programar en Arduino| 3
Para poder leer el dato de un pin, debemos utilizar el comando digitalRead(), el cual
devuelve un estado “0” o”1”. Su sintaxis es:
lectura = digitalRead(pin):
lectura: variable en donde se almacena el estado de lectura del pin.
pin: pin seleccionado para hacer la lectura. Debemos estar seguros que en el bloque
setup lo definimos como entrada.
Como ejemplo, ampliaremos el circuito que realizamos con la salida digital. Lo que
buscaremos es que el led encienda cuando presionamos un pulsador y lo mantengan
prendido hasta que volvamos a presionarlo para que se apague.
int led = 8;
int pulsador = 7;
int estadoPulsador = 0;
void setup()
{
pinMode(led, OUTPUT);//Configuramos el pin 8 como salida
pinMode(pulsador, INPUT);//Configuramos el pin 7 como entrada
}
void loop()
{
estadoPulsador=digitalRead(pulsador);
if(estadoPulsador != 1){
digitalWrite(led, HIGH);
}else{
digitalWrite(led,LOW);
Programar en Arduino| 4
}
delay(1000);
}
El pulsador
Este componente funciona como una “llave sin retención”, esto implicaría que mientras
esté presionado la llave está cerrada y cuando la soltamos, su estado pasaría a abierto.
Se usa para poder interactuar con el usuario. En los circuitos esquemáticos se lo puede
reconocer con las siguientes imágenes:
[https://snappygoat.com/s/?q=bestof%3ASPDT-
Switch.svg%20Diagram%20of%20a%20SPDT%20switch%20own%202006-07-
04%20Iainf%2022%2001%203%20July%202006%20UTC%20my%20own%20work%20Relay%2
0symbols%20svg%20--
%20SVG%20electrical%20symbols%20Switch%20diagrams#e6cfbcf81c8bee9171e58749b
cd6e8b8af8fc4d1,0,82.]
Programar en Arduino| 5
[https://pixabay.com/illustrations/circuit-diagram-electronic-science-928225/]
Circuito pull-up
También se puede encontrar en bibliografía como resistencia pull-up.
Una resistencia pull-up, básicamente es una resistencia que se conecta a 5V se utiliza
para tener una referencia de “default”, en este caso sería un “1”.
El circuito es el siguiente:
[https://openclipart.org/detail/287741/pullup-resistor-circuit-schematic]
Programar en Arduino| 6
La manera de interpretar este circuito es que mientras el pulsador S1 esté sin ser
presionado, el valor que obtendremos de una lectura en INPUT, va a ser de 5V o “1”.
Cuando presionemos S1, el valor que obtendremos en la lectura de INPUT es GND o “0”.
De esta manera resolvemos la indeterminación que se produce si sólo conectamos el
pulsador S1 y queremos hacer una lectura de INPUT cuando no esté presionado.
Pull-up interno
Tal como vimos en la explicación anterior, el microcontrolador de la placa Arduino posee
un circuito de pull-up interno, el cual nos permite tener el circuito sin necesidad de
tenerlo físicamente.
En realidad, tenemos una tercera que es INPUT_PULLUP, esta configuración indica que
el pin es de entrada y que queremos hacer uso del pull-up interno que posee el
microcontrolador.
La sintaxis es:
pinMode(pin, INPUT_PULLUP);
Resistencia pull-down
Semejante a lo explicado anteriormente, la resistencia de pull-down nos permite fijar
nuestro valor de default a “0” y de esta manera evitar la indeterminación. A diferencia
del pull-up, no tenemos un circuito de pull-down interno dentro del microcontrolador,
por lo que sí o sí debe estar presente físicamente que queremos hacer uso de este.
El circuito de pull-down es el siguiente:
Programar en Arduino| 7
[https://commons.wikimedia.org/wiki/File:Pullup_Pulldown_resistor.svg]
Programar en Arduino| 8