PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 25 → Exemplo comparativo de um sistema de microondas escrito em c e em WLanguage
Exemplo comparativo de um sistema de microondas escrito em c e em WLanguage
Started by Boller, Jul., 01 2024 9:33 AM - 3 replies
Registered member
3,754 messages
Posted on July, 01 2024 - 9:33 AM




//Exemplo em c embarcado de um microondas

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

// Definições de constantes
#define MAX_TEMPO 3600 // 1 hora em segundos
#define MAX_POTENCIA 10 // Potência de 1 a 10

// Variáveis globais
int tempo = 0; // Tempo em segundos
int potencia = 5; // Potência inicial média
bool ligado = false; // Estado do microondas
bool porta_aberta = false; // Estado da porta

// Função para verificar se a porta está aberta
bool verificarPorta() {
return porta_aberta;
}

// Função para ligar o microondas
void ligar() {
if (!verificarPorta()) {
ligado = true;
printf("Microondas ligado.\n");
} else {
printf("Erro: Porta está aberta.\n");
}
}

// Função para desligar o microondas
void desligar() {
ligado = false;
printf("Microondas desligado.\n");
}

// Função para ajustar o tempo
void ajustarTempo(int t) {
if (t > 0 && t <= MAX_TEMPO) {
tempo = t;
printf("Tempo ajustado para %d segundos.\n", tempo);
} else {
printf("Erro: Tempo inválido.\n");
}
}

// Função para ajustar a potência
void ajustarPotencia(int p) {
if (p > 0 && p <= MAX_POTENCIA) {
potencia = p;
printf("Potência ajustada para %d.\n", potencia);
} else {
printf("Erro: Potência inválida.\n");
}
}

// Função para iniciar o microondas
void iniciar() {
if (ligado && !verificarPorta() && tempo > 0) {
printf("Microondas iniciado.\n");
// Simulação do funcionamento do microondas
while (tempo > 0) {
printf("Tempo restante: %d segundos\n", tempo);
sleep(1);
tempo--;
}
printf("Ciclo de cozimento concluído.\n");
desligar();
} else {
printf("Erro: Certifique-se de que o microondas está ligado, a porta está fechada e o tempo foi ajustado.\n");
}
}

// Função para abrir a porta
void abrirPorta() {
porta_aberta = true;
printf("Porta aberta.\n");
}

// Função para fechar a porta
void fecharPorta() {
porta_aberta = false;
printf("Porta fechada.\n");
}

// Função principal
int main() {
// Exemplos de uso
abrirPorta();
fecharPorta();
ligar();
ajustarTempo(60);
ajustarPotencia(7);
iniciar();

return 0;
}



//Exemplo em WLanguage de um microondas

// Declarações e Variáveis Globais

gTempo is int = 0
gPotencia is int = 5
gLigado is boolean = False
gPortaAberta is boolean = False

// Procedure para verificar se a porta está aberta
PROCEDURE VerificarPorta() : boolean
RESULT gPortaAberta

// Procedure para ligar o micro-ondas
PROCEDURE Ligar()
IF NOT VerificarPorta() THEN
gLigado = True
Info("Micro-ondas ligado.")
ELSE
Info("Erro: Porta está aberta.")
END

// Procedure para desligar o micro-ondas
PROCEDURE Desligar()
gLigado = False
Info("Micro-ondas desligado.")

// Procedure para ajustar o tempo
PROCEDURE AjustarTempo(t is int)
IF t > 0 AND t <= 3600 THEN
gTempo = t
Info("Tempo ajustado para " + gTempo + " segundos.")
ELSE
Info("Erro: Tempo inválido.")
END

// Procedure para ajustar a potência
PROCEDURE AjustarPotencia(p is int)
IF p > 0 AND p <= 10 THEN
gPotencia = p
Info("Potência ajustada para " + gPotencia + ".")
ELSE
Info("Erro: Potência inválida.")
END

// Procedure para iniciar o micro-ondas
PROCEDURE Iniciar()
IF gLigado AND NOT VerificarPorta() AND gTempo > 0 THEN
Info("Micro-ondas iniciado.")
// Simulação do funcionamento do micro-ondas
WHILE gTempo > 0
Info("Tempo restante: " + gTempo + " segundos.")
ThreadPause(1000) // Pausa de 1 segundo
gTempo--
END
Info("Ciclo de cozimento concluído.")
Desligar()
ELSE
Info("Erro: Certifique-se de que o micro-ondas está ligado, a porta está fechada e o tempo foi ajustado.")
END

