Engenharia

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (344 palavras )
  • Download(s) : 0
  • Publicado : 3 de abril de 2013
Ler documento completo
Amostra do texto
#include

#define FALSE 0
#define TRUE 1

// Modifique o nome dos estados abaixo, e acrescente mais estados se necessário
typedef enum
{
IDLE,
RESFRIAMENTO,
RESFRIAMENTO_INTERRUPTED,RESFRIAMENTO_COMPLETED,
DOOR_OPENED_2,
HELICE_ON,
} SMState_t;

int main(void)
{
// Declaração de entradas
int forno = TRUE;
int helice = FALSE;
int timeButton = 60;
int resp,tempe;tempe=0;

// Declaração de saídas
// int forno = FALSE;
// int helice = TRUE;
int timer = timeButton;

char refresh;

// Inicializa variável com estado inicial
SMState_t SMState =IDLE;
printf("Forno Ligado");

do{
tempe++;
printf("Temperatura:%d",tempe,"ºC");
/* Ler as entradas
printf("Atualizar entradas (s/n)?\n");
scanf("%c",&refresh);
getchar();if(refresh == 's')
{
printf("Digite em ordem: forno-(0/1)\n Helice-(0/1)\n");
scanf("%d,%d",&forno,helice);
getchar();
printf("Entradas atualizadas: %d,%d\n",forno,helice);
}*/

switch(SMState){
case IDLE:
forno = TRUE;
helice = FALSE;
do{
tempe++;
}while(tempe==65);
if(forno == TRUE && tempe >= 65)
{
SMState = RESFRIAMENTO;
//timer = tempe;
}
if(helice == TRUE){
SMState = HELICE_ON;
}
break;

case RESFRIAMENTO:
helice = TRUE;
forno = FALSE;
do{
//timer = timer-1;
tempe--;
if(helice == FALSE)
{
SMState = RESFRIAMENTO_INTERRUPTED;
}if(/*timer*/tempe == 60)
{
SMState = RESFRIAMENTO_COMPLETED;
}
}while(tempe==60);
break;

case RESFRIAMENTO_INTERRUPTED:
forno = TRUE;
helice = FALSE;

if(forno == TRUE && tempe>= 65)
{

SMState = RESFRIAMENTO;
//timer = tempe;
}

if(helice == TRUE)
{
SMState = RESFRIAMENTO;
}
SMState=IDLE;
break;

case RESFRIAMENTO_COMPLETED:
forno = TRUE;helice = FALSE;
do{
tempe++;
if(forno == TRUE && tempe >= 65)
{
SMState = RESFRIAMENTO;
timer = tempe;
}

if(helice == TRUE)
{
SMState = HELICE_ON;
}
}while(tempe==65);
/*...
tracking img