m3pi for proj2

Dependencies:   RemoteIR m3pi mbed-rtos mbed

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?

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