// Procedure para abrir a porta
PROCEDURE AbrirPorta()
gPortaAberta = True
Info("Porta aberta.")

// Procedure para fechar a porta
PROCEDURE FecharPorta()
gPortaAberta = False
Info("Porta fechada.")

// Main Procedure
PROCEDURE Main()
// Exemplos de uso em botões
AbrirPorta()
FecharPorta()
Ligar()
AjustarTempo(60)
AjustarPotencia(7)
Iniciar()

// Chama a Procedure Principal
Main()


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modified, July, 01 2024 - 8:44 PM
Registered member
3,754 messages
Posted on July, 01 2024 - 9:48 AM
Para melhorar o código do micro-ondas, vamos introduzir uma abordagem orientada a objetos (OOP) em WLanguage, adicionar mais recursos e cuidados para evitar acidentes ou incêndios, e incluir sensores de segurança para garantir um ótimo funcionamento e desempenho.

### Estrutura do Código

1. **Declaração da Classe `Microondas`**
2. **Atributos da Classe**
3. **Métodos da Classe**
4. **Função Principal**

### Código

```wlanguage
// Declaração da Classe Microondas

CLASS Microondas
// Atributos da Classe
Tempo is int
Potencia is int
Ligado is boolean
PortaAberta is boolean
SensorTemperatura is real
SensorUmidade is real

// Construtor
CONSTRUCTOR()
Self.Tempo = 0
Self.Potencia = 5
Self.Ligado = False
Self.PortaAberta = False
Self.SensorTemperatura = 25.0
Self.SensorUmidade = 50.0

// Método para verificar se a porta está aberta
PROCEDURE VerificarPorta() : boolean
RESULT Self.PortaAberta

// Método para ligar o micro-ondas
PROCEDURE Ligar()
IF NOT Self.VerificarPorta() THEN
Self.Ligado = True
Info("Micro-ondas ligado.")
ELSE
Info("Erro: Porta está aberta.")
END

// Método para desligar o micro-ondas
PROCEDURE Desligar()
Self.Ligado = False
Info("Micro-ondas desligado.")

// Método para ajustar o tempo
PROCEDURE AjustarTempo(t is int)
IF t > 0 AND t <= 3600 THEN
Self.Tempo = t
Info("Tempo ajustado para " + Self.Tempo + " segundos.")
ELSE
Info("Erro: Tempo inválido.")
END

// Método para ajustar a potência
PROCEDURE AjustarPotencia(p is int)
IF p > 0 AND p <= 10 THEN
Self.Potencia = p
Info("Potência ajustada para " + Self.Potencia + ".")
ELSE
Info("Erro: Potência inválida.")
END

// Método para iniciar o micro-ondas
PROCEDURE Iniciar()
IF Self.Ligado AND NOT Self.VerificarPorta() AND Self.Tempo > 0 THEN
Info("Micro-ondas iniciado.")
// Simulação do funcionamento do micro-ondas
WHILE Self.Tempo > 0
IF Self.SensorTemperatura > 100.0 THEN
Info("Alerta: Temperatura elevada. Desligando por segurança.")
Self.Desligar()
BREAK
END
IF Self.SensorUmidade > 70.0 THEN
Info("Alerta: Umidade elevada. Desligando por segurança.")
Self.Desligar()
BREAK
END
Info("Tempo restante: " + Self.Tempo + " segundos.")
ThreadPause(1000) // Pausa de 1 segundo
Self.Tempo--
END
IF Self.Ligado THEN
Info("Ciclo de cozimento concluído.")
Self.Desligar()
END
ELSE
Info("Erro: Certifique-se de que o micro-ondas está ligado, a porta está fechada e o tempo foi ajustado.")
END

// Método para abrir a porta
PROCEDURE AbrirPorta()
Self.PortaAberta = True
Info("Porta aberta.")

// Método para fechar a porta
PROCEDURE FecharPorta()
Self.PortaAberta = False
Info("Porta fechada.")

// Métodos para sensores de segurança
PROCEDURE AtualizarSensorTemperatura(temp is real)
Self.SensorTemperatura = temp

PROCEDURE AtualizarSensorUmidade(humidity is real)
Self.SensorUmidade = humidity

END

// Função Principal
PROCEDURE Main()
// Instancia a classe Microondas
meuMicroondas is Microondas = new Microondas

// Exemplos de uso
meuMicroondas:AbrirPorta()
meuMicroondas:FecharPorta()
meuMicroondas:Ligar()
meuMicroondas:AjustarTempo(60)
meuMicroondas:AjustarPotencia(7)

// Atualiza sensores antes de iniciar
meuMicroondas:AtualizarSensorTemperatura(25.0)
meuMicroondas:AtualizarSensorUmidade(50.0)
meuMicroondas:Iniciar()

// Chama a função principal
Main()
```

