Controle Iluminação maquete


#1

Projeto da faculdade Tecnologia Automação Industrial, Disciplina Programação. Pelo menu usuário escolhe quais cômodos da maquete acenderão. Cada porta do arduino está ligada a um rele e este a um led com resistor em cada comodo da maquete. Problemas com a exibição do menu, a captura da hora para calculo do tempo de acendimento e geração do arquivo… Quem puder dar alguma dica, será muito benvinda. Código abaixo:
//Controle de Iluminacao de uma Casa

//#include <stdio.h>
//#include <locale.h>
//#include <string.h>
#include <time.h>
//#include <NewSoftSerial.h>
//#include <stream.h>
//#include <arduino.h>
//#include <debugLED.h>

//FILE * Registro; // Ponteiro para inicio do arquivo
time_t Tinicial, Tfinal;
struct tm * TempoLuz;
typedef struct Registro
{
int Comregistro;
long TeLuz;
} Regitro;

int G = 2; // G Garagem Porta2
int S = 3; // S Sala Porta3
int Co = 4; // Co Cozinha Porta4
int Ba = 5; // Ba Banheiro Porta5
int Q1 = 6; // Q1 Quarto1 Porta6
int Q2 = 7; // Q2 Quarto2 Porta7
int Qi = 8; // Qi Quintal Porta8
int Tempo; // Parametro de tempo para funcao acender
int Op; // Opcao para usuario escolher quais comodos serao acesos
int Com; // Comodo que sera aceso
int Tecla = 0;// Variavel que quando receber ENTER processa opcao escolhida
long SoG,SoS,SoCo,SoBa,SoQ1,SoQ2,Soqi;

void setup()
{
Serial.begin(9600);
while(!Serial){ // Aguarda conexao com porta
}
Serial.println();
Serial.println(“OPCOES de ILUMINACAO:\n”);
Serial.println(“1 - Acende Tudo (100’).\n”);
Serial.println(“2 - Apaga Tudo. \n”);
Serial.println(“3 - Acende Garagem (100’), Acende Sala (1000’).\n”);
Serial.println(“4 - Sequencia1 - Acende Sala (50’), Acende Cozinha (100’), Acende Banheiro (100’), Acende Quarto1 (300’).\n”);
Serial.println(“5 - Sequencia2 - Acende Sala (50’), Acende Cozinha (100’), Acende Banheiro (100’), Acende Quarto2 (300’).\n”);
Serial.println(“6 - Sair e gerar relatorios. \n”);
Serial.println(" Digite a Opcao desejada e em seguida ENTER: \n");

    //Espera o teclado mandar o codigo 10, que é a tecla ENTER
    while(Tecla != 10) 
    {
    if(Serial.available() > 0) 
    {
    Tecla = Serial.read(); // Le a opcao do usuario
    } 
    }

}

// Funcao para acender
int acende (int Com,int Tempo)
{
time(&Tinicial); // Pega tempo inicial
digitalWrite(Com,HIGH);
delay(Tempo);
//time(&Tfinal); // Pega tempo final
//Registro.Comregistro -> Com; // Grava comodo e tempo em seg acesos
//Registro.TeLuz -> difftime(Tfinal,Tinicial);
return 0;
}
// Funcao para apagar
int apaga(int Com,int Tempo)
{
digitalWrite(Com,LOW);
delay(Tempo);
}
int main()
{
//setlocale(LC_ALL, “Portuguese”); // Para usar acentuacao
//Registro == fopen(“Registros.txt”,“w”);
while(Serial.available() == 0) {
; //Aguarde
}
Op = Serial.parseInt();
Serial.read();
while (Op != 6)
{
switch (Op)
{
case 1:
acende(G,100000); acende(S,100000); acende(Co,100000); acende(Ba,100000); acende(Q1,100000);
acende(Q2,100000); acende(Qi,100000); break;

        case 2:
        apaga(G,100000); apaga(S,100000); apaga(Co,100000); apaga(Ba,100000); apaga(Q1,100000); 
        apaga(Q2,100000); apaga(Qi,100000); break;
        
        case 3:
        acende(G,10); acende(S,1000000); break;
        
        case 4:
        
        acende(S,50000); acende(Co,100000); acende(Ba,100000); acende(Q1,100000); break;
        
        case 5:
        acende(S,50000); acende(Co,100000); acende(Ba,100000); acende(Q2,100000); break;
        
        case 6:
        break;
        
        default:
        
        Serial.println(" Opcao Invalida. Digite uma Opcao de 1 a 6. \n");
        }
    }}

    /* Prog suspenso daqui pra baixo por enqto

fclose(Registro));
}
SoG = 0; SoS =0; SoCo = 0; SoQ1 = 0; SoQ2 = 0; SoQi = 0;
// Inicializa acumuladores de tempo dos comodos com 0

if((Registro = fopen(“Registro.txt”,“r”)) == NULL)
{
puts(“Nao foi possivel abrir o arquivo”);
}
while (!feof(Registro)) // Enquanto houver registros, leia
{
switch (Com)
{
case Com 2:
{
SoG = SoG + Registro.TLuz;
Break;
}
case Com 3:
{
SoS = SoS + Registro.TLuz;
Break;
}
case Com 4:
{
SoCo = SoCo + Registro.TLuz;
Break;
}
case Com 5:
{
SaBa = SoBa + Registro.TLuz;
Break;
}
case Com 6:
{
SoQ1 = SoQ1 + Registro.TLuz;
Break;
}
case Com 7:
{
SoQ2 = SoQ2 + Registro.TLuz;
Break;
}
case Com 8:
{
SoQiG = SoQi + Registro.TLuz;
Break;
}
}
}
printf(“O comodo Garagem ficou aceso durante &f segundos.\n”,SG );
printf(“O comodo Sala ficou aceso durante &f segundos.\n”,SS );
printf(“O comodo Cozinha ficou aceso durante &f segundos.\n”,SCo);
printf(“O comodo Banheiro ficou aceso durante &f segundos.\n”,SBa);
printf(“O comodo Quarto1 ficou aceso durante &f segundos.\n”,SQ1);
printf(“O comodo Quarto2 ficou aceso durante &f segundos.\n”,SQ2);
printf(“O comodo Quintal ficou aceso durante &f segundos.\n”,SQi);

return 0; */