En el mundo de la electrónica y la programación con Arduino, entender los pines de tu placa es el primer paso para dar vida a tus ideas. Con la llegada de la nueva Arduino UNO Q, tenemos una evolución emocionante que difiere de la versión UNO Rev3. En esta clase, exploraremos a fondo los pines digitales y PWM, tanto para la clásica UNO como para esta potente nueva versión.

Tanto en la UNO Rev3, como en la UNO Q, los pines digitales son la base de la interacción con el mundo exterior. Funcionan como interruptores que pueden estar en dos estados: HIGH (5V) o LOW (0V).

Entre las características más destacadas de los pines de la placa UNO, podemos establecer las siguientes características:

● Cantidad: La placa UNO clásica y la UNO Q cuentan con 14 pines digitales, etiquetados del D0 al D13.

● Configuración: Cada pin puede ser configurado como ENTRADA (INPUT) o SALIDA (OUTPUT) usando la función pinMode() en tu sketch.

● Voltaje de Operación: Trabajan a 5V, lo que es compatible con la mayoría de los sensores y módulos del mercado.

● Límite de Corriente: Es crucial respetar los límites eléctricos para no dañar la placa. Cada pin puede suministrar o recibir un máximo de 40 mA, pero se recomienda no superar los 20 mA para un funcionamiento seguro y prolongado.

Pines especiales.

Algunos pines digitales tienen funcionalidades adicionales que los hacen únicos, como los que te muestro a continuación.

D0 (RX) y D1 (TX).
Son los pines para la comunicación Serial (UART). Se usan para recibir (RX) y transmitir (TX) datos, y son los que se utilizan para cargar tus programas desde el ordenador. Por eso, es recomendable no conectar otros dispositivos a estos pines mientras se programa para evitar conflictos.

Conexión de dos placas Arduino UNO.
Vamos a realizar una pequeña práctica conectando dos placas, una UNO Rev3 y otra UNO Q. Para ello utilizaremos este montaje:

cirucito para montar dos UNOs en serie

Montaje de dos arduino UNO en serie.

En esta práctica vamos a usar Arduino UNO Q y una Arduino UNO rev3 para conectarlas a los puertos RX y TX. Es importante que sigas el esquema de conexión para evitar la destrucción de la placa UNO Q, ya que los pines de salida de la misma tienen por defecto una analogReference() de 3.3V (es decir que sus pines salen con 3.3V), mientras que la UNO Rev3, tiene una tensión de los pines de 5V.

De ahí que cuando se conectan, ambas placas, el puerto TX de la UNO Rev3 se conecta al puerto RX de la otra UNO Q mediante una resistencia de 2K2Ω, con el fin de evitar la rotura de la placa Q (cable rojo).

El puerto RX de la UNO Q, se conecta al puerto TX de la UNO Rev3 directamente (cable azul).

Las masas (GND), de ambas placas se conectan entre si.

Este es el código que vas a usar en tu Arduino UNO rev3:

/* CÓDIGO PARA ARDUINO UNO R3 (EMISOR - 5V) Envía comandos por el puerto Serial (pines D0/D1) para controlar el LED de la UNO Q. */ // the setup routine runs once when you press reset: void setup() { Serial.begin(9600); // Inicia comunicación UART a 9600 baudios delay(100); // Pequeña pausa para estabilizar Serial.println("UNO R3 Emisor iniciado"); // Mensaje de inicio } // the loop routine runs over and over again forever: void loop() { // Envía el carácter '1' para ENCENDER el LED Serial.write('1'); delay(2000); // Espera 2 segundos // Envía el carácter '0' para APAGAR el LED Serial.write('0'); delay(2000); // Espera 2 segundos } Arduino

Este es el código que vas a usar para tu Arduino UNO Q:

