Barrera de Coches para Parking

Tabla de Verdad

Entradas: A, B, C, D | Salida: SalidaBarrera

A B C D SalidaBarrera
00000
00010
00100
00111
01000
01010
01100
01111
10000
10010
10100
10111
11000
11010
11101
11111

Funciones Lógicas

Forma Canónica:

salidaBarrera = !A·!B·C·D + !A·B·C·D + A·!B·C·D + A·B·C·!D + A·B·C·D

Función Simplificada (Karnaugh):

salidaBarrera = C·D + A·B·C

Código Arduino

const int leds[] = {13,12,11,10,9,8,7,6,5};
const int entradas[] = {28,26,24,22};
const int numeroLeds = sizeof(leds) / sizeof(leds[0]);
const int numeroEntradas = sizeof(entradas) / sizeof(entradas[0]);
bool A, B, C, D;
bool salidaBarrera;

void setup()
{
  Serial.begin(115200);
  for(int i = 0; i < numeroLeds; i++){
    pinMode(leds[i], OUTPUT);
  }
  for(int i = 0; i < numeroEntradas; i++){
    pinMode(entradas[i], INPUT);
  }
}

void loop()
{
  A = digitalRead(entradas[0]); // Leo estado Pin 28
  B = digitalRead(entradas[1]); // Leo estado Pin 26
  C = digitalRead(entradas[2]); // Leo estado Pin 24
  D = digitalRead(entradas[3]); // Leo estado Pin 22

  // FUNCIÓN
  salidaBarrera = !A*!B*C*D + !A*B*C*D + A*!B*C*D + A*B*C*!D + A*B*C*D;
  
  // SALIDA EN EL LED 5
  digitalWrite(leds[numeroLeds-1], salidaBarrera);
}