### Explicação do Código

1. **Declaração da Classe `Microondas`:** Criamos uma classe `Microondas` com atributos que representam o estado do micro-ondas, como tempo, potência, estado de ligado/desligado, estado da porta, e sensores de temperatura e umidade.
2. **Construtor:** Inicializa os atributos com valores padrão.
3. **Métodos da Classe:**
- `VerificarPorta`: Verifica se a porta está aberta.
- `Ligar`: Liga o micro-ondas se a porta estiver fechada.
- `Desligar`: Desliga o micro-ondas.
- `AjustarTempo`: Ajusta o tempo de cozimento, validando o valor.
- `AjustarPotencia`: Ajusta a potência de cozimento, validando o valor.
- `Iniciar`: Inicia o ciclo de cozimento se o micro-ondas estiver ligado, a porta estiver fechada e o tempo for válido. Monitora os sensores de temperatura e umidade para garantir segurança.
- `AbrirPorta` e `FecharPorta`: Funções para simular a abertura e fechamento da porta.
- `AtualizarSensorTemperatura` e `AtualizarSensorUmidade`: Atualizam os valores dos sensores de segurança.
4. **Função Principal (`Main`):** Demonstra o uso das funções definidas, simulando um ciclo completo de operação do micro-ondas com a verificação dos sensores.

Este código inclui melhorias significativas em termos de segurança e funcionalidade, utilizando uma abordagem orientada a objetos. Bem como o uso de thread. Façam os seus testes usando esse exemplo. Bons estudos!!!


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Registered member
3,754 messages
Posted on July, 01 2024 - 9:54 AM
Novo exemplo como desenvolver um sistema operacional para um microondas usando WLanguage

### Melhorias na Classe `Microondas`

Para melhorar ainda mais a classe `Microondas`, podemos adicionar as seguintes funcionalidades e cuidados:

1. **Verificação de Porta Trancada:** Implementar um mecanismo para verificar se a porta está trancada corretamente antes de iniciar o micro-ondas.
2. **Sistema de Ventilação:** Adicionar um controle de ventilação para evitar superaquecimento.
3. **Manutenção Programada:** Incluir um sistema de alerta para manutenção programada baseado no número de usos.
4. **Registro de Uso:** Implementar um registro de uso para monitorar quantas vezes o micro-ondas foi usado.
5. **Alarmes de Segurança:** Adicionar alarmes sonoros e visuais em caso de problemas detectados pelos sensores.
6. **Display Digital:** Simular um display digital para mostrar o tempo restante e outras informações.
7. **Botão de Parada de Emergência:** Adicionar um método para um botão de parada de emergência que possa ser acionado a qualquer momento.

### Código Melhorado

