Diferencia entre revisiones de «pinMode()»
De ArduWiki
(→Parámetros) |
(→Referencias externas) |
||
(No se muestran 8 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 23: | Línea 25: | ||
== 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 [[ | + | # 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 67: | Línea 69: | ||
== Vea también == | == Vea también == | ||
− | + | <categorytree mode=all>Funciones pines</categorytree> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | == Referencias == | + | == Referencias externas == |
* [https://www.arduino.cc/reference/es/language/variables/constants/constants/ Niveles lógicos en Arduino] | * [https://www.arduino.cc/reference/es/language/variables/constants/constants/ Niveles lógicos en Arduino] | ||
* [https://playground.arduino.cc/ArduinoNotebookTraduccion/DigitalIO Playground] | * [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 16:46 4 jul 2019
Contenido
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:
- 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.
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
- Niveles lógicos en Arduino
- Playground
- Funciones Arduino - Prometec
- Entradas y salidas - Luis del Valle
- pinMode() - Manuel Delgado