
project for iot vives
Dependencies: mbed C12832 LM75B FXOS8700Q
Revision 0:3c9cd556e510, committed 2020-11-04
- Comitter:
- tweagle
- Date:
- Wed Nov 04 12:41:46 2020 +0000
- Commit message:
- project1-iot-simondeneve
Changed in this revision
diff -r 000000000000 -r 3c9cd556e510 C12832.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832.lib Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/chris/code/C12832/#7de323fa46fe
diff -r 000000000000 -r 3c9cd556e510 FXOS8700Q.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FXOS8700Q.lib Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/Freescale/code/FXOS8700Q/#aee7dea904e2
diff -r 000000000000 -r 3c9cd556e510 LM75B.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LM75B.lib Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/chris/code/LM75B/#6a70c9303bbe
diff -r 000000000000 -r 3c9cd556e510 StateMachine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/StateMachine.cpp Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,162 @@ +#include "StateMachine.h" +#include "mbed.h" +#include "EthernetInterface.h" +#include "LM75B.h" + + uint16_t temperature =(sensor.read()); + char upper = (temperature >> 8) & 0x00FF; + char lower = temperature & 0x00FF; + char pwm = (char)(pot1); + char id = 0x14; + + char payload[4] = {upper, lower, pwm, id}; + +StateMachine::StateMachine(){ + r = new PwmOut(D5); + g = new PwmOut(D9); + b = new PwmOut(D8); + + pot1 = new AnalogIn (A0); + pot2 = new AnalogIn(A1); + up = new DigitalIn(A2); + down = new DigitalIn(A3); + left = new DigitalIn(A4); + right = new DigitalIn(A5); + + lcd = new C12832(D11, D13, D12, D7, D10); + + sensor = new LM75B(D14,D15); + + led = new DigitalOut(LED1); + + + currentState = INIT; + } + +StateMachine::~StateMachine(){ + delete r; + delete g; + delete b; + delete pot1; + delete pot2; + delete up; + delete down; + delete left; + delete right; + + delete lcd; + + delete sensor; + + delete led; +} + +void StateMachine::start() +{ + while(true) + { +// switch(currentState) { +// case INIT: +// actionInit(); +// currentstate =; +// break; +// case BLUE: +// actionBlue(); +// currentState = INIT; +// break; +// case GREEN: +// actionGreen(); +// currentState = INIT; +// break; +// default: +// currentState = CERROR; +// return; + if(currentState == INIT){actionInit();} + if(currentState == SERVER) {actionServer();} + if(currentState == CLIENT) {actionClient();} + } +} + +void StateMachine::actionInit(){ + printf("Select left for server, right for client."); + if(left){currentState = SERVER;} + if(right){currentState = CLIENT;} + wait(1.0); + } + +void StateMachine::actionClient(){ + + printf("Client example\n\r"); + + EthernetInterface eth; + eth.set_network("192.168.0.20","255.255.255.0","192.168.0.1"); + eth.connect(); + + printf("The client IP address is '%s'\n\r", eth.get_ip_address()); + + TCPSocket socket; + socket.open(ð); + socket.connect("192.168.0.28",4000); + + + + payload[0] = upper; + payload[1] = lower; + payload[2] = pwm; + payload[3] = id; + + printf("%d\n", upper); + printf("%d\n", lower); + + // print hex value of temperature on lcd + lcd.printf("Temp %.1x\n", sensor.read() ); + printf(payload); + + socket.send(payload, 4); + socket.close(); + wait(1.0); + } + +void StateMachine::actionServer(){ + printf("Server example\n\r"); + + EthernetInterface eth; + eth.set_network("192.168.0.28","255.255.255.0","192.168.0.1"); + eth.connect(); + + printf("The Server IP address is '%s'\n\r", eth.get_ip_address()); + + TCPServer srv(ð); + + srv.bind(4000); + + srv.listen(); + + while(true){ + TCPSocket client; + SocketAddress client_addr; + char *buffer = "Hello TCP client!\r\n"; + + srv.accept(&client, &client_addr); + + printf("Accepted %s:%d\n\r", client_addr.get_ip_address(), + client_addr.get_port()); + + client.send(buffer, 256); + + char rbuffer[4]; + client.recv(rbuffer, sizeof rbuffer); + + uint8_t upper = rbuffer[0]; + uint8_t lower = rbuffer[1]; + uint8_t PWM = rbuffer[2]; + uint8_t ID = rbuffer[3]; + + float temp = ((upper << 8) | lower) / 256.00; + + printf("Temperature is %f\n", temp); + + client.close(); + wait(1.0); + } +}
diff -r 000000000000 -r 3c9cd556e510 StateMachine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/StateMachine.h Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,38 @@ +#ifndef STATEMACHINE_H +#define STATEMACHINE_H + +#include "mbed.h" +#include "LM75B.h" +#include "C12832.h" + +enum State {INIT, CLIENT, SERVER, CERROR}; + +class StateMachine { +private: + State currentState; + void actionInit(); + void actionClient(); + void actionServer(); + PwmOut* r; + PwmOut* g; + PwmOut* b; + AnalogIn* pot1; + AnalogIn* pot2; + DigitalIn* up; + DigitalIn* down; + DigitalIn* left; + DigitalIn* right; + + C12832* lcd; + + LM75B* sensor; + + DigitalOut* led; +public: + StateMachine(); + ~StateMachine(); + + void start(); +}; + +#endif \ No newline at end of file
diff -r 000000000000 -r 3c9cd556e510 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,8 @@ +#include "mbed.h" +#include "StateMachine.h" + +int main() +{ + StateMachine statemachine; + statemachine.start(); +}
diff -r 000000000000 -r 3c9cd556e510 mbed-os.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#e62a1b9236b44e70ae3b0902dc538481c04d455b
diff -r 000000000000 -r 3c9cd556e510 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Nov 04 12:41:46 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file