Repositório para o código final de Microcontroladores.

Dependencies:   BME280 MFRC522 mbed

main.cpp

Committer:
RickBadKan
Date:
2018-06-23
Revision:
1:9c4b2fdf3b67
Parent:
0:91215b8406ee
Child:
2:3dd81ff9eb1f

File content as of revision 1:9c4b2fdf3b67:

#include "mbed.h"

// Biblioteca do BME280: Temperatura e Pressão
#include "BME280.h"

// Biblioteca para utilização do RFID
#include "MFRC522.h"

// Declaração para utilização do serial bluetooth
Serial bluetooth(p9, p10);

// Declaração para utilização do sensor de temperatura e pressão
BME280 sensor_t_p(p28, p27);

// Declaração para utilização da bomba
PwmOut bomba(p21);

// Declaração para utilização do sensor de umidade
AnalogIn sensor_u(p15);

// Declaração para utilização do RFID
MFRC522 RFID(p11, p12, p13, p14, p8);

// Variável de verificação de autenticação
int autenticado = 0;

// Variável de entrada bluetooth
char input;



// Função de exibição dos sensores
void exibirInfo()
{
    int aux = 1;
    char sair;
    bluetooth.printf("Exibindo informacoes. 'S' para sair.");
    while (aux) {
        bluetooth.readable();
        sair = bluetooth.getc();
        bluetooth.printf("%2.2f C, %04.2f hPa\nUmidade: %3.3f%%", sensor_t_p.getTemperature(), sensor_t_p.getPressure(), (1-sensor_u.read()) * 100.0f);
    }
}



int main()
{
    bomba.period_ms(10);
    bluetooth.baud(9600);
    RFID.PCD_Init();

    bluetooth.printf("Bem vindo ao sistema de controle da estufa.\nPara acessar as configuracoes, identifique-se pelo cracha RFID.\n\n");


    while(1) {

        // Programa a ser executado caso esteja autenticado
        if (autenticado) {
            bluetooth.printf("\n\n\nSelecione a operacao desejada:\n");
            bluetooth.printf("\t(I)nformacoes de Pressao, Temperatura e Umidade\n");
            bluetooth.printf("\t(L)igar a Bomba\n");
            bluetooth.printf("\t(D)esligar a Bomba\n");
            bluetooth.printf("\t(S)air\n");

            if (bluetooth.readable()) {
//NAO TA ENTRANDO
                while (autenticado) {
                    bluetooth.printf("ENTREI\n\n");
                    input = bluetooth.getc();

                    switch (input) {
                        case 'I':
                            exibirInfo();
                            break;

                        case 'L':
                            bomba.write(0.5f);
                            break;


                        case 'D':
                            bomba.write(0.0f);
                            break;

                        case 'S':
                            autenticado = 0;
                            break;
                    }
                }
            }
        }

        // Procura o card
        if ( ! RFID.PICC_IsNewCardPresent()) {
            wait_ms(500);
            continue;
        }

        // Seleciona um dos cards
        if ( ! RFID.PICC_ReadCardSerial()) {
            wait_ms(500);
            continue;
        }

        autenticado = 1;

        bluetooth.printf("Card reconhecido, acesso concedido.\n\n");

        // Imprime Card UID
        bluetooth.printf("Card UID: ");
        for (uint8_t i = 0; i < RFID.uid.size; i++) {
            bluetooth.printf(" %X02", RFID.uid.uidByte[i]);
        }
        bluetooth.printf("\n\n---------------------------------------------------------------------------");
    }
}