¿Cómo puedo controlar un componente con digitalWrite y digitalRead?

Escribir o leer pines digitales te permitirá controlar tus componentes y leer sus estados.

Esto es lo que veremos en este curso:

  • Configurar el pin como entrada o salida (pinMode)
  • Controlar tu componente (digitalWrite)
  • Leer el voltaje a través de un sensor (digitalRead)

Aquí están los pines digitales:

¿Qué significan las "~"?

Como puedes ver, algunos pines tienen una onda (“~”). La onda indica que los pines son controlables con pwm (Pulse width modulation). Estos pines pueden ser controlados de dos maneras: con digitalWrite o analogWrite.

El digitalWrite permite controlar el pin en estado alto o bajo, mientras que el analogWrite permite variar la tensión, por ejemplo para encender un LED a la mitad de su potencia.

Los pines sin onda (“~”) sólo pueden controlarse mediante digitalWrite.

¿Cuál es la diferencia entre analógico y digital?

Una señal digital es una tensión que puede tomar dos valores: el estado alto (HIGH) o el estado bajo (LOW). HIGH corresponde a 5V y LOW a 0V. Esta señal es muy útil para detectar el estado de un pulsador, o para encender un LED.

Sin embargo, si quieres encender tu LED con la mitad de su potencia, necesitarás una señal analógica.


Ésta puede tomar un número infinito de valores entre 0V y 5V. Esta señal será útil para medir y enviar valores mucho más precisos, como 0,45V en lugar de 0V y 5V como en una señal digital.

Para convertir la señal se dispone de un conversor analógico-digital.

pinMode ()

PinMode es una función que indica a la placa Arduino si el pin será una entrada o una salida. En otras palabras, si la placa Arduino debe esperar valores de un sensor, por ejemplo, o controlar un componente.

El pinMode tiene por tanto dos parámetros, el nombre del pin y el modo, INPUT o OUTPUT :

pinMode(pines, moda);

Los pines de la placa Arduino pueden ir de 0 a 13 (como se muestra en el diagrama). Sin embargo, los pines 0 y 1 se utilizan para el enlace UART (TX y RX).

El modo es INPUT para una entrada u OUPUT para una salida.

Aquí se muestra un ejemplo del pin 10 inicializado como salida:

pinMode(10, OUTPUT);

Este es un ejemplo de pin 5 inicializado como entrada:

pinMode(5, INPUT);

digitalWrite ()

Si pinMode se ha establecido en OUTPUT, entonces necesitará digitalWrite para controlar su componente. La función digitalWrite le permite suministrar tensión (3,3V o 5V) a su componente, o 0V para apagarlo.

La función digitalWrite tiene en cuenta dos parámetros: el pin y el valor entre HIGH y LOW:

digitalWrite(pines, valor);

Aquí podemos ver que la función tiene dos parámetros:

  • pin: 2 a 13
  • valor: HIGH o LOW

Un ejemplo de un componente encendido en el pin 7:

digitalWrite(7, HIGH);

Otro ejemplo de componente desconectado en la pines 10:

digitalWrite(10, LOW);

Si enciendes tu LED con digitalWrite, estará encendido con el modo HIGH o apagado en caso contrario. Si quieres valores intermedios, como por ejemplo que sólo brille la mitad, te recomendamos que utilices analogWrite.

digitalRead ()

digitalRead se utiliza para escuchar y leer información procedente de un componente externo. Un ejemplo de uso sería saber si se ha pulsado un botón, por ejemplo.

digitalRead sólo funciona si su pin ha sido configurado como entrada con pinMode.

El digitalRead toma como parámetro el pin al que está conectado el componente que se quiere leer:

digitalRead(pines);

El digitalRead sólo puede devolver dos valores posibles: HIGH o LOW.

He aquí un ejemplo en el que se escucha el pin 8:

digitalRead(8);

Si quieres valores más precisos que HIGH o LOW, tendrás que utilizar AnalogRead.