```wlanguage
// Declaração da Classe Microondas Melhorada
CLASS Microondas
// Atributos da Classe
Tempo is int
Potencia is int
Ligado is boolean
PortaAberta is boolean
SensorTemperatura is real
SensorUmidade is real
UsoContador is int
ManutencaoAlerta is boolean
VentilacaoAtiva is boolean

// Construtor
CONSTRUCTOR()
Self.Tempo = 0
Self.Potencia = 5
Self.Ligado = False
Self.PortaAberta = False
Self.SensorTemperatura = 25.0
Self.SensorUmidade = 50.0
Self.UsoContador = 0
Self.ManutencaoAlerta = False
Self.VentilacaoAtiva = False

// Método para verificar se a porta está aberta
PROCEDURE VerificarPorta() : boolean
RESULT Self.PortaAberta

// Método para ligar o micro-ondas
PROCEDURE Ligar()
IF NOT Self.VerificarPorta() THEN
Self.Ligado = True
Self.VentilacaoAtiva = True
Info("Micro-ondas ligado.")
ELSE
Info("Erro: Porta está aberta.")
END

// Método para desligar o micro-ondas
PROCEDURE Desligar()
Self.Ligado = False
Self.VentilacaoAtiva = False
Info("Micro-ondas desligado.")

// Método para ajustar o tempo
PROCEDURE AjustarTempo(t is int)
IF t > 0 AND t <= 3600 THEN
Self.Tempo = t
Info("Tempo ajustado para " + Self.Tempo + " segundos.")
ELSE
Info("Erro: Tempo inválido.")
END

// Método para ajustar a potência
PROCEDURE AjustarPotencia(p is int)
IF p > 0 AND p <= 10 THEN
Self.Potencia = p
Info("Potência ajustada para " + Self.Potencia + ".")
ELSE
Info("Erro: Potência inválida.")
END

// Método para iniciar o micro-ondas
PROCEDURE Iniciar()
IF Self.Ligado AND NOT Self.VerificarPorta() AND Self.Tempo > 0 THEN
Info("Micro-ondas iniciado.")
// Simulação do funcionamento do micro-ondas
WHILE Self.Tempo > 0
IF Self.SensorTemperatura > 100.0 THEN
Info("Alerta: Temperatura elevada. Desligando por segurança.")
Self.Desligar()
BREAK
END
IF Self.SensorUmidade > 70.0 THEN
Info("Alerta: Umidade elevada. Desligando por segurança.")
Self.Desligar()
BREAK
END
Info("Tempo restante: " + Self.Tempo + " segundos.")
ThreadPause(1000) // Pausa de 1 segundo
Self.Tempo--
END
IF Self.Ligado THEN
Info("Ciclo de cozimento concluído.")
Self.Desligar()
Self.RegistrarUso()
Self.VerificarManutencao()
END
ELSE
Info("Erro: Certifique-se de que o micro-ondas está ligado, a porta está fechada e o tempo foi ajustado.")
END

// Método para abrir a porta
PROCEDURE AbrirPorta()
Self.PortaAberta = True
Info("Porta aberta.")

// Método para fechar a porta
PROCEDURE FecharPorta()
Self.PortaAberta = False
Info("Porta fechada.")

// Métodos para sensores de segurança
PROCEDURE AtualizarSensorTemperatura(temp is real)
Self.SensorTemperatura = temp

PROCEDURE AtualizarSensorUmidade(humidity is real)
Self.SensorUmidade = humidity

// Método para registrar o uso do micro-ondas
PROCEDURE RegistrarUso()
Self.UsoContador++
Info("Micro-ondas usado " + Self.UsoContador + " vezes.")

// Método para verificar a necessidade de manutenção
PROCEDURE VerificarManutencao()
IF Self.UsoContador >= 100 THEN
Self.ManutencaoAlerta = True
Info("Alerta: Necessário realizar manutenção.")
ELSE
Self.ManutencaoAlerta = False
END

// Método para simular o display digital
PROCEDURE MostrarDisplay()
Info("Display: Tempo restante - " + Self.Tempo + " segundos. Potência - " + Self.Potencia)

// Método para parada de emergência
PROCEDURE ParadaEmergencia()
Self.Desligar()
Info("Parada de emergência acionada. Micro-ondas desligado.")

END

// Função Principal
PROCEDURE Main()
// Instancia a classe Microondas
meuMicroondas is Microondas = new Microondas

// Exemplos de uso
meuMicroondas:AbrirPorta()
meuMicroondas:FecharPorta()
meuMicroondas:Ligar()
meuMicroondas:AjustarTempo(60)
meuMicroondas:AjustarPotencia(7)
// Atualiza sensores antes de iniciar
meuMicroondas:AtualizarSensorTemperatura(25.0)
meuMicroondas:AtualizarSensorUmidade(50.0)
meuMicroondas:Iniciar()

// Simula a parada de emergência
meuMicroondas:ParadaEmergencia()

// Mostra o display
meuMicroondas:MostrarDisplay()

// Chama a função principal
Main()
```

### Explicações das Melhorias

