HeTPro-Tutoriales

Creamos tutoriales de electrónica digital para estudiantes, profesionistasy hoobistas de la electrónica, robótica o mecatronica. Tenemos tutoriales de Arduino, QT-Creator, OpenCV, Electrónica analógica y digital, entre otros temas.

Arduino pinMode, sintaxis y ejemplos

La función de Arduino pinMode permite configurar a cada pin, de forma individual, como entrada o como salida. Aquí te explicamos su uso con ejemplos.También está función es usada en conjunto con digitalWrite y digitalRead. Por lo general, pinMode es usado sólo en la función setup().

Sintaxis:

pinMode(#PIN, Modo);

Parámetros de entrada:

  • #PIN. Es el numero del pin que se quiere configurar, este numero esta escrito en la tarjeta Arduino que se usara.
  • Modo. Puede ser tres opciones:
    • INPUT.  Configura al pin como entrada.
    • INPUT_PULLUP. Se le agrega al pin una resistencia de pull-up interna y se configura como entrada.
    • OUTPUT. El pin se configura como salida digital.

Parámetros de salida:

  • Ninguno

Funciones complementarias:

La función Arduino pinMode usada para las tarjetas, es indispensable para cualquier aplicación donde se requiere usar entradas o salidas digitales. Previamente, la historia de está función comienza con la forma en la que se configuran a las entradas y salidas usando el lenguaje C para un microcontrolador AVR. Esta arquitectura es la que utiliza un Arduino UNO R3. Originalmente la función de configuración esta controlada por el registro de propósito específico llamado DDRX, donde la X representa el puerto a configurar. Por ejemplo, si tomamos en cuanta a un Arduino UNo, cuyo micro es el ATMEGA328P, vemos que los pines del 0 al 13 están conectados en realidad a los puertos D, C y B. Finalmente, la Figura-1, muestra las banderas de los registros B, C y D conectadas a cada pin.

En otras palabras, para controlar la configuración de entrada/salida la función de Arduino pinMode escribe y configura a los registros DDRB, DDRC y DDRD. Por ejemplo, la bandera 0 del registro DDRB configura directamente al pin 8 para una tarjeta Arduino UNO R3. Entonces, si esta bandera vale ‘1’ el pin se configura como salida. Por el contrario si vale ‘0’ se configura como entrada.

Arduino pinMode pinout
Figura-1. Puerto B, C y D conectados a los pines de Arduino. Se muestran las banderas asociadas a cada pin.

Arduino pinMode Códigos de ejemplo

Por ejemplo, el siguiente código permitirá configurar al pin D0 como salida. Este pin corresponde al pin 8 de una tarjeta Arduino UNO.

DDRB = (DDRB & 0b11111110 ) | 0x01 ;

El código anterior equivale a la función de pinMode:

pinMode(8,OUTPUT);

Por el contrario, las siguientes instrucciones equivalentes, configurarían al mismo pin como entrada.

DDRB = (DDRB & 0b11111110 ) ;
pinMode(8,INPUT);

Las siguientes tres instrucciones son equivalentes para configurar al pin 13 como salida. Las operaciones lógicas que se aplican al registro DDRB son enmascaramientos  (& – operación lógica AND) para no afectar a las banderas de los otros pines y sumas logias (|) para configurar a la bandera como salida (1) o como entrada (0).

//DDRB = (DDRB & 0b11011111 ) | 0b00100000 ;
DDRB = (DDRB & 0xDF) | 0x20 ;
//pinMode(13,OUTPUT);

Ejemplo de blink con Arduino pinMode y con DDRB

Entonces usar al registro DDRB es una alternativa a la función pinMode();.

Fuentes:

[1] – https://rua.ua.es/dspace/bitstream/10045/11833/1/arduino.pdf

Autor: Dr. Rubén E-Marmolejo.

Profesor Universidad de Guadalajara, México

4 comentarios en «Arduino pinMode, sintaxis y ejemplos»

  1. Hola, podrian ayudarme a entender este codigo? es decir, por que usa una salida con un led y la declara como entrada?

    pinMode(inputLED_a, INPUT);
    digitalWrite(inputLED_a, LOW);
    pinMode(inputLED_b, OUTPUT);
    digitalWrite(inputLED_b, HIGH);
    delay(delayTime);

    pinMode(inputLED_a, INPUT);
    digitalWrite(inputLED_a, LOW);
    pinMode(inputLED_b, OUTPUT);
    digitalWrite(inputLED_b, LOW);
    pinMode(inputLED_c, OUTPUT);
    digitalWrite(inputLED_c, HIGH);
    delay(delayTime);

    1. Podria ser un error, o podrian estar configurando las resistencias de pull-up, pull-down. Cuando un pin esta configurado como entrada y escribes un valor al puerto es como configurar las entradas con resistencias weaks. «If PORTxn is written logic one when the pin is configured as an input pin, the pull-up resistor is activated.» seccion 13.2.1 de la hoja de datos d eun arduino uno.
      https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *