Diferencia entre revisiones de «pinMode()»

De ArduWiki
Saltar a: navegación, buscar
(Vea también)
(Referencias externas)
 
(No se muestran 16 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
 
Esta función debe ser usada dentro de [[setup()]] y sirve para configurar los puertos digitales que serán usadas y el modo que puede ser INPUT (entrada) o OUTPUT (salida) o INPUT_PULLUP (entrada con resistencia pull-up interna).
 
Esta función debe ser usada dentro de [[setup()]] y sirve para configurar los puertos digitales que serán usadas y el modo que puede ser INPUT (entrada) o OUTPUT (salida) o INPUT_PULLUP (entrada con resistencia pull-up interna).
 +
 +
{{Tip|Los pines tanto analógicos como digitales de '''entrada''' no necesitan ser definidos con '''pinMode()'''.}}
  
 
== Sintaxis ==
 
== Sintaxis ==
Línea 9: Línea 11:
  
 
== Parámetros ==
 
== Parámetros ==
;pin: es el numero del pin digital a usar (0~13 + 14~19). Puedes usar [[const]] [[byte]] para de definirla.
+
;pin: es el numero del pin digital a usar (0~13 + 14~19). Puedes usar [[const]] [[byte]] para definirla.
;modo: por lo general se usa las palabras reservadas: [[INPUT]], [[OUTPUT]] o [[INPUT_PULLUP]].
+
;modo: por lo general se usa las palabras reservadas: [[INPUT / OUTPUT / INPUT_PULLUP]].
  
 
== Retorna ==
 
== Retorna ==
 
Nada.
 
Nada.
 +
 +
== Comentarios ==
 +
* Los terminales de Arduino, por defecto, están configurados como entradas, por lo tanto no es necesario definirlos en el caso de que vayan a trabajar como entradas.
 +
* Los pines configurados como INPUT (entrada) quedan, bajo el punto de vista eléctrico, como entradas en alta impedancia.
 +
* Los pines configurado como OUTPUT (salida) se dice que están en un estado de baja impedancia y pueden proporcionar 40 mA de corriente a otros dispositivos y circuitos. Esta corriente es suficiente para alimentar un LED (no olvides poner una resistencia en serie de 220 ohms o mas), pero no es lo suficiente grande como para alimentar cargas de mayor consumo como relés o motores.
 +
* Un cortocircuito en las patillas Arduino provocará una corriente elevada que puede dañar o destruir el chip ATmega.
  
 
== Advertencias ==
 
== Advertencias ==
 
En muchos ejemplos se ve que usa una variable de tipo [[int]] para definir el pin a usar. Esto es un grave error por dos motivos:
 
En muchos ejemplos se ve que usa una variable de tipo [[int]] para definir el pin a usar. Esto es un grave error por dos motivos:
# Una variable sera almacenada en memoria [[RAM]] porque se espera que su valor cambie durante la ejecución del bosquejo, pero normalmente en los pines esto nunca ocurre, por lo que es preferible usar [[const]] que es almacenada en [[flash]].
+
# Una variable sera almacenada en memoria [[SRAM]] porque se espera que su valor cambie durante la ejecución del [[boceto]], pero normalmente en los pines esto nunca ocurre, por lo que es preferible usar [[const]] que es almacenada en [[flash]].
 
# El tipo [[int]] ocupa 2 byte. Es suficiente usar el tipo [[byte]] (0~255) que solo ocupa 1 byte.
 
# El tipo [[int]] ocupa 2 byte. Es suficiente usar el tipo [[byte]] (0~255) que solo ocupa 1 byte.
  
Línea 35: Línea 43:
  
 
== Ejemplo 2 ==
 
== Ejemplo 2 ==
 +
Usamos un pin analogico como digital.
 +
 +
<syntaxhighlight lang="c++">
 +
void setup() {
 +
  pinMode(A0, OUTPUT);    //Definimos pin analógico A0 como digital. También funciona con 14.
 +
  digitalWrite(A0, HIGH);
 +
}
 +
void loop() {
 +
  //Nada
 +
}
 +
</syntaxhighlight>
 +
 +
== Ejemplo 3 ==
 
Parpadea el LED a bordo.
 
Parpadea el LED a bordo.
  
Línea 48: Línea 69:
  
 
== Vea también ==
 
== Vea también ==
* [[digitalRead()]]
+
<categorytree mode=all>Funciones pines</categorytree>
* [[digitalWrite()]]
+
 
* [[analogRead()]]
+
== Referencias externas ==
* [[analogWrite()]]
+
* [https://www.arduino.cc/reference/es/language/variables/constants/constants/ Niveles lógicos en Arduino]
* [[Programacion avanzada]]
+
* [https://playground.arduino.cc/ArduinoNotebookTraduccion/DigitalIO Playground]
 +
* [https://www.prometec.net/funciones1/ Funciones Arduino] - Prometec
 +
* [https://programarfacil.com/podcast/26-arduino-entradas-y-salidas/ Entradas y salidas] - Luis del Valle
 +
* [http://manueldelgadocrespo.blogspot.com/p/pinmode.html pinMode()] - Manuel Delgado
  
[[Category:Funciones]]
+
[[Category:Funciones pines]]

Revisión actual del 12:46 4 jul 2019

Descripción

Esta función debe ser usada dentro de setup() y sirve para configurar los puertos digitales que serán usadas y el modo que puede ser INPUT (entrada) o OUTPUT (salida) o INPUT_PULLUP (entrada con resistencia pull-up interna).

Tip: Los pines tanto analógicos como digitales de entrada no necesitan ser definidos con pinMode().


Sintaxis

pinMode(pin, modo);

Parámetros

pin
es el numero del pin digital a usar (0~13 + 14~19). Puedes usar const byte para definirla.
modo
por lo general se usa las palabras reservadas: INPUT / OUTPUT / INPUT_PULLUP.

Retorna

Nada.

Comentarios

  • Los terminales de Arduino, por defecto, están configurados como entradas, por lo tanto no es necesario definirlos en el caso de que vayan a trabajar como entradas.
  • Los pines configurados como INPUT (entrada) quedan, bajo el punto de vista eléctrico, como entradas en alta impedancia.
  • Los pines configurado como OUTPUT (salida) se dice que están en un estado de baja impedancia y pueden proporcionar 40 mA de corriente a otros dispositivos y circuitos. Esta corriente es suficiente para alimentar un LED (no olvides poner una resistencia en serie de 220 ohms o mas), pero no es lo suficiente grande como para alimentar cargas de mayor consumo como relés o motores.
  • Un cortocircuito en las patillas Arduino provocará una corriente elevada que puede dañar o destruir el chip ATmega.

Advertencias

En muchos ejemplos se ve que usa una variable de tipo int para definir el pin a usar. Esto es un grave error por dos motivos:

  1. Una variable sera almacenada en memoria SRAM porque se espera que su valor cambie durante la ejecución del boceto, pero normalmente en los pines esto nunca ocurre, por lo que es preferible usar const que es almacenada en flash.
  2. El tipo int ocupa 2 byte. Es suficiente usar el tipo byte (0~255) que solo ocupa 1 byte.

Ejemplo 1

Aqui definimos los pines digitales 3, 4 y 5 como salidas.

void setup(){
   for (byte n=3; n<=5; n++){
      pinMode(n, OUTPUT);
   }
}
void loop(){
   //nada
}

Ejemplo 2

Usamos un pin analogico como digital.

void setup() {
   pinMode(A0, OUTPUT);    //Definimos pin analógico A0 como digital. También funciona con 14.
   digitalWrite(A0, HIGH);
}
void loop() {
   //Nada
}

Ejemplo 3

Parpadea el LED a bordo.

void setup() {
   DDRB = DDRB | 32;    //Configura el pin digital 13 como OUTPUT, no altera el resto. 32=B00100000;
}
void loop() {
   PORTB = PORTB ^ 32;  //Invertido estado del bit 5 (pin digital 13), no altera el resto.
   delay(500);
}

Vea también


Referencias externas