I have written my code to use digital pins as inputs and outputs to read 3 open and closed switches and activate 2 relays. It does not activate the relays. I would like to add serial monitor to see what is going on also. Any help would be great.
Here is my code:
//https://forum.arduino.cc/t/2-inputs-required-for-1-output-and-gate/327548/15
//"O/S/C"=BUTTON TO OPEN
//PHO=SAFETY LOOP NEEDS TO BE ACIVATED WITH BUTTON TO ENSURE GATE DOES NOT CLOSE BECAUSE OV THE BUTTON
//UP&DOWN= OPEN AND CLOSED LIMIT SWITCHES
//IF BUTTON INPUT AND !CLOSED AND OPEN LIMIT = GATE IS OPEN, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY 1000.
//IF BUTTON INPUT AND !CLOSED AND !OPEN LIMIT = GATE IS MOVING, WAIT 25000 OR UNTIL CLOSED LIMIT, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY 1000.
//IF BUTTON INPUT AND CLOSED AND !OPEN LIMIT = GATE IS CLOSED, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY 1000.
//IF ACCESS INPUT AND !CLOSED AND OPEN LIMIT = GATE IS OPEN, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY.
//IF ACCESS INPUT AND !CLOSED AND !OPEN LIMIT = GATE IS MOVING, WAIT 25000 OR UNTIL CLOSED LIMIT, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY.
//IF ACCESS INPUT AND CLOSED AND !OPEN LIMIT = GATE IS CLOSED, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY.
//TEST IF GATE OPENS WHILE CLOSING BY ACTIVATING SAFEY!!!!!!!!!!!!!!!
int buttoninPin = 4;
int openPin = 3;
int closedPin = 2;
//int accessPin = v1;
int buttonoutPin = 12;
int safetyPin = 11;
//int relay1Pin = 8;
//int hl1State = 0;
//int hl2State = 0;
void setup() {
// put your setup code here, to run once:
pinMode(buttoninPin, INPUT);
pinMode(closedPin, INPUT);
pinMode(openPin, INPUT);
// pinMode(accesPin, OUTPUT);
pinMode(buttonoutPin, OUTPUT);
pinMode(safetyPin, OUTPUT);
digitalWrite (buttonoutPin, LOW);
digitalWrite (safetyPin, LOW);
}
void loop()
{
digitalRead (buttoninPin);
digitalRead (openPin);
digitalRead (closedPin);
//IF BUTTON INPUT AND !CLOSED AND OPEN LIMIT = GATE IS OPEN, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY 1000.
if (buttoninPin == LOW && closedPin != LOW && openPin == LOW){
digitalWrite (buttonoutPin, HIGH);
delay (750);
digitalWrite (safetyPin, HIGH);
delay (750);
digitalWrite (buttonoutPin, LOW);
delay (750);
digitalWrite (safetyPin, LOW);
}
//IF BUTTON INPUT AND !CLOSED AND !OPEN LIMIT = GATE IS MOVING, PHO SAFETY 750.
//or WAIT 22000 OR UNTIL CLOSED LIMIT, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY 1000.
/*if (buttoninPin == LOW && closedPin == HIGH && openPin == HIGH){
delay (22000);
digitalWrite (buttonoutPin, HIGH);
delay (1000);
digitalWrite (safetyPin, HIGH);
digitalWrite (buttonoutPin, LOW);
delay (1000);
digitalWrite (safetyPin, LOW);
}
*/
if (buttoninPin == LOW && closedPin != LOW && openPin != LOW){
if (closedPin == LOW && openPin != LOW){
digitalWrite (safetyPin, HIGH);
delay (750);
digitalWrite (safetyPin, LOW);
/*
digitalWrite (buttonoutPin, HIGH);
delay (750);
digitalWrite (safetyPin, HIGH);
delay (750);
digitalWrite (buttonoutPin, LOW);
delay (750);
digitalWrite (safetyPin, LOW);
*/
}
}
//IF BUTTON INPUT AND CLOSED AND !OPEN LIMIT = GATE IS CLOSED, SWITCH ON BUTTON OUTPUT 1000 THEN PHO SAFETY 1000.
if (buttoninPin == LOW && closedPin == LOW && openPin != LOW){
digitalWrite (buttonoutPin, HIGH);
delay (750);
digitalWrite (safetyPin, HIGH);
delay (750);
digitalWrite (buttonoutPin, LOW);
delay (750);
digitalWrite (safetyPin, LOW);
}
else {
digitalWrite (buttonoutPin, LOW);
digitalWrite (safetyPin, LOW);
}
}