Entradas y salidas digitales en Arduino


Los pines de entrada y salida.

En la lecci贸n sobre el pinout de la placa arduino, hablamos de GPIO: del ingl茅s. General Purpose Input-Output, E / S de prop贸sito general. Ahora tenemos que ocuparnos de conceptos como pin y puerto. Un pin es una pata espec铆fica del microcontrolador, que tiene su propio n煤mero, mediante el cual puede referirse a 茅l. Un puerto es una colecci贸n de pines. El microcontrolador est谩 dise帽ado para proporcionar un buen rendimiento, por lo tanto, por ejemplo, los pines se combinan en puertos, generalmente hasta 8 pines en un puerto (porque hay 8 bits en un byte). Trabajando con el microcontrolador directamente, podemos en una acci贸n, establece el estado de todos los pines de un puerto. Es muy r谩pido. Nuestras lecciones son b谩sicas, por eso hoy hablaremos de las funciones para trabajar con pines que nos ofrece Arduino. Pero primero, averig眉emos cu谩les de los pines son digitales. Echemos un vistazo al pinout de la placa Nano:

Pinout arduino nano-1
Pinout arduino nano-1

Todos los pines denominados PD * , PC * , PB * son GPIO. DC y B indican el n煤mero de puerto al que pertenece el pin. En la placa, los pines o patitas, est谩n firmados de manera diferente, en orden. As铆, podemos ver que todos los pines de D0-D13 y A0-A5 son GPIO, es decir, E / S digitales. Mucha gente llama anal贸gicos a los pines A0 – A7, en algunos pines no oficiales est谩n firmados directamente como pines anal贸gicos, y esto es confuso para los principiantes porque A0-A5 son los mismos pines digitales que D0-D13. Pero estos pines tienen una funci贸n adicional en forma de lectura de una se帽al anal贸gica. Hablaremos de esto en la pr贸xima lecci贸n. Pero los pines A6 y A7 son exactamente anal贸gicos, porque solo tienen una salida al ADC, estos pines no son GPIO y las funciones para pines digitales no se pueden usar con ellos. Si miras el pinout del Arduino UNO, entonces no encontrar谩s los pines A6 y A7 all铆 .


Numeraci贸n de pines.

Los pines est谩n numerados en la placa como pines D * digitales y pines A * anal贸gicos. Nos referiremos a los pines digitales simplemente por su n煤mero, es decir, D3 es solo 3. Los pines anal贸gicos son un poco m谩s complicados:

  • Puede contener la letra A ( A3 , A5 )
  • Puede usar un d铆gito en orden despu茅s de los digitales, por ejemplo, para Nano, el 煤ltimo digital es D13, el siguiente 芦anal贸gico禄 A0 tiene el n煤mero de pin 14, y por ejemplo A5 tiene el n煤mero de pin 19, por lo que tambi茅n puede referirse a 茅l.

Modos de pin.

El pin digital puede estar funcionando de dos modos, entrada o salida. En el modo de entrada, el pin puede leer el voltaje de 0 o el voltaje de Vcc del Mc, 5V, y en el modo de salida, puede generar el mismo voltaje. El modo de funcionamiento se selecciona mediante la funci贸n pinMode ( pin, modeo ) d贸nde pin es el n煤mero de pin, y mode es el modo de funcionamiento:

  • mode – modo operativo
    • INPUT- Entrada
    • OUTPUT- salida
    • INPUT_PULLUP – entrada puesta a 5V de la fuente de alimentaci贸n. (pullup)

Si todo est谩 claro con la entrada / salida, averig眉茅moslo con PULLUP. En el modo de entrada, si el pin del microcontrolador no est谩 conectado en ning煤n lugar, capta todo tipo de interferencias del aire, obteniendo un valor casi aleatorio. Para establecer el pin en el 芦estado predeterminado禄, utilizamos una resistencia de tracci贸n a tierra o alimentaci贸n. Aqu铆 est谩 el modo INPUT_PULLUP, el microcontrolador incluye unas resistencias de conexi贸n a la fuente de alimentaci贸n o a GND. Hablar茅 de esto con m谩s detalle, con diagramas y ejemplos.

Por defecto, todos los pines est谩n configurados como entradas (INPUT)

Usando la informaci贸n del p谩rrafo anterior y la lecci贸n sobre ciclos, puede cambiar el modo de funcionamiento, por ejemplo, para todos los pines de D2 a A5:

for (byte i = 2; i <= 19; i++) {   // de 2 a 19 (D2-D13, A0-A5)   
  pinMode(i, OUTPUT);              // salida
}

Salida de se帽al digital.

Un pin digital en modo de salida (SALIDA) puede generar una se帽al digital, es decir dar tensi贸n. Dado que el t茅rmino 芦digital禄 generalmente se asocia con dos estados, 0 y 1 , el pin digital puede emitir 0 o 1, m谩s precisamente: una se帽al de nivel bajo o alto. La se帽al de bajo nivel es de 0 voltios, en t茅rminos generales, en este estado, el pin est谩 conectado al GND del microcontrolador. La se帽al de alto nivel conecta el pin al VCC del microcontrolador, es decir, a la fuente de alimentaci贸n. Si recuerdas la lecci贸n sobre el alimentaci贸n de arduino, se dar谩 cuenta de que la se帽al alta en el pin digital variar谩 dependiendo de c贸mo se alimente el Arduino. Cuando se alimenta desde una fuente de 5V, el pin ser谩 de 5V, cuando se alimenta desde USB con una p茅rdida en el diodo protector, obtendremos aproximadamente 4.7 Voltios en el pin digital en el modo de salida de se帽al alta.

