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