1. **Verificação de Porta Trancada:** Verificamos se a porta está corretamente fechada antes de ligar o micro-ondas.
2. **Sistema de Ventilação:** Ativamos a ventilação ao ligar o micro-ondas e desativamos ao desligar.
3. **Manutenção Programada:** Monitoramos o número de usos do micro-ondas e alertamos quando atingir um limite (por exemplo, 100 usos) para manutenção.
4. **Registro de Uso:** Incrementamos um contador toda vez que o micro-ondas é usado.
5. **Alarmes de Segurança:** Adicionamos alertas informativos quando os sensores detectam problemas de temperatura ou umidade.
6. **Display Digital:** Simulamos um display digital para mostrar o tempo restante e a potência.
7. **Botão de Parada de Emergência:** Implementamos um método para parada de emergência que pode ser acionado a qualquer momento para desligar o micro-ondas.

Essas melhorias tornam o micro-ondas mais seguro e funcional, adicionando camadas extras de segurança e funcionalidades práticas.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Registered member
3,754 messages
Posted on July, 01 2024 - 10:00 AM
Agora vamos converter o exemplo da classe `Microondas` acima hem C para sistemas embarcados. O código incluirá comentários explicativos para cada parte, abordando todas as melhorias e recursos.

### Código em C para Sistema Embarcado

```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>

// Definições de constantes
#define MAX_TEMPO 3600 // 1 hora em segundos
#define MAX_POTENCIA 10 // Potência de 1 a 10
#define LIMITE_USO 100 // Limite de usos para manutenção
#define TEMPERATURA_SEGURA 100.0 // Temperatura máxima segura em graus Celsius
#define UMIDADE_SEGURA 70.0 // Umidade máxima segura em porcentagem

// Estrutura da Classe Microondas
typedef struct {
int tempo;
int potencia;
bool ligado;
bool portaAberta;
float sensorTemperatura;
float sensorUmidade;
int usoContador;
bool manutencaoAlerta;
bool ventilacaoAtiva;
} Microondas;

// Inicializa o micro-ondas com valores padrão
void inicializarMicroondas(Microondas* m) {
m->tempo = 0;
m->potencia = 5;
m->ligado = false;
m->portaAberta = false;
m->sensorTemperatura = 25.0;
m->sensorUmidade = 50.0;
m->usoContador = 0;
m->manutencaoAlerta = false;
m->ventilacaoAtiva = false;
}

// Verifica se a porta está aberta
bool verificarPorta(Microondas* m) {
return m->portaAberta;
}

// Liga o micro-ondas se a porta estiver fechada
void ligar(Microondas* m) {
if (!verificarPorta(m)) {
m->ligado = true;
m->ventilacaoAtiva = true;
printf("Micro-ondas ligado.\n");
} else {
printf("Erro: Porta está aberta.\n");
}
}

// Desliga o micro-ondas
void desligar(Microondas* m) {
m->ligado = false;
m->ventilacaoAtiva = false;
printf("Micro-ondas desligado.\n");
}

// Ajusta o tempo de cozimento
void ajustarTempo(Microondas* m, int t) {
if (t > 0 && t <= MAX_TEMPO) {
m->tempo = t;
printf("Tempo ajustado para %d segundos.\n", m->tempo);
} else {
printf("Erro: Tempo inválido.\n");
}
}

// Ajusta a potência de cozimento
void ajustarPotencia(Microondas* m, int p) {
if (p > 0 && p <= MAX_POTENCIA) {
m->potencia = p;
printf("Potência ajustada para %d.\n", m->potencia);
} else {
printf("Erro: Potência inválida.\n");
}
}

// Inicia o micro-ondas
void iniciar(Microondas* m) {
if (m->ligado && !verificarPorta(m) && m->tempo > 0) {
printf("Micro-ondas iniciado.\n");
// Simulação do funcionamento do micro-ondas
while (m->tempo > 0) {
if (m->sensorTemperatura > TEMPERATURA_SEGURA) {
printf("Alerta: Temperatura elevada. Desligando por segurança.\n");
desligar(m);
break;
}
if (m->sensorUmidade > UMIDADE_SEGURA) {
printf("Alerta: Umidade elevada. Desligando por segurança.\n");
desligar(m);
break;
}
printf("Tempo restante: %d segundos\n", m->tempo);
sleep(1); // Pausa de 1 segundo
m->tempo--;
}
if (m->ligado) {
printf("Ciclo de cozimento concluído.\n");
desligar(m);
registrarUso(m);
verificarManutencao(m);
}
} else {
printf("Erro: Certifique-se de que o micro-ondas está ligado, a porta está fechada e o tempo foi ajustado.\n");
}
}

// Abre a porta do micro-ondas
void abrirPorta(Microondas* m) {
m->portaAberta = true;
printf("Porta aberta.\n");
}

// Fecha a porta do micro-ondas
void fecharPorta(Microondas* m) {
m->portaAberta = false;
printf("Porta fechada.\n");
}

// Atualiza o valor do sensor de temperatura
void atualizarSensorTemperatura(Microondas* m, float temp) {
m->sensorTemperatura = temp;
}

// Atualiza o valor do sensor de umidade
void atualizarSensorUmidade(Microondas* m, float humidity) {
m->sensorUmidade = humidity;
}

// Registra o uso do micro-ondas
void registrarUso(Microondas* m) {
m->usoContador++;
printf("Micro-ondas usado %d vezes.\n", m->usoContador);
}

// Verifica a necessidade de manutenção
void verificarManutencao(Microondas* m) {
if (m->usoContador >= LIMITE_USO) {
m->manutencaoAlerta = true;
printf("Alerta: Necessário realizar manutenção.\n");
} else {
m->manutencaoAlerta = false;
}
}

// Simula um display digital
void mostrarDisplay(Microondas* m) {
printf("Display: Tempo restante - %d segundos. Potência - %d\n", m->tempo, m->potencia);
}

// Aciona a parada de emergência
void paradaEmergencia(Microondas* m) {
desligar(m);
printf("Parada de emergência acionada. Micro-ondas desligado.\n");
}

// Função Principal
int main() {
// Instancia o micro-ondas
Microondas meuMicroondas;
inicializarMicroondas(&meuMicroondas);

// Exemplos de uso
abrirPorta(&meuMicroondas);
fecharPorta(&meuMicroondas);
ligar(&meuMicroondas);
ajustarTempo(&meuMicroondas, 60);
ajustarPotencia(&meuMicroondas, 7);
// Atualiza sensores antes de iniciar
atualizarSensorTemperatura(&meuMicroondas, 25.0);
atualizarSensorUmidade(&meuMicroondas, 50.0);
iniciar(&meuMicroondas);

// Simula a parada de emergência
paradaEmergencia(&meuMicroondas);

// Mostra o display
mostrarDisplay(&meuMicroondas);

return 0;
}
```

