Ler uma saida do arduino

Boa noite pessoal, preciso ler o estado de uma saida no meu programa e usa-lo em outra parte do programa, consigo fazer isso com no arduino, pode ser simples mas nao estaou conseguindo.

Ex apertei um Botao que acionou um led, e em outra parte do programa
ele tem que saber se o led esta asceso ou apagado para efetuar a rotina especifica

Oi , primeiro posta seu codigo, pra que possamos ver o que esta fazendo errado.
A funcao e

digitalRead(porta_x );

entao voce faz exp:

byte a = digitalRead(12);

agora a byte a contem o estado da porta.

Boa noite, amigos estou tendo uma problema parecido!

tenho alguns motores pra ligar, e uso um display i2c com menu vertical com 6 topicos:

–ligar motorA
–ligar motorB
–ligar motorC
–ligar motorD
–Pausa de 15 minutos
–Desligar Motores

Todas funcionam menos a pausa de 15 minutos, pois preciso que os motores que estiverem ligados no momento da pausa apos os 15 minutos retornem a seu estado de HIGH.
Ja tentei diversas formas mas sem sucesso!
segue abaixo codigo:

Tudo na action 5 as alteraçoes

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int interruptPin = 2;

int upButton = 5;
int downButton = 3;
int selectButton = 4;
int bomba = 12;
int ledgreen = 8;
int ledred = 9;
int ledblue = 10;
int ledye = 11;
int ledpausa = 13;
int menu = 1;

void setup() {

lcd.init();
lcd.backlight();
pinMode(bomba, OUTPUT);
pinMode(ledgreen, OUTPUT);
pinMode(ledpausa, OUTPUT);
pinMode(ledred, OUTPUT);
pinMode(ledye, OUTPUT);
pinMode(ledblue, OUTPUT);
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);

updateMenu();

}

void loop() {
if (!digitalRead(downButton)) {
menu++;
updateMenu();
delay(100);
while (!digitalRead(downButton));
}
if (!digitalRead(upButton)) {
menu–;
updateMenu();
delay(100);
while (!digitalRead(upButton));
}
if (!digitalRead(selectButton)) {
executeAction();
updateMenu();
delay(100);
while (!digitalRead(selectButton));
}
}

void updateMenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.print(">Led Verde");
lcd.setCursor(0, 1);
lcd.print(" Led Vermelho");
break;
case 2:
lcd.clear();
lcd.print(" Led Verde");
lcd.setCursor(0, 1);
lcd.print(">Led Vermelho");
break;
case 3:
lcd.clear();
lcd.print(">Led Azul");
lcd.setCursor(0, 1);
lcd.print(" Led Amarelo");
break;
case 4:
lcd.clear();
lcd.print(" Led Azul");
lcd.setCursor(0, 1);
lcd.print(">Led Amarelo");
break;
case 5:
lcd.clear();
lcd.print(">Pausa Alimento");
lcd.setCursor(0, 1);
lcd.print(" Desligar Tudo");
break;
case 6:
lcd.clear();
lcd.print(" Pausa Alimento");
lcd.setCursor(0, 1);
lcd.print(">Desligar Tudo");
break;
case 7:
lcd.clear();
lcd.print(">MenuItem7");
lcd.setCursor(0, 1);
lcd.print(" MenuItem8");
break;
case 8:
lcd.clear();
lcd.print(" MenuItem7");
lcd.setCursor(0, 1);
lcd.print(">MenuItem8");
break;
case 9:
menu = 8;
break;
}
}

void executeAction() {
switch (menu) {
case 1:
action1();
break;
case 2:
action2();
break;
case 3:
action3();
break;
case 4:
action4();
break;
case 5:
action5();
break;
case 6:
action6();
break;
case 7:
action7();
break;
case 8:
action8();
break;
}
}

void action1() {
lcd.clear();
lcd.print(">Ligar Verde");
digitalWrite(bomba, HIGH);
digitalWrite(ledgreen, HIGH);
digitalWrite(ledpausa, LOW);
delay(1500);
}
void action2() {
lcd.clear();
lcd.print(">Ligar Vermelho");
// digitalWrite(bomba, LOW);
// digitalWrite(ledgreen, LOW);
digitalWrite(ledred, HIGH);
digitalWrite(ledpausa, LOW);
delay(1500);
}
void action3() {
lcd.clear();
lcd.print(">Ligar Azul");
digitalWrite(ledblue, HIGH);
digitalWrite(ledpausa, LOW);
delay(1500);
}
void action4() {
lcd.clear();
lcd.print(">Ligar Amarelo");
digitalWrite(ledye, HIGH);
digitalWrite(ledpausa, LOW);
delay(1500);
}
//void action5() {
// lcd.clear();
// lcd.print(">Pausa de 15 Min");
// digitalWrite(bomba, HIGH);
// digitalWrite(ledgreen, HIGH);
// digitalWrite(ledye, HIGH);
// digitalWrite(ledblue, HIGH);
// digitalWrite(ledred, HIGH);
// digitalWrite(ledpausa, !digitalRead(ledpausa));
// digitalWrite(ledgreen, !digitalRead(ledgreen));
// digitalWrite(ledblue, !digitalRead(ledblue));
// digitalWrite(ledred, !digitalRead(ledred));
// digitalWrite(ledye, !digitalRead(ledye));
// digitalWrite(bomba, !digitalRead(bomba));
// delay(12000);
// digitalWrite(ledpausa, !digitalRead(ledpausa));
// digitalWrite(ledgreen, !digitalRead(ledgreen));
// digitalWrite(ledblue, !digitalRead(ledblue));
// digitalWrite(ledred, !digitalRead(ledred));
// digitalWrite(ledye, !digitalRead(ledye));
// digitalWrite(bomba, !digitalRead(bomba));
//
//
//}

void action5() {
lcd.clear();
lcd.print(">Pausa de 15 Min");
if (digitalRead(bomba) == HIGH){

int x = 2;

}
delay(12000);
if(x ==2){
digitalWrite(bomba,HIGH)}

}

void action6() {
lcd.clear();
lcd.print(">Desligar Todos");
digitalWrite(ledpausa, LOW);
digitalWrite(ledgreen, LOW);
digitalWrite(ledblue, LOW);
digitalWrite(ledred, LOW);
digitalWrite(ledye, LOW);
digitalWrite(bomba, LOW);
delay(1500);
}
void action7() {
lcd.clear();
lcd.print(">Executing #7");
delay(1500);
}
void action8() {
lcd.clear();
lcd.print(">Executing #8");
digitalWrite(ledblue, HIGH);
delay(1500);
}

na pausa deve-se desligar todos os motoresque estiverem ligados e apos a pausa retornar apenas os ligados anteriormente,