馃敡 Comparador de 2 N煤meros de 2 Bits

Arduino Mega - Circuitos Combinacionales

Nivel: Intermedio

馃幆 Objetivo del Ejercicio

Implementar un comparador digital de 2 bits usando Arduino Mega que compare dos n煤meros binarios de 2 bits (A y B) y encienda LEDs indicadores seg煤n el resultado de la comparaci贸n.

馃搵 Enunciado del Ejercicio

Descripci贸n

Un comparador es un circuito combinacional que compara dos n煤meros binarios y produce una salida que indica la relaci贸n entre ellos (mayor, igual o menor).

Hardware Requerido

  • Arduino Mega 2560
  • 4 pulsadores (push buttons)
  • 3 LEDs (preferiblemente de diferentes colores)
  • Resistencias de pull-up (10k惟)
  • Resistencias limitadoras para LEDs (220惟)
  • Cables de conexi贸n
  • Protoboard

Configuraci贸n de Pines

Entradas (Pulsadores)

A1 (bit m谩s significativo) Pin 22
A0 (bit menos significativo) Pin 24
B1 (bit m谩s significativo) Pin 26
B0 (bit menos significativo) Pin 28

Salidas (LEDs)

A < B (LED rojo) Pin 5
A = B (LED amarillo) Pin 6
A > B (LED verde) Pin 7

馃敘 Tabla de Verdad

El comparador debe funcionar seg煤n la siguiente tabla de verdad:

A1 A0 B1 B0 Decimal A Decimal B Resultado LED
000000A = BPin 6
000101A < BPin 5
001002A < BPin 5
001103A < BPin 5
010010A > BPin 7
010111A = BPin 6
011012A < BPin 5
011113A < BPin 5
100020A > BPin 7
100121A > BPin 7
101022A = BPin 6
101123A < BPin 5
110030A > BPin 7
110131A > BPin 7
111032A > BPin 7
111133A = BPin 6

馃摑 Requisitos del Ejercicio

馃挕 Pistas para la Implementaci贸n

馃攳 Pista 1: Configuraci贸n de Pines

Configura los pines 22, 24, 26, 28 como entradas con pull-up interno, y los pines 5, 6, 7 como salidas.

馃攳 Pista 2: Conversi贸n a Decimal

Convierte los valores binarios a decimal para facilitar la comparaci贸n: A = A1*2 + A0, B = B1*2 + B0

馃攳 Pista 3: L贸gica de Comparaci贸n

Usa operadores de comparaci贸n simples: if (A < B), else if (A == B), else (A > B)

馃攳 Pista 4: Apagar LEDs

Recuerda apagar todos los LEDs antes de encender el correspondiente para evitar m煤ltiples LEDs encendidos.

馃摎 Conceptos Te贸ricos

Comparadores Digitales

Un comparador digital es un circuito combinacional que compara dos n煤meros binarios y determina cu谩l es mayor, menor o si son iguales.

Circuitos Combinacionales

Los circuitos combinacionales son aquellos cuya salida depende 煤nicamente de las entradas presentes, sin memoria de estados anteriores.

Representaci贸n Binaria

Los n煤meros de 2 bits pueden representar valores del 0 al 3 en decimal (00, 01, 10, 11 en binario).

馃幆 Criterios de Evaluaci贸n

馃殌 Extensiones Opcionales

馃摑 Estructura B谩sica del C贸digo

// Definici贸n de pines
const int A1_PIN = 22;  // Bit m谩s significativo de A
const int A0_PIN = 24;  // Bit menos significativo de A
const int B1_PIN = 26;  // Bit m谩s significativo de B
const int B0_PIN = 28;  // Bit menos significativo de B

const int LED_LESS_PIN = 5;   // LED A < B
const int LED_EQUAL_PIN = 6;  // LED A = B
const int LED_GREATER_PIN = 7; // LED A > B

void setup() {
  // Configurar pines de entrada con pull-up
  pinMode(A1_PIN, INPUT_PULLUP);
  pinMode(A0_PIN, INPUT_PULLUP);
  pinMode(B1_PIN, INPUT_PULLUP);
  pinMode(B0_PIN, INPUT_PULLUP);
  
  // Configurar pines de salida
  pinMode(LED_LESS_PIN, OUTPUT);
  pinMode(LED_EQUAL_PIN, OUTPUT);
  pinMode(LED_GREATER_PIN, OUTPUT);
  
  // Apagar todos los LEDs inicialmente
  digitalWrite(LED_LESS_PIN, LOW);
  digitalWrite(LED_EQUAL_PIN, LOW);
  digitalWrite(LED_GREATER_PIN, LOW);
}

void loop() {
  // Leer entradas (invertir porque usamos pull-up)
  int A1 = !digitalRead(A1_PIN);
  int A0 = !digitalRead(A0_PIN);
  int B1 = !digitalRead(B1_PIN);
  int B0 = !digitalRead(B0_PIN);
  
  // Convertir a decimal
  int A = A1 * 2 + A0;
  int B = B1 * 2 + B0;
  
  // Apagar todos los LEDs
  digitalWrite(LED_LESS_PIN, LOW);
  digitalWrite(LED_EQUAL_PIN, LOW);
  digitalWrite(LED_GREATER_PIN, LOW);
  
  // Comparar y encender LED correspondiente
  if (A < B) {
    digitalWrite(LED_LESS_PIN, HIGH);
  } else if (A == B) {
    digitalWrite(LED_EQUAL_PIN, HIGH);
  } else { // A > B
    digitalWrite(LED_GREATER_PIN, HIGH);
  }
  
  delay(100); // Peque帽a pausa para estabilidad
}