Ejercicio de tabla de verdad a partir de un sistema real: barrera automática de un parking.
Crea en EMP la carpeta 3_barrera_coches con un index.html (tabla, función lógica y programa). No uses una carpeta genérica tareas.
En la entrada de un parking subterráneo hay una barrera automática. El controlador lógico decide si la barrera debe abrirse o permanecer cerrada.
El sistema dispone de 4 señales de entrada (0 o 1) y 1 salida hacia el motor:
Condiciones de funcionamiento (seguridad incluida):
Función lógica pedida:
F = (A · B · C) + (D · C)Completa la tabla de verdad (16 filas). Puedes pulsar cada celda de F para conmutar 0/1 en clase, o usar el botón para ver la solución.
| Dec | Acoche | Bticket | Clibre | Dmanual | Fabrir |
|---|
Pulsa cada celda de F para explicar fila a fila. El botón aplica o quita la solución según F = C·(A·B + D).
Mismo cableado que puertasLogicas: entradas en 28, 26, 24, 22 y salidas en LEDs del array O[].
Ambos LEDs deben coincidir en todas las combinaciones de A, B, C, D.
const int O[] = { 13, 12, 11, 10, 9, 8, 7, 6, 5 };
const int nO = 9;
const int I[] = { 28, 26, 24, 22 };
const int nI = 4;
bool A, B, C, D;
bool F_tabla; // LED 13 · sin simplificar (SOP de la tabla)
bool F_simplificada; // LED 12 · F = C·(A·B + D)
void setup() {
Serial.begin(9600);
for (int i = 0; i < nO; i++) {
pinMode(O[i], OUTPUT);
}
for (int i = 0; i < nI; i++) {
pinMode(I[i], INPUT);
}
}
void loop() {
A = digitalRead(I[0]); // pin 28 · detector coche
B = digitalRead(I[1]); // pin 26 · ticket
C = digitalRead(I[2]); // pin 24 · fotocélula libre
D = digitalRead(I[3]); // pin 22 · pulsador vigilante
// LED 13 · función sacada de la tabla (minterms F=1: 3,7,11,14,15)
F_tabla = !A * !B * C * D + !A * B * C * D + A * !B * C * D +
A * B * C * !D + A * B * C * D;
digitalWrite(O[0], F_tabla);
// LED 12 · misma función simplificada
F_simplificada = C * (A * B + D);
digitalWrite(O[1], F_simplificada);
mostrarEntradasEnMonitor();
}
void mostrarEntradasEnMonitor() {
Serial.print(A);
Serial.print(" ");
Serial.print(B);
Serial.print(" ");
Serial.print(C);
Serial.print(" ");
Serial.print(D);
Serial.print(" | F13=");
Serial.print(F_tabla);
Serial.print(" F12=");
Serial.println(F_simplificada);
}