El punto m谩s importante con respecto a los pines digitales de arduino: un microcontrolador es un dispositivo l贸gico que se crea para controlar otros dispositivos mediante se帽ales l贸gicas (digitales).聽Con la palabra l贸gica, me refiero a聽se帽al, no a potencia, es decir, es imposible alimentar algo desde el microcontrolador, con raras excepciones.聽En la imagen de pines de arriba puede encontrar la inscripci贸n 鈥溌M谩ximo absoluto por pin 40mA, recomendado 20mA聽鈥.聽Esto significa que se puede quitar el m谩ximo del pin de 40 miliamperios, y no se recomienda m谩s de 20 miliamperios.聽Cr茅ame, esto es mucho para un microcontrolador.聽En otros microcontroladores, el l铆mite de corriente por pin puede ser de 5 a 10 mA.聽Tambi茅n hay una聽limitaci贸n聽general聽en la corriente de los pines digitales – 200 mA: 鈥溌Absolute MAX 200mA para todo el chip鈥.聽Esta informaci贸n se puede encontrar en cualquier fuente oficial de informaci贸n sobre Arduino y el microcontrolador en general, incluida la hoja de datos del microcontrolador.

驴Qu茅 sucede si quitas m谩s del pin de lo que puede dar? Es muy simple: se romper谩. 驴Qu茅 sucede si absorbe m谩s de varios pines de lo que puede dar el microcontrolador en su conjunto? As铆 es, el microcontrolador se quemar谩. Por lo tanto, nada m谩s potente que un LED y un peque帽o tweeter se puede conectar al microcontrolador. No se pueden alimentar motores, bombillas, calentadores, potentes m贸dulos de radio o cualquier otra cosa desde pines digitales. Los pines digitales se utilizan para enviar comandos a otros dispositivos como rel茅s / transistores para conmutar cargas. Pero hablaremos de esto por separado.

Ahora volvamos al tema de suministrar una se帽al digital: para esto tenemos una funci贸n digitalWrite ( pin, valor ):

  • Pin- pin digital Mc marcado en placa como D. Adem谩s, por ejemplo, para NANO, estos son los pines A0-A5
  • Valor – nivel de se帽al: ALTO para alto, BAJO para bajo. Tambi茅n puedes usar los n煤meros 0 y 1.

Para trabajar en el modo de salida, el pin debe cambiarse al estado de SALIDA usando pinMode (), de lo contrario no dar谩 un voltaje que pueda medirse o alimentar algo de 茅l (lea a continuaci贸n por qu茅).

Para leer el nivel de se帽al en el pin, use la funci贸n digitalRead ( pin ), donde pin es el n煤mero de pin seg煤n su n煤mero en el tablero. Estos son los pines marcados como D, as铆 como los pines A0-A5 para Arduino Nano / Uno / Pro Mini. Esta funci贸n devuelve 0 si la se帽al es baja y 1 si es alta. Ejemplo simple:

void setup() {
  pinMode(10, OUTPUT);  // D10 salida
  pinMode(A3, OUTPUT);  // A3 salida
  pinMode(19, OUTPUT);  // A5 salida (Nano/UNO)
  digitalWrite(10, HIGH); // se帽al alta en D10
  digitalWrite(A3, 1);    // se帽al alta A3
  digitalWrite(19, 1);    // se帽al alta A5
}
void loop() {}

Un pin configurado como SALIDA es BAJO por defecto.

Otro punto interesante: en versiones anteriores del Arduino IDE no hab铆a opci贸n para el modo de operaci贸n INPUT_PULLUP, y la funci贸n se hacia a mano en software. Recuerda que estas dos opciones son equivalentes, puedes encontrar la segunda en bocetos antiguos de Internet, no te alarmes. Ambas opciones hacen que el pin se active en modo de entrada pullup.

// version moderna
pinMode(10, INPUT_PULLUP);  // D10 como entrada de pullup
//version antigua
pinMode(10, INPUT);     // D10 entrada
digitalWrite(10, HIGH); // "pullup" D10

Lectura de se帽al digital.

El pin digital puede 芦medir禄 el voltaje, pero solo puede informar su ausencia (se帽al de bajo nivel, LOW) o presencia (se帽al de alto nivel, HIGH), la ausencia de voltaje se considera la brecha de 0 a ~ 2.1V. En consecuencia, el microcontrolador considera de ~ 2.1V a VCC (hasta 5V) como una se帽al de alto nivel. Por lo tanto, el microcontrolador puede trabajar f谩cilmente con dispositivos l贸gicos que le env铆an una se帽al alta con un voltaje de 3.3V, recibir谩 esta se帽al como ALTA.

No puede aplicar un voltaje m谩s alto que el voltaje de suministro del microcontrolador al pin digital (ni a cualquier otro pin).

Para leer el nivel de se帽al en el pin, use la funci贸n digitalRead ( pin ), donde pin es el n煤mero de pin seg煤n la firma en la board. Estos son los pines firmados como D, as铆 como los pines A0-A5  para Arduino Nano / Uno / Pro Mini. Esta funci贸n devuelve 0 si la se帽al es baja y 1 si es alta. Ejemplo simple:

void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.println(digitalRead(5));
}

Este c贸digo enviar谩 la se帽al en el pin D5 al puerto serie. Si lo conectamos con un cable a VCC, obtenemos 1, si a GND, obtenemos 0.


Deja un comentario