### Explicação do Código

1. **Definições de constantes:** Estabelecemos limites de tempo, potência, número de usos para manutenção, temperatura e umidade seguras.
2. **Estrutura da Classe `Microondas`:** Definimos a estrutura que representa o estado do micro-ondas, incluindo tempo, potência, estado de ligado/desligado, estado da porta, sensores de temperatura e umidade, contador de usos, alerta de manutenção e estado da ventilação.
3. **Inicialização:** A função `inicializarMicroondas` inicializa o micro-ondas com valores padrão.
4. **Verificação de Porta:** A função `verificarPorta` verifica se a porta está aberta.
5. **Ligar/Desligar:** As funções `ligar` e `desligar` controlam o estado de ligado/desligado do micro-ondas, ativando ou desativando a ventilação.
6. **Ajuste de Tempo e Potência:** As funções `ajustarTempo` e `ajustarPotencia` ajustam o tempo e a potência do micro-ondas, validando os valores.
7. **Iniciar:** A função `iniciar` inicia o ciclo de cozimento, monitorando os sensores de temperatura e umidade para segurança.
8. **Abrir/Fechar Porta:** As funções `abrirPorta` e `fecharPorta` simulam a abertura e fechamento da porta.
9. **Atualização de Sensores:** As funções `atualizarSensorTemperatura` e `atualizarSensorUmidade` atualizam os valores dos sensores de segurança.
10. **Registro de Uso e Verificação de Manutenção:** As funções `registrarUso` e `verificarManutencao` monitoram o uso do micro-ondas e alertam quando é necessária manutenção.
11. **Display Digital:** A função `mostrarDisplay` simula a exibição de informações em um display digital.
12. **Parada de Emergência:** A função `paradaEmergencia` permite interromper imediatamente o funcionamento do micro-ondas por motivos de segurança.
13. **Função Principal:** No `main`, instanciamos o micro-ondas e demonstramos o uso das funções implementadas.

Este código fornece uma implementação detalhada e segura do micro-ondas em C para sistemas embarcados, com comentários explicativos para cada parte.


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/