Librería Eficiente de Puerto I/O de 8 Bits para Arduino – Expande el Control Digital
Componentes y materiales
| Arduino UNO | ×1 |
| LED rojo 5 mm | ×1 |
| Potenciómetro monoturno 10 kΩ | ×1 |
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
Librería Arduino para puerto I/O de 8 bits
Sabemos que Arduino usa digitalWrite() para salida digital y digitalRead() para entrada digital, pero estas funciones operan sobre un solo pin a la vez. Si quieres interfazar un dispositivo de 8 bits (display de 7 segmentos, interruptores DIP, DAC) necesitas enviar el byte bit a bit a 8 pines distintos. Por ejemplo, para enviar 0x37 (0011 0111) debes llamar a digitalWrite() ocho veces.
Para resolver esto presento la librería puerto I/O de 8 bits (8-bit IO Port). Permite enviar o recibir directamente 8 bits de datos usando cualquier grupo de 8 pines de Arduino configurados como un puerto combinado. Solo tienes que seleccionar 8 pines y definir su dirección: 'O' para salida o 'I' para entrada.
La librería tiene solo 5 funciones: dos constructores para crear objetos puerto, una para enviar 8 bits, otra para leer 8 bits y una para cambiar la dirección I/O en tiempo de ejecución.
Funciones principales
- IO_Port_8bit(pin1...pin8, dir) – Constructor con dirección fija (
'O'salida,'I'entrada). El puerto no puede cambiar de dirección. - IO_Port_8bit(pin1...pin8) – Constructor sin dirección inicial. Permite cambiar la dirección en tiempo de ejecución con
set_IO_direction(). - set_IO_direction(char dir) – Define dirección:
'I'entrada,'O'salida. Muestra error en monitor serie si no se especifica. - send_8bit_data(int byt) – Envía 8 bits (0-255) a los pines configurados. Error si >255.
- get_8bit_data() – Lee 8 bits de los pines configurados y devuelve un entero (0-255).
Ejemplos
Ejemplo 1: Parpadear 8 LEDs alternadamente a 1 Hz
#include <IO_Port_8bit.h>
IO_Port_8bit myport(2, 3, 4, 5, 6, 7, 8, 9, 'O'); // puerto salida
void setup() {}
void loop() {
myport.send_8bit_data(85); // 01010101 - LEDs impares
delay(500);
myport.send_8bit_data(170); // 10101010 - LEDs pares
delay(500);
}
Ejemplo 2: Mostrar cuenta binaria 0-F en LEDs
#include <IO_Port_8bit.h>
IO_Port_8bit my8bitport(2, 3, 4, 5, 6, 7, 8, 9);
void setup() {
my8bitport.set_IO_direction('O');
}
void loop() {
for (int i = 0; i < 16; i++) {
my8bitport.send_8bit_data(i);
delay(200);
}
}
Ejemplo 3: Nivel de voltaje analógico en barra de 8 LEDs
#include <IO_Port_8bit.h>
IO_Port_8bit myport(2, 3, 4, 5, 6, 7, 8, 9, 'O');
void setup() {
myport.send_8bit_data(255); delay(500);
myport.send_8bit_data(0);
}
void loop() {
int level = analogRead(A0);
level = map(level, 0, 1023, 0, 80);
if (level > 70) myport.send_8bit_data(255);
else if (level > 60) myport.send_8bit_data(127);
else if (level > 50) myport.send_8bit_data(63);
else if (level > 40) myport.send_8bit_data(31);
else if (level > 30) myport.send_8bit_data(15);
else if (level > 20) myport.send_8bit_data(7);
else if (level > 10) myport.send_8bit_data(3);
else if (level > 0) myport.send_8bit_data(1);
else myport.send_8bit_data(0);
}
Ejemplo 4: Leer 8 bits de interruptores DIP y mostrar en monitor serie
#include <IO_Port_8bit.h>
IO_Port_8bit myport(2, 3, 4, 5, 6, 7, 8, 9);
void setup() {
Serial.begin(9600);
myport.set_IO_direction('I');
Serial.println("Test puerto entrada 8-bit");
}
void loop() {
int input_byt = myport.get_8bit_data();
Serial.print("entrada = ");
Serial.println(input_byt);
delay(1000);
}
Código
La librería completa (archivos .h y .cpp) está disponible para descarga. Crea puertos de 8 bits a partir de pines de Arduino y envía/recibe datos digitales de 8 bits directamente.
Esquemáticos

El puerto I/O envía o recibe datos de 8 bits directamente desde diferentes pines.
Proceso de manufactura
- Panel de control para Flight Simulator 2020 con Arduino Nano: Pantallas LCD y CDI
- Panel de interruptores y LEDs para Microsoft Flight Simulator 2020 con Arduino
- Sistema inteligente de monitorización de temperatura para escuelas: preciso, en tiempo real y seguro
- Teclado Prototipo de 64 Teclas con Arduino: Matriz con Registros de Desplazamiento
- Crea una Zona Segura con Arduino para Desbloquear Android, iOS y Windows 10
- Pantalla TFT Shield de Alto Rendimiento 2.8” para Arduino Nano – Display SPI 320×240
- Sistema DIY de Control de Cucarachas con Arduino – Construcción por Menos de $30
- Circuito de entrada analógica aislada para Arduino
- Controlador de Respiración Arduino Asequible con Integración USB-MIDI
- Control Experto de Motores DC: Consejos y Trucos con Controlador PID
- Kit de Robot de Navegación Interior Inteligente para Proyectos Arduino