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