# Ler uma saida do arduino

**URL:** <https://forum.fazedores.com/t/ler-uma-saida-do-arduino/6432>\
**Category:** Arduino\
**Created:** [Junho 15, 2019, 12:41am UTC](https://forum.fazedores.com/t/ler-uma-saida-do-arduino/6432 "2019-06-15T00:41:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Robson\_Dorival\_Corde](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/robson_dorival_corde/32/2949_2.png) [@Robson\_Dorival\_Corde](https://forum.fazedores.com/u/Robson_Dorival_Corde)\
**Post date:** [Junho 15, 2019, 12:41am UTC](https://forum.fazedores.com/t/ler-uma-saida-do-arduino/6432/1 "2019-06-15T00:41:58Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Arnold\_Rudge](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/arnold_rudge/32/1675_2.png) [@Arnold\_Rudge](https://forum.fazedores.com/u/Arnold_Rudge)\
**Post date:** [Junho 15, 2019, 9:14am UTC](https://forum.fazedores.com/t/ler-uma-saida-do-arduino/6432/2 "2019-06-15T09:14:05Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![maranduba](https://avatars.discourse-cdn.com/v4/letter/m/f4b2a3/32.png) [@maranduba](https://forum.fazedores.com/u/maranduba)\
**Post date:** [Dezembro 10, 2021, 3:08am UTC](https://forum.fazedores.com/t/ler-uma-saida-do-arduino/6432/3 "2021-12-10T03:08:40Z")

</div>

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);  
}

---

<div class="post-metadata">

**Author:** ![maranduba](https://avatars.discourse-cdn.com/v4/letter/m/f4b2a3/32.png) [@maranduba](https://forum.fazedores.com/u/maranduba)\
**Post date:** [Dezembro 10, 2021, 3:13am UTC](https://forum.fazedores.com/t/ler-uma-saida-do-arduino/6432/4 "2021-12-10T03:13:09Z")

</div>

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