馃搵 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 |
| 0 | 0 | 0 | 0 | 0 | 0 | A = B | Pin 6 |
| 0 | 0 | 0 | 1 | 0 | 1 | A < B | Pin 5 |
| 0 | 0 | 1 | 0 | 0 | 2 | A < B | Pin 5 |
| 0 | 0 | 1 | 1 | 0 | 3 | A < B | Pin 5 |
| 0 | 1 | 0 | 0 | 1 | 0 | A > B | Pin 7 |
| 0 | 1 | 0 | 1 | 1 | 1 | A = B | Pin 6 |
| 0 | 1 | 1 | 0 | 1 | 2 | A < B | Pin 5 |
| 0 | 1 | 1 | 1 | 1 | 3 | A < B | Pin 5 |
| 1 | 0 | 0 | 0 | 2 | 0 | A > B | Pin 7 |
| 1 | 0 | 0 | 1 | 2 | 1 | A > B | Pin 7 |
| 1 | 0 | 1 | 0 | 2 | 2 | A = B | Pin 6 |
| 1 | 0 | 1 | 1 | 2 | 3 | A < B | Pin 5 |
| 1 | 1 | 0 | 0 | 3 | 0 | A > B | Pin 7 |
| 1 | 1 | 0 | 1 | 3 | 1 | A > B | Pin 7 |
| 1 | 1 | 1 | 0 | 3 | 2 | A > B | Pin 7 |
| 1 | 1 | 1 | 1 | 3 | 3 | A = B | Pin 6 |
馃挕 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).
馃摑 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
}