sss

Dependencies:   mbed Map

main.cpp

Committer:
pbdt1997
Date:
2019-03-18
Revision:
0:eac841605c08
Child:
1:d935f9ed6be5

File content as of revision 0:eac841605c08:

#include "mbed.h"              
#include <Map.hpp>

//Variable Declarations

Serial pc(USBTX, USBRX);

SPI spi(D11, D12, D13);//MOSI, MISO, SCLK
DigitalOut encode1(D10);//Encoder 1

char rx_in = 0, rx_out = 0;

char dataSize = 5;
char array[5];
char arraySize = sizeof(array);
char getData = 0;
char checkData = 0;
char encArr[2]= {255,255};
char encLength = 2;

/////////////////////////////

//Functions

void RX(int data){
    array[checkData] = data;
    checkData++;
    if(checkData == arraySize){
        getData = 1;
        checkData = 0;
    }
}

void RX_INT(){
    int data = pc.getc();
    RX(data);
}

float ConvertAngle(int encData){
    Map map(0, 16383, 0, 359);
    float angle = map.Calculate(encData);
    return angle;
    }

float ReadEncoder(int encid){
    if(encid == 1){
        encode1 = 0;
    }   
else{
    //encode2 = 0;
    }
    char *arrAdd = &encArr[0];
    int encData = spi.write(arrAdd, 2, arrAdd, 2);
  //  printf("encoder reads %d \n\r", encData);
    encData = encArr[0] * 256 + encArr[1];
    encode1 = 1;
    printf("encoder reads %d \n\r", encData);
    return ConvertAngle(encData/2);
}


void RX_INT();

//Main

int main() {
    pc.baud(250000);
    pc.attach(&RX_INT, Serial::RxIrq);
    
    encode1 = 1;
    
    spi.format(14, 3);
    spi.frequency(500000);
    
    
//Program Loop    
    while(true){
        //if(getData == 1){
          //  for(char i = 0; i < arraySize; i++){
//              printf("array[%d] = %d\n", i,array[i]);
            //    pc.putc(array[i]);
            //}
           // pc.putc('A');
          //  getData = 0;
        //}
        float encdat = ReadEncoder(1);
        printf("angle = %.2f \n\r", encdat);
    }
    
    
    
    
}