Paul Clarke
/
temperature_logger_Pt2
Temp logger for EE Web part 2
Diff: main.cpp
- Revision:
- 0:5fefec34f0d3
- Child:
- 1:6db2c0502c2c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Oct 08 07:38:54 2012 +0000 @@ -0,0 +1,203 @@ +#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; + } +}