Sends compass and accelerometer data, receives data and displays on LED matrix

Dependencies:   microbit

main.cpp

Committer:
kinga
Date:
2017-02-23
Revision:
7:e3d1f064894b
Parent:
6:e316416cae08
Child:
8:c0e98b2fc93a

File content as of revision 7:e3d1f064894b:

#include "LedMatrix.h"

MicroBit uBit;
MicroBitSerial serial(USBTX, USBRX);
MicroBitI2C i2c(I2C_SDA0, I2C_SCL0); 
MicroBitAccelerometer accelerometer(i2c); 
MicroBitStorage storage; 
MicroBitCompass compass(i2c, accelerometer, storage);

ManagedString getCompassHeading()
{
    int heading = compass.heading();
    return (ManagedString)heading + ',';
}

ManagedString getAccelerometerVectors()
{
    ManagedString accelerometerVectorsString = "";
    vector<int> accelerometerVectors;
    accelerometerVectors.push_back(uBit.accelerometer.getX());
    accelerometerVectors.push_back(uBit.accelerometer.getY());
    accelerometerVectors.push_back(uBit.accelerometer.getZ());
    for (int i = 0; i < accelerometerVectors.size(); ++i)
    {
        accelerometerVectorsString = accelerometerVectorsString + (ManagedString)accelerometerVectors[i] + ',';
    }
    return accelerometerVectorsString;
}

ManagedString getMessage()
{
    return getCompassHeading() + getAccelerometerVectors();
}

ManagedString readData()
{
    int messageSize = 2;
    return serial.read(messageSize, ASYNC);
}

void sendData()
{
    serial.send(getMessage(), ASYNC);
}  

void switchLedMatrix(LedMatrix matrix)
{
    ManagedString buffer = readData();
    int offsetToGetInt = 48;
    if (buffer.length() != 0)
    {
        matrix.setLedMatrix((int)buffer.charAt(0) - offsetToGetInt, (int)buffer.charAt(1) - offsetToGetInt);
        uBit.display.print(matrix.getMatrixImage());
    }
}


int main()
{
    uBit.init();
    LedMatrix myLedMatrix;
    while(1)
    {   
        switchLedMatrix(myLedMatrix);
        sendData();
        uBit.sleep(500);
    }
    
    release_fiber();
}