Rev 1.6 - Sample Period Work in progress

Dependencies:   mbed Bitmap N5110 TMP102 Joystick

main.cpp

Committer:
louismarr
Date:
2021-12-16
Revision:
6:117edd5dc0a0
Parent:
5:138a91e25e1c
Child:
7:ef1dab708752

File content as of revision 6:117edd5dc0a0:

/* 

2645_I2C_TMP102_Library

Sample code from ELEC2645 Week 17 Lab

Demonstrates how to re-factor the TMP102 code into a library

(c) Craig A. Evans, University of Leeds, Feb 2016

*/ 

#include "mbed.h"
// include the library header, ensure the library has been imported into the project
#include "TMP102.h"
#include "N5110.h"
#include "Bitmap.h"

// Create TMP102 object
TMP102 tmp102(I2C_SDA,I2C_SCL);  
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
// UART connection for PC
Serial serial(USBTX,USBRX);
AnalogIn SP(PTB2);

// K64F on-board LEDs 
DigitalOut r_led(LED_RED);
DigitalOut g_led(LED_GREEN);
DigitalOut b_led(LED_BLUE);
// K64F on-board switches
InterruptIn sw2(SW2);
InterruptIn sw3(SW3);

// error function hangs flashing an LED
void error();
// setup serial port
void init_serial();
// set-up the on-board LEDs and switches
void init_K64F();


int main()
{
    // initialise the board and serial port
    init_K64F();
    init_serial(); 
    // call the sensor init method using dot syntax
    tmp102.init();
    lcd.init();
    
    
    
    lcd.setContrast(0.4);
    
    while (1) {
        
        // read temperature and print over serial port
        float T = tmp102.get_temperature();
        serial.printf("T = %f C\n",T);
        
        // small delay - 1s to match the update rate of the sensor (1 Hz)
         lcd.clear(); // clear buffer at start of every loop
        // can directly print strings at specified co-ordinates (must be less than 84 pixels to fit on display)
        lcd.printString("Lets Gan!",0,0);

        char buffer[14];  // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
        // so can display a string of a maximum 14 characters in length
        // or create formatted strings - ensure they aren't more than 14 characters long
        // int temperature = 27;
        
        int length = sprintf(buffer,"T=%.2F 'C",T); // print formatted data to buffer
        // it is important the format specifier ensures the length will fit in the buffer
        if (length <= 14)  // if string will fit on display (assuming printing at x=0)
            lcd.printString(buffer,0,2);           // display on screen
        
        float Set = 33 * SP; 
        length = sprintf(buffer,"SP=%.2F 'C",Set);
        if (length <= 14)  // if string will fit on display (assuming printing at x=0)
          lcd.printString(buffer,0,4);           // display on screen
        serial.printf("   SP = %f",  Set);   
        /*
        float pressure = 1012.3;  // same idea with floats
        length = sprintf(buffer,"P = %.2f mb",pressure);
        if (length <= 14)
            lcd.printString(buffer,0,3);
        */
        
        lcd.refresh();

        wait(1.0);
        
    }

}

void init_serial() {
    // set to highest baud - ensure terminal software matches
    serial.baud(9600); 
}

void init_K64F() 
{
    // on-board LEDs are active-low, so set pin high to turn them off.
    r_led = 1;
    g_led = 1;
    b_led = 1;   
    
    // since the on-board switches have external pull-ups, we should disable the internal pull-down
    // resistors that are enabled by default using InterruptIn
    sw2.mode(PullNone);
    sw3.mode(PullNone);

}