M0Board_WF
/
WF_lektion9-LM75B_state_maschine
a
Diff: main.cpp
- Revision:
- 0:620c051199c6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jan 28 07:48:11 2015 +0000 @@ -0,0 +1,94 @@ +/*M0-BOARD LPC11U24 VERSION 1.0 / HI/ENE/WF 09_2014 +BULME Graz / Elektronik 29 +Alternativ ohne Library für LM75B +*/ +#include "mbed.h" +#include "LM75B.h" + +DigitalOut Led1(LED1); +DigitalOut Led2(LED2); +DigitalOut Led3(LED3); +DigitalOut Led4(LED4); + +typedef enum { led_on, temp, led_off} state_t ; + +state_t state = led_on; + +/* function declaration */ +void maxTemp(); +void stateMachine(); + + +//Create an LM75B object at the default address (ADDRESS_0) +LM75B sensor(p28, p27); +int main() +{ +//Try to open the LM75B + if (sensor.open()) { + printf("Device detected!\n\r"); + while (1) { + + + Led4=1; + wait(0.2); + Led4=0; + wait(0.2); + + maxTemp() ; + stateMachine(); + wait(1); + + //Print the current temperature + // printf("Temp = %.3f\n\r", (float)sensor); + //Sleep for 0.5 seconds + wait(0.5); + } + } else { + error("Device not detected!\n"); + } +} + + +/* function declaration */ +void maxTemp(); + +void stateMachine() +{ + switch( state ) { + case led_on: + printf("STATE: led_on!\n\r"); + Led2=1; + Led3=1; + state = temp; + break; + + case temp: + printf("STATE: temp!\n\r"); + printf("Temp = %.3f\n\r", (float)sensor); + wait(0.5); + state = led_off; + break; + + case led_off: + printf("STATE: led_off!\n\r"); + Led2=0; + Led3=0; + state = led_on; + break; + } +} + +void maxTemp() +{ + /* local variable declaration */ + + + if (sensor > 29.0) { + Led1=1; + } + else + Led1=0; + + //return 0; + +} \ No newline at end of file