Final Version

Dependencies:   C12832 LM75B PWM_Tone_Library mbed Grove_Air_Quality_Sensor_Library

main.cpp

Committer:
Fleishmachine
Date:
2017-03-15
Revision:
6:6ae884c9757a
Parent:
5:4d8495cf1c10
Child:
7:9f4b7b55f902

File content as of revision 6:6ae884c9757a:

#include "mbed.h"
#include "pwm_tone.h"
#include "C12832.h"
Serial pc(USBTX, USBRX);
PwmOut Buzzer(D5);
C12832 lcd (p5, p7, p6, p8, p11);
AnalogIn sensor(p17);
PwmOut spkr(p26);
PwmOut r (p23); // red light
PwmOut g (p24); // green light
PwmOut b (p25); // blue light

PwmOut Ctrl1(p21); //relay
PwmOut Ctrl2(p22); //relay

BusOut leds(LED1,LED2,LED3,LED4); // blue LEDs that we can still use  



BusIn Up(p15);
BusIn Down(p12);
BusIn Left(p13);
BusIn Right(p16);

/* float C_3 = 1000000/Do3,  // can we erease it??
       Cs_3 = 1000000/Do3s,
       D_3 = 1000000/Re3,
       Ds_3 = 1000000/Re3s,
       E_3 = 1000000/Mi3,
       F_3 = 1000000/Fa3,
       Fs_3 = 1000000/Fa3s,
       G_3 = 1000000/So3,
       Gs_3 = 1000000/So3s,
       A_3 = 1000000/La3,
       As_3 = 1000000/La3s,
       B_3 = 1000000/Ti3,
       C_4 = 1000000/Do4,
       Cs_4 = 1000000/Do4s,
       D_4 = 1000000/Re4,
       Ds_4 = 1000000/Re4s,
       E_4 = 1000000/Mi4,
       F_4 = 1000000/Fa4,
       Fs_4 = 1000000/Fa4s,
       G_4 = 1000000/So4,
       Gs_4 = 1000000/So4s,
       A_4 = 1000000/La4,
       As_4 = 1000000/La4s,
       B_4 = 1000000/Ti4,
       C_5 = 1000000/Do5,
       Cs_5 = 1000000/Do5s,
       D_5 = 1000000/Re5,
       Ds_5 = 1000000/Re5s,
       E_5 = 1000000/Mi5,
       F_5 = 1000000/Fa5,
       Fs_5 = 1000000/Fa5s,
       G_5 = 1000000/So5,
       Gs_5 = 1000000/So5s,
       A_5 = 1000000/La5,
       As_5 = 1000000/La5s,
       B_5 = 1000000/Ti5;
       
int tones[] = {E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, D_4, 0, E_4, G_4, G_4, 0, 
                             E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, E_4, D_4, C_4, 0, 0, 0};
int tones_num = 32;
*/
                         
float multiplier = 50;    // this number got me closest to the reading on my multimeter temp probe
float temp;               // calculated temperature
int count;                // for computing average reading
float total;
float average;
float max = 22;
float min = 20;
int Boiler_max = min + 2;
void initialize();
void buzz()
{
       for (float i=2000.0; i<7000.0; i+=1000) {
            spkr.period(0.5/i);
            spkr=0.1;
            wait(0.1);
        }
        spkr=0.0;
}

int main() 
{
    initialize(); 
    count = 0;
    total = 0.0;
    r = 1;
    b = 1;
    g = 1;
    buzz();
    
    
    
    
    while (1) {
        // formula is analog reading * multiplier

        temp = sensor.read() * multiplier;
        count++;
        total += temp;
        average = total / count;
        // min = min * 1;
        
           if (Up) 
        {
            
            min++;
        }
            
        if (Down)
        {
            
            min--;        
        }     
           if (Left) 
        {
            
            max--;
        }
            
        if (Right)
        {
            
            max++;        
        }   
              
                
        if(temp > max)
        {
         r = 0; // red 
         g = 1; // green
         b = 1; // blue 
         Ctrl1 = 1;
         Ctrl2 = 0;
         
         // value 0 - max
         // value 1 - zero
         // so values closer to zero 0 brighter than closer to 1
         // buzz();
         
        }
        else
        {
         r = 1;
         g = 0.25;
         b = 1;
         Ctrl1 = 1;
         Ctrl2 = 1;
        }
        
        if(temp < min)
        {
         r = 1;
         g = 1;
         b = 0.25;
         Ctrl1 = 0;
         Ctrl2 = 1;
         
        }
        else
        {
        
        }
        
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("Temp= %6.2f  Avg= %5.1f ", temp  , average );
        lcd.locate(0,12);
        lcd.printf("min= %6.0f max= %6.0f", min, max);
        
        wait(0.5); 
        }

}

void initialize()
{
    lcd.cls();
    lcd.locate(0,0);
}