Ir ao conteúdo
  • Cadastre-se
LuizCampos9

C++ Menu C++ manda comandos Arduino e grava arquivo

Recommended Posts

Estou usando o Dev C++ 5.4.0 para fazer um projeto da faculdade. Num menu o usuário escolhe qual sequencia de iluminação de cômodos de uma maquete quer e o prg manda para o arduino qual porta deve ativar, sendo que cada uma é um comodo. Registra tempo inicial e final, calcula a diferença e precisa gravar num arquivo comodo + tempo, para depois totalizar por comodo na saída do prg. Acho que consegui construir a lógica, mais o problema é a "passagem do comando" entre PC - Arduino _ PC - Arduino - PC, etc..

Também precisava trazer a biblioteca do arduino para o C++, pois o compilador não reconhece os valores HIGH e LOW, parâmetros das funções digitalwrite.

Se alguém tiver  ideias agradeço.

O código

//Controle de Iluminação de uma Casa


#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <time.h>
//#include <NewSoftSerial.h>
//#include <stream.h>  Não consigo achar na internet, a anterior cita esta
 
FILE * Registro; // Ponteiro para início do arquivo 
time_t Tinicial, Tfinal;                   
struct tm * TempoLuz;
typedef struct Registro
{
  int Comregistro;
  double TLuz;
} 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;   // Parâmetro de tempo para função acender
int Op;      // Opção para usuário escolher quais cômodos serão acesos
int Com;     // Cômodo que será aceso.
float SG,SS,SCo,SBa,SQ1,SQ2,Sqi;
 
// Função 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.TLuz = difftime(Tfinal,Tinicial);
return 0;
}
// Função para apagar 
void apaga(int Com,Tempo)
{
digitalWrite(Com,LOW);
delay(Tempo);
}
int main()
{
setlocale(LC_ALL, "Portuguese"); // Para usar acentuação
Registro = fopen("Registros.txt","w");
do    {
        printf("OPÇÕES DE ILUMINAÇÃO:\n");
        printf("1 – Acende Tudo (100').\n");
        printf("2 – Apaga Tudo. \n");
  printf("3 - Acende Garagem (100'), Acende Sala (1000').\n");
        printf("4 - Sequencia1 – Acende Sala (50'), Acende Cozinha (100'), Acende Banheiro (100'), Acende Quarto1 (300').\n");
        printf("5 - Sequencia2 – Acende Sala (50'), Acende Cozinha (100'), Acende Banheiro (100'), Acende Quarto2 (300').\n");
        printf("6 – Sair e gerar relatórios. \n");
        printf(" Digite a opção desejada:  \n");
        scanf("%d",&Op);
   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:
            printf(" Opção Inválida. Digite uma opção de 1 a 6. \n");
            }
    while (Opcao==6); 
        }
 fclose(Registro))
       }
 SG=0;SS=0;Sco=0;SQ1=0;SQ2=0;SQi=0;
 // Inicializa acumuladores de tempo dos cômodos com 0
 
 if((Registro = fopen("Registro.txt","r")) == NULL)
 {
  puts("Não foi possivel abrir o arquivo");
 }
 while (!feo(Registro))   // Enquanto houver registros, leia  
     switch (Com)
        {
            case Com 2:
            {
            SG = SG + Registro.TLuz;
   Break;
   }
            case Com 3:
            {
            SS = SS + Registro.TLuz;
   Break;
   }
   case Com 4:
            {
            SCo = SCo + Registro.TLuz;
   Break;
   }   
   case Com 5:
            {
            SBa = SBa + Registro.TLuz;
   Break;
   }   
   case Com 6:
            {
            SQ1 = SQ1 + Registro.TLuz;
   Break;
   }        
   case Com 7:
            {
            SQ2 = SQ2 + Registro.TLuz;
   Break;
   }        
   case Com 8:
            {
            SQiG = SQi + 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;
}
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×