m3pi for proj2

Dependencies:   RemoteIR m3pi mbed-rtos mbed

Committer:
Kristof@LAPTOP-FT09DA9V
Date:
Wed May 10 00:01:25 2017 +0200
Revision:
5:5d2beac511c1
Parent:
4:9580760cdd1f
Child:
6:02f045d7695d
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 1:76cff32344d1 30 int bitcount;
Kristof@LAPTOP-FT09DA9V.home 3:ecb3fa0406e8 31 if (ir_rx.getState() == ReceiverIR::Received) {
Kristof@LAPTOP-FT09DA9V.home 3:ecb3fa0406e8 32 bitcount = ir_rx.getData(&format, buf, sizeof(buf) * 8);
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 33 }
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 34 }
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 35
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 36 void LightCommunication::receiveData() {
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 37 mut.lock();
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 38 //uint8_t * data = LightCommunication::getIRStyle();
Kristof@LAPTOP-FT09DA9V 5:5d2beac511c1 39 char data[3];
Kristof@LAPTOP-FT09DA9V 5:5d2beac511c1 40 LightCommunication::getSerial(data);
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 41
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 42 printf("%X \n",data[2]);
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 43 printf("%d \n",data[2]);
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 44 if (OWN_ID == (int) data[0]) {
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 45 left = LightCommunication::toFloat(data[1]);
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 46 right = LightCommunication::toFloat(data[2]);
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 47 }
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 48 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.home 1:76cff32344d1 54 return (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.home 1:76cff32344d1 57 return (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.home 1:76cff32344d1 68 return (cur_left + 0.005);
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 69 }else if (l<0){
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 70 return (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.home 1:76cff32344d1 81 if (right == 0 && left == 0){
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 82 return true;
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 83 }
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 84 return false;
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 85 }
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 86
Kristof@LAPTOP-FT09DA9V.home 1:76cff32344d1 87