Test with EzSbc2 LPC1347 board and Adafruit 0,96" display, connected to i2c

Dependencies:   Adafruit_GFX I2CDevLib MPU9150 SmallGUI USBDevice WeeESP8266 mbed nRF24L01P

main.txt

Committer:
JojoS
Date:
2017-04-24
Revision:
3:8d93e16c38a6
Parent:
2:2eb3f38f9141

File content as of revision 3:8d93e16c38a6:

#include "mbed.h"
#include "Adafruit_SSD1306.h"
#include "MPU9150.h"
#include "USBSerial.h"
#include "Controls.h"
#include "ArduinoAPI.h"
#include "ESP8266.h"


//#define USE_USBSERIAL

// modified für EzSBC2

DigitalOut ledRed(P1_16);
DigitalOut ledGreen(P1_15);

float sum = 0;
uint32_t sumCount = 0;
char buffer[14];

Timer t;
#ifdef USE_USBSERIAL
USBSerial pc;
#endif

// an SPI sub-class that provides a constructed default
class SPI2 : public SPI
{
public:
    SPI2(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk) {
        format(8,3);
        frequency(2000000);
    };
};

// an I2C sub-class that provides a constructed default
class I2C2 : public I2C
{
public:
    I2C2(PinName sda, PinName scl) : I2C(sda, scl) {
        frequency(400000);
        start();
    };
};


I2C2 gI2C(P0_5, P0_4);
Adafruit_SSD1306_I2c gOled2(gI2C, NC, 0x78, 64, 128);
I2Cdev i2Cdev;
MPU9150 mpu(i2Cdev);

ArduinoSerial esp_uart(P1_13, P1_14);
ESP8266 wifi(esp_uart, 115200);

int main()
{
    uint16_t x=0;

    //while(1)
    {
        ledRed = 1;
        ledGreen = 0;
        wait(0.5);

        ledRed = 0;
        ledGreen = 1;
        wait(0.5);
    }

    int16_t y = 12;
    int16_t ySize = 4;
    int16_t yGap = 2;

    Canvas canvasBG(gOled2);
    barGraph bgAx(barGraph::bgHorizontal, 0, y, 127, y+ySize);
    canvasBG.addControl(bgAx);
    bgAx.setScale(-16383.0f, 16384.0f);
    y = y + ySize + yGap;

    barGraph bgAy(barGraph::bgHorizontal, 0, y, 127, y+ySize);
    canvasBG.addControl(bgAy);
    bgAy.setScale(-16383.0f, 16384.0f);
    y = y + ySize + yGap;

    barGraph bgAz(barGraph::bgHorizontal, 0, y, 127, y+ySize);
    canvasBG.addControl(bgAz);
    bgAz.setScale(-16383.0f, 16384.0f);
    y = y + ySize + yGap;

    barGraph bgGx(barGraph::bgHorizontal, 0, y, 127, y+ySize);
    canvasBG.addControl(bgGx);
    bgGx.setScale(-16383.0f, 16384.0f);
    y = y + ySize + yGap;

    barGraph bgGy(barGraph::bgHorizontal, 0, y, 127, y+ySize);
    canvasBG.addControl(bgGy);
    bgGy.setScale(-16383.0f, 16384.0f);
    y = y + ySize + yGap;

    barGraph bgGz(barGraph::bgHorizontal, 0, y, 127, y+ySize);
    canvasBG.addControl(bgGz);
    bgGz.setScale(-16383.0f, 16384.0f);

    gOled2.clearDisplay();
    gOled2.display();

    //gOled2.setTextCursor(1, 0);
    gOled2.printf("%ux%u OLED Display\r\n", gOled2.width(), gOled2.height());

#ifdef USE_USBSERIAL
    pc.printf("MPU6050 test\n\n");
    pc.printf("MPU6050 initialize \n");
#endif

    int16_t ax, ay, az;
    int16_t gx, gy, gz;

    mpu.initialize();

#ifdef USE_USBSERIAL
    pc.printf("MPU6050 testConnection \n");
#endif

    bool mpu6050TestResult = mpu.testConnection();

#ifdef USE_USBSERIAL
    if(mpu6050TestResult) {
        pc.printf("MPU6050 test passed \n");
    } else {
        pc.printf("MPU6050 test failed \n");
    }
#endif

    bool wifiOk = false;
    // wifi connect
    {
        wifiOk = wifi.setOprToStationSoftAP();

        if (wifiOk)
            wifiOk = wifi.joinAP("JojosWLan2", "1883057324535716");

        if (wifiOk)
            wifiOk = wifi.disableMUX();
            //wifiOk = wifi.enableMUX();

        if (wifiOk)
            wifiOk = wifi.registerUDP("192.168.100.74", 8090);

    }

    char buffer[32];
    while(1) {
        ledRed = !ledRed;
        gOled2.clearDisplay();

        mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
        //writing current accelerometer and gyro position
        //pc.printf("%d;%d;%d;%d;%d;%d\n",ax,ay,az,gx,gy,gz);

        if (wifiOk) {
            sprintf(buffer, "%i %i %i", ax, ay, az);
            wifi.send((const uint8_t*)buffer, strlen(buffer));
        }

        gOled2.setTextCursor(0, 0);
        gOled2.printf("wifi ok: %u\r", wifiOk);

        bgAx.setValue(ax);
        bgAy.setValue(ay);
        bgAz.setValue(az);

        bgGx.setValue(gx);
        bgGy.setValue(gy);
        bgGz.setValue(gz);

        canvasBG.draw();
        
        gOled2.display();

        x++;
        //wait(0.1);
    }
}