# Ajuda na Lógica

**URL:** <https://forum.fazedores.com/t/ajuda-na-logica/6687>\
**Category:** Arduino\
**Created:** [Setembro 8, 2019, 11:38am UTC](https://forum.fazedores.com/t/ajuda-na-logica/6687 "2019-09-08T11:38:43Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Euder](https://avatars.discourse-cdn.com/v4/letter/e/258eb7/32.png) [@Euder](https://forum.fazedores.com/u/Euder)\
**Post date:** [Setembro 8, 2019, 11:38am UTC](https://forum.fazedores.com/t/ajuda-na-logica/6687/1 "2019-09-08T11:38:43Z")

</div>

Olá Amigos.

Sou iniciante no Arduíno, estou encontrando dificuldade em saber qual melhor caminho para a se fazer logica, no qual seria:

1º Ler a corrente, de carga - _ **Concluído** _

2º Se este valor estiver de acordo com a logica do( if) mandar um comando que neste caso é acender um led caso não . - **Concluído**.

3º São feita três leituras de corrente diferente, e cada processo deve passar pela 1º ,2º e 3, leitura. O a leitura só seguira a seguinte se estiver de acordo, caso não deve interromper o processo, esse processo só voltará ao fazer o reset. - **Não Concluído**

Segue abaixo o código ja feito.

#include \<Wire.h\>  
#include \<LiquidCrystal.h\>

LiquidCrystal lcd(02,03,04,05,06,07);  
// Criando um LCD de 16x2 no endereço 0x20

#include “EmonLib.h” //INCLUSÃO DE BIBLIOTECA  
#define CURRENT\_CAL 18.40 //VALOR DE CALIBRAÇÃO (DEVE SER AJUSTADO EM PARALELO COM UM MULTÍMETRO MEDINDO A CORRENTE DA CARGA)

volatile int numInterrupt = 0;  
const int pinoSensor = A1; //PINO ANALÓGICO EM QUE O SENSOR ESTÁ CONECTADO  
float ruido = 0.14; //RUÍDO PRODUZIDO NA SAÍDA DO SENSOR (DEVE SER AJUSTADO COM A CARGA DESLIGADA APÓS CARREGAMENTO DO CÓDIGO NO ARDUINO)  
float vermelho = 10;  
float amarelo = 11;  
float verde = 12;

EnergyMonitor emon1; //CRIA UMA INSTÂNCIA

void setup(){

//DECLARANDO O COMANDO  
pinMode(vermelho,OUTPUT);  
pinMode(amarelo,OUTPUT);  
pinMode(verde,OUTPUT);  
pinMode(A1,INPUT);

//LED  
Serial.begin(9600); //INICIALIZA A SERIAL  
lcd.clear();  
lcd.begin(16,2);  
lcd.clear();  
delay(3000);

emon1.current(pinoSensor, CURRENT\_CAL); //PASSA PARA A FUNÇÃO OS PARÂMETROS (PINO ANALÓGIO / VALOR DE CALIBRAÇÃO)  
}

void loop(){  
//Primeiro laço

corrente:

emon1.calcVI(20,100); //FUNÇÃO DE CÁLCULO (20 SEMICICLOS / TEMPO LIMITE PARA FAZER A MEDIÇÃO)  
double currentDraw = emon1.Irms; //VARIÁVEL RECEBE O VALOR DE CORRENTE RMS OBTIDO

//1º Passo.  
delay(1000);

if (currentDraw \<= 2.4) {  
digitalWrite(vermelho, HIGH);  
} else {  
digitalWrite(vermelho, LOW);

}

//2º Passo.  
passo2:

delay(200);  
if (currentDraw == constrain(currentDraw, 2.42, 2.55)) {  
digitalWrite(amarelo, HIGH);  
} else {  
digitalWrite(amarelo, LOW);

}

//3º Passo.  
passo3:  
delay(200);  
if (currentDraw \>= 2.61) {  
digitalWrite(verde, HIGH);  
} else {  
digitalWrite(verde, LOW);

}

lcd.setCursor(4,0);  
lcd.print(“ACTION!”);;  
lcd.setCursor(0,1);  
lcd.print("Corrente: “);  
lcd.print(currentDraw);  
lcd.print(” A ");

```
Serial.print("Corrente: ");
Serial.print(currentDraw );
Serial.println(" A "); //IMPRIME O TEXTO NA SERIAL

```

}
