FAE training 2019 demo code

main.cpp

Committer:
EamonnWalsh
Date:
2019-12-10
Revision:
0:9830d14e7908

File content as of revision 0:9830d14e7908:

#include "mbed.h"
#include "SPI_TFT_ILI9341.h"
#include "FT6206.h"

#include "ADXL362.h"
#include "Communication.h"
#include <SPI.h>

#include "Arial12x12.h"
#include "Arial24x23.h"
#include "Arial28x28.h"
#include "font_big.h"

//#include "ADT7420.h"

#define PIN_XP          A3
#define PIN_XM          A1
#define PIN_YP          A2
#define PIN_YM          A0
#define PIN_SCLK        D13
#define PIN_MISO        D12
#define PIN_MOSI        D11
#define PIN_CS_TFT      D10  // chip select pin
#define PIN_DC_TFT      D9   // data/command select pin.
#define PIN_RESET_TFT   D8
//#define PIN_BL_TFT      D7
#define PIN_CS_SD       D4

#define PORTRAIT        0
#define LANDSCAPE       1

#define PIN_SCL_FT6206  D15
#define PIN_SDA_FT6206  D14
#define PIN_INT_FT6206  D7

#define ILI9341_TFTWIDTH  320
#define ILI9341_TFTHEIGHT 240

#define EXTERNAL_I2C  0x49<<1
#define INTERNAL_I2C  0x48<<1

#define I2C_SCL     D15
#define I2C_SDA     D14
    
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

//SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p9, p10,"TFT"); // mosi, miso, sclk, cs, reset, dc
SPI_TFT_ILI9341 TFT(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TFT, PIN_RESET_TFT, PIN_DC_TFT, "TFT"); // mosi, miso, sclk, cs, reset, dc 
FT6206 FT6206(PIN_SDA_FT6206, PIN_SCL_FT6206, PIN_INT_FT6206); // sda, scl, int
 
//Configure and instantiate the UART - PB10/11
DigitalIn adxl_int(SDP_GPIO_1);
I2C i2c(I2C_SDA,I2C_SCL);
Serial pc(USBTX, USBRX, 115200); 
 
uint8_t ui8s[22];
uint8_t ui8xu;
uint8_t ui8xd;
uint8_t ui8yu;
uint8_t ui8yd;
uint8_t ui8all;
uint8_t ui8awake;

void initTFT(void)
{
    //Configure the display driver
    TFT.background(Black);
    TFT.foreground(White);
    wait(0.01) ;
    TFT.cls();
}
    

int main()
{
       /* Initialize accelerometer */
   Sensor_Init();

   /* Start accelerometer measurement mode */
   Sensor_Start();
   //connected = adt7420_init(&device, init_params);
   
    //Configure the display driver
    TFT.claim(stdout);
    TFT.background(Black);
    TFT.foreground(White);
    TFT.set_orientation(LANDSCAPE);
    TFT.cls();

    //Print a welcome message
    TFT.set_font((unsigned char*) Arial24x23);
    TFT.locate(0,0);
    TFT.printf("\n  Ready\n");
    wait(0.5);
    TFT.cls();
    TFT.locate(0,0);
    TFT.printf("\n  Go");
    wait(0.5);
    TFT.cls();
  //  FT6206.begin();
    int X1, Y1, X2, Y2;
    X2 = -100;
    int i = 0;
    int awake=0;
    int register_value =0;
    char cmd[2];
    char cmd2[2];
    char cmd3[2];
    while(1) 
    {
        if(adxl_int)
        {   cmd[0]= 0x0B;
            cmd2[0]= 0x00;
            cmd3[0]= 0x01;
            ui8awake =1;
            TFT.cls();
            TFT.locate(0,0);
            awake++;
            
            // Debug for temp sense and Accelermeter
            /*Sensor_Scan();    
            TFT.printf("\n\nx = %5d", i16SensorX);
            TFT.printf("\ny = %5d", i16SensorY);
            TFT.printf("\nz = %5d", i16SensorZ);    
            TFT.printf("\nawake %5d", awake);
            i2c.write(INTERNAL_I2C,cmd,1,1);
            i2c.read(INTERNAL_I2C,cmd,1,0);
            int tmp = (float((cmd[0]<<8)|cmd[1])/256);
            TFT.printf("\nID %5d",tmp);*/
            
            // MSB temp reg
            i2c.write(INTERNAL_I2C,cmd2,1,1);
            i2c.read(INTERNAL_I2C,cmd2,1,0);
            int tmp2 = (float((cmd2[0]<<8)|cmd2[1])/256);
           // TFT.printf("\ntmp MSB %5d",tmp2);
            // MSB temp reg
            i2c.write(INTERNAL_I2C,cmd3,1,1);
            i2c.read(INTERNAL_I2C,cmd3,1,0);
            int tmp3 = (float((cmd3[0]<<8)|cmd3[1])/256);
           // TFT.printf("\ntmp LSB %5d",tmp3);
            
            if((tmp2&0x8000)== 0)
            {
                uint16_t scale= (tmp2<<8) + tmp3;
                scale = scale & 0x7F78;
                scale = scale>>3;
                float TempC = (float(scale*0.0625));
                TFT.printf("\n+ %4f",TempC);   
            }
            else
            {
                uint16_t scale= (tmp2<<8) + tmp3;
                scale = scale & 0x7F78;
                scale = scale>>3;
                float TempC = scale*0.0625;
                TFT.printf("\n- %4f",TempC);
            }
            wait(10);  
        }
        else
        {
            if(ui8awake ==1)
            {
                TFT.cls();
             //   TFT.locate(0,0);
             //   TFT.printf("\nasleep :O");
                ui8awake = 0;
            }
        }
       // float temp = adt7420_get_temperature(device);
    }
}