sss

Dependencies:   mbed Map

Revision:
0:eac841605c08
Child:
1:d935f9ed6be5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Mar 18 12:20:30 2019 +0000
@@ -0,0 +1,93 @@
+#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);
+    }
+    
+    
+    
+    
+}
\ No newline at end of file