Sends out data over serial in such a format that it can be collected in packets by an esp8266.

Dependencies:   MCP32082Two mbed

main.cpp

Committer:
mmellor
Date:
2016-07-25
Revision:
0:09958db7e6fb

File content as of revision 0:09958db7e6fb:

#include "mbed.h"
#include "mcp3208.h"

//Packet Strategy One for UDP
//Send out data at 1ms as normal
//after specified numReads send out data with
//terminated character
//On UDP/ESP8266 side read until you see the termination character

int readCounter = 1; 
int numReads = 45; //This value is numDataSetsInPacket in matlab and arduino code
int counterNum = 0;

MCP3208 input1(dp2, dp1, dp6, dp9);

Serial pc(dp16,dp15);

Ticker datalog; //Create the timer object

char datastr0[5];
char datastr1[5];
char datastr2[5];
char datastr3[5];
char datastr4[5];
char datastr5[5];


// Credit: Erik Olieman
void intToString(char *buffer, int value)
{
    int temp;
    temp = value / 1000;
    buffer[0] = temp + '0';
    value = value - temp * 1000;

    temp = value / 100;
    buffer[1] = temp + '0';
    value = value - temp * 100;

    temp = value / 10;
    buffer[2] = temp + '0';
    value = value - temp * 10;

    temp = value / 1;
    buffer[3] = temp + '0';
    value = value - temp * 1;

    buffer[4] = '\0';
}

bool tickerActivated = false;

void log_data(){
    tickerActivated = true;
}

int main(){
    pc.baud(921600); //Set baud rate
    pc.printf("Working!!\n\r");

    datalog.attach_us(&log_data,1000); // 1000us = 1ms

    while(1) {
        intToString(datastr0,input1.binary(0));
        intToString(datastr1,input1.binary(1));
        intToString(datastr2,input1.binary(2));
        intToString(datastr3,input1.binary(3));
        intToString(datastr4,input1.binary(4));
        intToString(datastr5,input1.binary(5));
        
        if(tickerActivated == true) { //This is true every 1ms
            tickerActivated = false;
            if(readCounter == numReads){
                readCounter = 1;
                counterNum = counterNum + 1;
                if(counterNum >= 9999) counterNum = 0;
                pc.printf("%s,%s,%s,%s,%s,%s\n\r",datastr0,datastr1,datastr2,datastr3,datastr4,datastr5);
            }
            else{
                readCounter++;
                counterNum = counterNum + 1;
                if(counterNum >= 9999) counterNum = 0;
                
                pc.printf("%s,%s,%s,%s,%s,%s,",datastr0,datastr1,datastr2,datastr3,datastr4,datastr5);  
            }
        }
    }
}