Solución de la tarea · 4 entradas (A B C D) · 1 salida F (abrir barrera).
Entradas: A coche · B ticket · C fotocélula libre · D pulsador vigilante.
Condiciones: abrir si (coche y ticket y paso libre) o (vigilante y paso libre). Si C=0, nunca abrir.
Función sin factorizar: F = (A·B·C) + (D·C)
Función simplificada: F = C·(A·B + D)
| Dec | A | B | C | D | F |
|---|
Minterms con F=1: 3, 7, 11, 14, 15
F = Ā·B̄·C·D + Ā·B·C·D + A·B̄·C·D + A·B·C·D̄ + A·B·C·Dconst 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 · 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 · simplificada
F_simplificada = C * (A * B + D);
digitalWrite(O[1], F_simplificada);
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);
}