Você está na página 1de 3

#include <LiquidCrystal.

h>
LiquidCrystal lcd ( 4 , 3 , 8 , 7 , 6 , 5 ) ;

// declara as variaveis

int sensorrede = 0 ;
int sensorgerador = 0 ;
byte rede ;
gerador de bytes ;
const int geradorOn = 9 ;
const int relerede = 10 ;
const int relepartida = 11 ;
const int relecargagerador = 12 ;
const int releparada = 2 ;
const int comutafasecmd = 16 ;
const int comutaneutrocmd = 17 ;
tempo longo sem sinal = 0 ;
int temporizador = 0 ;

void setup ( )
{

lcd. come�ar ( 16 , 2 ) ; // inicializa display de 16colunas / 2linhas


pinMode ( geradorOn , OUTPUT ) ; // so para ilustrar o gerador ligado
digitalWrite ( geradorOn , HIGH ) ; // so para ilustrar o gerador ligado
pinMode ( relerede , OUTPUT ) ; // define relerede como saida
digitalWrite ( relerede , HIGH ) ; //puxar para cima
pinMode ( relepartida , OUTPUT ) ; // define relepartida como saida
digitalWrite ( relepartida , HIGH ) ; //puxar para cima
pinMode ( relecargagerador , OUTPUT ) ; // define relecargagerador como saida
digitalWrite ( relecargagerador , HIGH ) ; //puxar para cima
pinMode ( releparada , OUTPUT ) ;
digitalWrite ( releparada , HIGH ) ;
pinMode ( comutafasecmd , OUTPUT ) ;
digitalWrite ( comutafasecmd , HIGH ) ;
pinMode ( comutaneutrocmd , OUTPUT ) ;
digitalWrite ( comutaneutrocmd , HIGH ) ;

void loop ( )
{

sensorrede = analogRead ( A0 ) ; // sensorrede recebe o sinal no pino anal�gico


A0
sensorgerador = analogRead ( A1 ) ; // senssorgerador recebe o sinal no pino
anal�gico A1

// coloquei esse if abaixo porque acho mais facil trabalhar com 0 e 1 para tem
energia ou nao.

if ( sensorrede < 300 ) { rede = 0 ; } mais { rede = 1 ; } // abaixo de


300 falta energia = 0, acima energia ok
if ( sensorgerador < 300 ) { gerador = 0 ; } else { gerador = 1 ; } //
abaixo de 300 falta energia = 0, acima energia ok

// rede ok e gerador agrupado


if ( rede == 1 && gerador == 0 ) {
lcd. setCursor ( 0 , 0 ) ;
lcd. imprimir ( "ENERGIA DA REDE!" ) ;
digitalWrite ( relerede , LOW ) ;
digitalWrite ( relepartida , HIGH ) ;
digitalWrite ( relecargagerador , HIGH ) ;
}

// rede faltando e gerador bloco

if ( rede == 0 && gerador == 0 ) {


temporizador = 1 ; // inicia o temporizador
tempo = milis ( ) ; // tempo recebe o valor de millis
if ( millis ( ) - tempo > = 20000 && temporizador == 1 ) {

if ( rede == 0 && gerador == 0 ) {


lcd. setCursor ( 0 , 0 ) ;
lcd. imprimir ( "REDE S / ENERGIA!" ) ;
digitalWrite ( relerede , HIGH ) ;
atraso ( 3000 ) ;
digitalWrite ( relepartida , LOW ) ;
lcd. setCursor ( 0 , 1 ) ;
lcd. imprimir ( "Partindo Gerador" ) ;
atraso ( 3500 ) ;
digitalWrite ( relepartida , HIGH ) ;
temporizador = 0 ;
}
}
}

// rede faltando e gerador ligado


if ( rede == 0 && gerador == 1 ) {
atraso ( 4000 ) ;
digitalWrite ( geradorOn , LOW ) ; // so para ilustrar o gerador (liga Led)
digitalWrite ( comutafasecmd , LOW ) ;
digitalWrite ( comutaneutrocmd , LOW ) ;
atraso ( 4000 ) ;
digitalWrite ( relecargagerador , LOW ) ;
lcd. setCursor ( 0 , 0 ) ;
lcd. imprimir ( "Gerador Ligado !!" ) ;
lcd. setCursor ( 0 , 1 ) ;
lcd. imprimir ( �Energia Gerador!� ) ;
}

// rede ok e gerador ligado


if ( rede == 1 && gerador == 1 ) {
lcd. limpar ( ) ;
digitalWrite ( relecargagerador , HIGH ) ;
atraso ( 2000 ) ;
digitalWrite ( comutafasecmd , HIGH ) ;
digitalWrite ( comutaneutrocmd , HIGH ) ;
atraso ( 2000 ) ;
digitalWrite ( relerede , LOW ) ;
lcd. setCursor ( 0 , 0 ) ;
lcd. imprimir ( "EsfriandoGerador" ) ;
lcd. setCursor ( 0 , 1 ) ;
lcd. imprimir ( "ENERGIA DA REDE!" ) ;
atraso ( 10000 ) ;
lcd. limpar ( ) ;
digitalWrite ( releparada , LOW ) ;
atraso ( 3300 ) ;
digitalWrite ( releparada , HIGH ) ;
digitalWrite ( geradorOn , HIGH ) ; // led so para ilustrar o gerador (desliga
Led)
}
}

Você também pode gostar