m3pi for proj2

Dependencies:   RemoteIR m3pi mbed-rtos mbed

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?

UserRevisionLine numberNew 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