brownca:
The issue I'm having with the delay is when is that it does delay the activation of the horn but it also keeps the horn sounding for an equal amount of time without the button being pressed.
OK, first on the list is to get rid of noInterrupts();, Just comment it out.
Then, put the delay() back in, but make is a reasonable value to test, like say, 2000 (2 seconds).
Now, have a look at your conditions.
if (digitalRead (Pressure) == LOW && digitalRead (Door) == HIGH || digitalRead (Motion) == HIGH)
I can never remember what the order of precedence for && and || are. is the above line parsed as
if (pressure == low && door == HIGH) || motion == HIGH) ?
or is it parsed as
if pressure == low && (door == HIGH || motion == HIGH) ?
If you use parentheses to clarify it to yourself (as I have done here), the compiler will not complain, and will compile for the meaning you want.
From the sense of the active states of the switches, I gather you have them wired from +5V to the appropriate pins. If this is the case, you need to pull down the pins with resistors (10K ohms is a reasonable value). The resistors should be connected from GND to the same appropriate pins. If you don't have resistors, the pins will 'float', and will be extremely susceptible to noise, causing random sensing of HIGH or LOW during digital reads.
You can do this without external resistors by simply connecting your switches between GND and the appropriate pins, then use INPUT_PULLUP in your pinMode statements. If you do this, you will have to then change the sense of the switch states. Every one that now reads HIGH should be changed to LOW, and every LOW should be changed to HIGH.
Look over the conditions carefully. Follow the logic of each condition. Ask yourself what happens if a condition changes during the execution of a block of code within the if.