m3pi for proj2
Dependencies: RemoteIR m3pi mbed-rtos mbed
LightCommunication.cpp@6:02f045d7695d, 2017-05-10 (annotated)
- Committer:
- Kristof@LAPTOP-FT09DA9V
- Date:
- Wed May 10 00:46:48 2017 +0200
- Revision:
- 6:02f045d7695d
- Parent:
- 5:5d2beac511c1
- Child:
- 7:1d77c7e0208c
added communication
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 1 | // |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 2 | // Created by Kristof on 5/9/2017. |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 3 | // |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 4 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 5 | #include "LightCommunication.h" |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 6 | |
Kristof@LAPTOP-FT09DA9V.home | 4:9580760cdd1f | 7 | float LightCommunication::left = 0; |
Kristof@LAPTOP-FT09DA9V.home | 4:9580760cdd1f | 8 | float LightCommunication::right = 0; |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 9 | Serial LightCommunication::device(p14,p15); |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 10 | ReceiverIR LightCommunication::ir_rx(p21); |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 11 | Mutex LightCommunication::mut; |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 12 | |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 13 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 14 | LightCommunication::LightCommunication() { |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 15 | left,right = 0; |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 16 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 17 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 18 | LightCommunication::~LightCommunication() { |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 19 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 20 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 21 | |
Kristof@LAPTOP-FT09DA9V | 5:5d2beac511c1 | 22 | void LightCommunication::getSerial(char * test) { |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 23 | if(device.readable()) { |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 24 | device.scanf("%s",test); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 25 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 26 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 27 | |
Kristof@LAPTOP-FT09DA9V | 5:5d2beac511c1 | 28 | void LightCommunication::getIRStyle(uint8_t * buf) { |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 29 | RemoteIR::Format format; |
Kristof@LAPTOP-FT09DA9V.home | 3:ecb3fa0406e8 | 30 | if (ir_rx.getState() == ReceiverIR::Received) { |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 31 | ir_rx.getData(&format, buf, sizeof(buf) * 8); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 32 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 33 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 34 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 35 | void LightCommunication::receiveData() { |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 36 | LightCommunication::mut.lock(); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 37 | //uint8_t * data = LightCommunication::getIRStyle(); |
Kristof@LAPTOP-FT09DA9V | 5:5d2beac511c1 | 38 | char data[3]; |
Kristof@LAPTOP-FT09DA9V | 5:5d2beac511c1 | 39 | LightCommunication::getSerial(data); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 40 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 41 | printf("%X \n",data[2]); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 42 | printf("%d \n",data[2]); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 43 | if (OWN_ID == (int) data[0]) { |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 44 | left = LightCommunication::toFloat(data[1]); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 45 | right = LightCommunication::toFloat(data[2]); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 46 | } |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 47 | |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 48 | LightCommunication::mut.unlock(); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 49 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 50 | |
Kristof@LAPTOP-FT09DA9V.home | 2:70240992e869 | 51 | float LightCommunication::getRight(float cur_right){ |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 52 | float r = right - cur_right; |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 53 | if (r>0){ |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 54 | return (float)(cur_right + 0.005); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 55 | }else if (r<0){ |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 56 | |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 57 | return (float)(cur_right -0.005); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 58 | }else{ |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 59 | return cur_right; |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 60 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 61 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 62 | |
Kristof@LAPTOP-FT09DA9V.home | 2:70240992e869 | 63 | float LightCommunication::getLeft(float cur_left){ |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 64 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 65 | mut.lock(); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 66 | float l = left - cur_left; |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 67 | if (l>0){ |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 68 | return (float)(cur_left + 0.005); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 69 | }else if (l<0){ |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 70 | return (float)(cur_left -0.005); |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 71 | }else{ |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 72 | return cur_left; |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 73 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 74 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 75 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 76 | float LightCommunication::toFloat(int8_t a) { |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 77 | return ((float)a)/100; |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 78 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 79 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 80 | bool LightCommunication::needsToStop() { |
Kristof@LAPTOP-FT09DA9V | 6:02f045d7695d | 81 | return right == 0 && left == 0; |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 82 | } |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 83 | |
Kristof@LAPTOP-FT09DA9V.home | 1:76cff32344d1 | 84 |