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

Dependencies:   microbit

Committer:
kinga
Date:
Fri Feb 24 13:16:04 2017 +0000
Revision:
8:c0e98b2fc93a
Parent:
7:e3d1f064894b
little refactor: working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kinga 1:17905d919813 1 #include "LedMatrix.h"
kinga 0:25e1d324df77 2
kinga 0:25e1d324df77 3 MicroBit uBit;
kinga 0:25e1d324df77 4 MicroBitSerial serial(USBTX, USBRX);
kinga 0:25e1d324df77 5 MicroBitI2C i2c(I2C_SDA0, I2C_SCL0);
kinga 0:25e1d324df77 6 MicroBitAccelerometer accelerometer(i2c);
kinga 0:25e1d324df77 7 MicroBitStorage storage;
kinga 0:25e1d324df77 8 MicroBitCompass compass(i2c, accelerometer, storage);
kinga 0:25e1d324df77 9
kinga 0:25e1d324df77 10 ManagedString getCompassHeading()
kinga 0:25e1d324df77 11 {
kinga 0:25e1d324df77 12 int heading = compass.heading();
kinga 0:25e1d324df77 13 return (ManagedString)heading + ',';
kinga 0:25e1d324df77 14 }
kinga 0:25e1d324df77 15
kinga 0:25e1d324df77 16 ManagedString getAccelerometerVectors()
kinga 0:25e1d324df77 17 {
kinga 0:25e1d324df77 18 ManagedString accelerometerVectorsString = "";
kinga 0:25e1d324df77 19 vector<int> accelerometerVectors;
kinga 0:25e1d324df77 20 accelerometerVectors.push_back(uBit.accelerometer.getX());
kinga 0:25e1d324df77 21 accelerometerVectors.push_back(uBit.accelerometer.getY());
kinga 0:25e1d324df77 22 accelerometerVectors.push_back(uBit.accelerometer.getZ());
kinga 0:25e1d324df77 23 for (int i = 0; i < accelerometerVectors.size(); ++i)
kinga 0:25e1d324df77 24 {
kinga 0:25e1d324df77 25 accelerometerVectorsString = accelerometerVectorsString + (ManagedString)accelerometerVectors[i] + ',';
kinga 0:25e1d324df77 26 }
kinga 0:25e1d324df77 27 return accelerometerVectorsString;
kinga 0:25e1d324df77 28 }
kinga 0:25e1d324df77 29
kinga 0:25e1d324df77 30 ManagedString getMessage()
kinga 0:25e1d324df77 31 {
kinga 0:25e1d324df77 32 return getCompassHeading() + getAccelerometerVectors();
kinga 0:25e1d324df77 33 }
kinga 0:25e1d324df77 34
kinga 6:e316416cae08 35 ManagedString readData()
kinga 0:25e1d324df77 36 {
kinga 6:e316416cae08 37 int messageSize = 2;
kinga 6:e316416cae08 38 return serial.read(messageSize, ASYNC);
kinga 6:e316416cae08 39 }
kinga 0:25e1d324df77 40
kinga 0:25e1d324df77 41 void sendData()
kinga 0:25e1d324df77 42 {
kinga 0:25e1d324df77 43 serial.send(getMessage(), ASYNC);
kinga 6:e316416cae08 44 }
kinga 6:e316416cae08 45
kinga 8:c0e98b2fc93a 46 void switchLedMatrix(ManagedString buffer, LedMatrix& myLedMatrix)
kinga 6:e316416cae08 47 {
kinga 6:e316416cae08 48 int offsetToGetInt = 48;
kinga 8:c0e98b2fc93a 49 myLedMatrix.setLedMatrix((int)buffer.charAt(0) - offsetToGetInt, (int)buffer.charAt(1) - offsetToGetInt);
kinga 8:c0e98b2fc93a 50 uBit.display.print(myLedMatrix.getMatrixImage());
kinga 0:25e1d324df77 51 }
kinga 6:e316416cae08 52
kinga 0:25e1d324df77 53
kinga 0:25e1d324df77 54 int main()
kinga 0:25e1d324df77 55 {
kinga 0:25e1d324df77 56 uBit.init();
kinga 7:e3d1f064894b 57 LedMatrix myLedMatrix;
kinga 0:25e1d324df77 58 while(1)
kinga 1:17905d919813 59 {
kinga 8:c0e98b2fc93a 60 ManagedString buffer = readData();
kinga 8:c0e98b2fc93a 61 if (buffer.length() != 0)
kinga 8:c0e98b2fc93a 62 {
kinga 8:c0e98b2fc93a 63 switchLedMatrix(buffer, myLedMatrix);
kinga 8:c0e98b2fc93a 64 }
kinga 0:25e1d324df77 65 sendData();
kinga 0:25e1d324df77 66 uBit.sleep(500);
kinga 0:25e1d324df77 67 }
kinga 0:25e1d324df77 68
kinga 0:25e1d324df77 69 release_fiber();
kinga 6:e316416cae08 70 }