Temp logger for EE Web part 2

Dependencies:   mbed

main.cpp

Committer:
monpjc
Date:
2012-10-08
Revision:
0:5fefec34f0d3
Child:
1:6db2c0502c2c

File content as of revision 0:5fefec34f0d3:

#include "mbed.h"


void button_FSM( void );
void max31855( void );
void init_max31855( void );

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
DigitalIn  button(p21);
AnalogIn   Ain1(p19);
AnalogIn   Ain2(p20);
Serial     pc(USBTX, USBRX);
DigitalOut spi_clk(p7);
DigitalOut spi_cs(p8);
DigitalIn  spi_data(p6);

int enable;
int button_state;
int record_state;
int spi_data_in_temp;
int spi_data_in;
float A1, A2;

int main()
{
    enable = 0;
    button_state = 0;
    record_state = 0;
    init_max31855();
    
    printf("Data Logger Ready\r\n");
    
    while(1)
    {
        wait(1.0);
        button_FSM();
        max31855();
        if( enable == 1 )
        {
            A1 = Ain1.read_u16();
            A2 = Ain2.read_u16();
            printf("Ain1=%f Ain2=%f t'c=%d\r\n", A1, A2, spi_data_in);
        }
    }
}

void max31855( void )
{
    int bits = 0;

    spi_data_in_temp = 0;

    spi_clk = 0;
    spi_cs = 0;
    wait(0.01);
    
    while( bits < 32 )
    {
        spi_clk = 1;
        spi_clk = 1;
        if( bits > 0 && bits < 12 )
        {
            spi_data_in_temp = (spi_data_in_temp *2) + spi_data;
        }
        spi_clk = 0;
        bits++;
    }
    spi_data_in = spi_data_in_temp;
    spi_cs = 1;
}

void init_max31855( void )
{
    spi_cs = 1;
    spi_clk = 0;
    spi_data_in_temp = 0;
    spi_data_in = 0;
}

void button_FSM( void )
{
    if( enable == 0 )
    {
        switch( button_state )
        {
            default:
            case 0:
                if( button == 1 )
                    button_state = 1;
                else
                    button_state = 0;
                break;
                
            case 1:
                if( button == 1 )
                    button_state = 2;
                else
                    button_state = 0;
                break;
                
            case 2:
                if( button == 1 )
                    button_state = 3;
                else
                    button_state = 0;
                break;
                
            case 3:
                if( button == 1 )
                    button_state = 4;
                else
                    button_state = 0;
                break;
                
            case 4:
                enable = 1;
                button_state = 0;
                printf("Recording...\r\n");
                break;
        }
    }
    else
    {
        switch( button_state )
        {
            default:
            case 0:
                if( button == 1 )
                    button_state = 1;
                else
                    button_state = 0;
                break;
                
            case 1:
                if( button == 1 )
                    button_state = 2;
                else
                    button_state = 0;
                break;
                
            case 2:
                if( button == 1 )
                    button_state = 3;
                else
                    button_state = 0;
                break;
                
            case 3:
                if( button == 1 )
                    button_state = 4;
                else
                    button_state = 0;
                break;
                
            case 4:
                enable = 0;
                button_state = 0;
                printf("STOPPED!\r\n");
                break;
        }
    }
    switch( button_state )
    {
        default:
        case 0:
            led1 = 0;
            led2 = 0;
            led3 = 0;
            led4 = 0;
            break;
            
        case 1:
            led1 = 1;
            led2 = 0;
            led3 = 0;
            led4 = 0;
            break;
            
        case 2:
            led1 = 1;
            led2 = 1;
            led3 = 0;
            led4 = 0;
            break;
            
        case 3:
            led1 = 1;
            led2 = 1;
            led3 = 1;
            led4 = 0;
            break;
            
        case 4:
            led1 = 1;
            led2 = 1;
            led3 = 1;
            led4 = 1;
            break;
    }
}