/* CÓDIGO PARA ARDUINO UNO Q (RECEPTOR - 3.3V) Recibe comandos por Serial1 (pines D0/D1) y controla el LED integrado (LED_BUILTIN) */ const int ledPin = LED_BUILTIN; // Pin del LED integrado en UNO Q // the setup routine runs once when you press reset: void setup() { // Configura el LED como salida pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // Inicia apagado // ¡IMPORTANTE! En UNO Q, los pines D0/D1 se llaman Serial1 Serial1.begin(9600); // Inicia comunicación en pines D0/D1 // Mensaje de depuración (se verá en el Monitor Serial por USB) Serial.begin(9600); Serial.println("UNO Q Receptor iniciado"); Serial.println("Esperando comandos..."); } // the loop routine runs over and over again forever: void loop() { // Verifica si hay datos disponibles en el puerto Serial1 (D0/D1) if (Serial1.available() > 0) { // Lee el carácter entrante char comando = Serial1.read(); // Procesa el comando recibido if (comando == '1') { digitalWrite(ledPin, HIGH); // ENCIENDE el LED Serial.println("COMANDO RECIBIDO: '1' → LED ENCENDIDO"); } else if (comando == '0') { digitalWrite(ledPin, LOW); // APAGA el LED Serial.println("COMANDO RECIBIDO: '0' → LED APAGADO"); } else { // Si recibe otro carácter, lo muestra pero no hace nada Serial.print("Carácter no reconocido: '"); Serial.print(comando); Serial.println("'"); } } } Arduino

D2 y D3
.Son los pines de Interrupción Externa. Permiten que el microcontrolador reaccione instantáneamente a un cambio en estos pines, como pulsar un botón o el giro de un encoder, sin necesidad de estar revisando constantemente su estado.

D10 (SS), D11 (MOSI), D12 (MISO), D13 (SCK).
Son los pines del bus de comunicación SPI, muy útil para conectar dispositivos que necesitan alta velocidad de transferencia de datos, como pantallas o tarjetas SD.

Pines digitales como entrada y salida.

En la placa Arduino UNO aparecen, en un lateral, las conexiones denominadas DIGITAL (PWM ~), cuyo valor puede tomar dos valores de tensión que se corresponde con activado o desactivado. Estos dos valores se identifican en el software como true o false para activado o desactivado.

Pines digitales en placa Arduino UNO

Pines digitales y PWM en Arduino UNO.

Aunque en realidad no corresponden a dos únicos valores de tensión, si es verdad que se toman como referencia el 0V para el valor desactivado o false y +5V para el valor de true.

Los pines se pueden configurar como entrada o salida y eso hay que indicárselo a Arduino UNO, ya que primero se han de configurar el estado de los pines y después usarlo.

Por defecto se encuentran definidos como SALIDAS pero aun así nos acostumbraremos a definir los pasos aunque sean de entrada en nuestros proyectos. Recuerda que para utilizar un puerto digital como salida o como entrada se utilizaba la instrucción pinMode mencionada anteriormente de la forma siguiente:

pinMode(número de pin, modo);
pinMode (13, INPUT); //Pin 13 configurado de entrada.
pinMode (13, OUTPUT); //Pin 13 configurado de salida.

Por norma general el uso de los puertos se declarará en el setup() del programa Scketch. Una vez configurado el puerto como entrada o salida, se procede a utilizarlo mediante la instrucción digitalWrite para activarlo o desactivarlo mediante el software:

digitalWrite (número de pin, valor);
digitalWrite (13, HIGH); //Pin 13 activado
digitalWrite (13, LOW); //Pin 13 desactivado

Esto se suele hacer en el loop() para que se repita indefinidamente la acción.

Además, también se puede leer el estado del puerto digital si éste está configurado como entrada con la instrucción digitalRead. Para ello se define una variable de tipo int, cuyo valor es HIGH si tiene presencia de tensión o LOW si no tiene presencia de tensión (entrada activa y desactivada respectivamente). La propia función se puede utilizar en una condición de estructuras de control para mayor control de la lectura del puerto.

digitalRead (número del pin);
int entrada = 0; //Defino la variable.
Entrada = digitalRead(13); //Lee el estado del pin 13.

En realidad al configurar el pin digital como salida o como entrada, lo que se está haciendo es configurar el pin como baja impedancia (salida), o alta impedancia (entrada), de tal forma que cuando se configura como alta impedancia (entrada), no es capaz de entregar corriente; mientras que si se configura como baja impedancia (salida), proporciona valores elevados de corriente.

Arduino presenta limitaciones estructurales de corriente con un máximo de 50mA por puerto, aunque no es recomendable superar los 20mA con el fin de proteger la placa. Así que no es recomendable usar salidas directamente a los consumibles (salvo diodos LED por su bajo consumo), sin que se usen otros elementos de control como transistores, relés, acopladores, etc.

Comparte este conocimiento en redes sociales